From 40616a17eab9daea73e17485a8ec3ae5755424eb Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Thu, 2 Apr 2015 18:47:50 +0300 Subject: [PATCH 1/6] Attach database with parameters for SQLite --- CHANGELOG.md | 3 +++ alasql.js | 26 +++++++++++++++++--------- alasql.js.map | 2 +- alasql.min.js | 4 ++-- console/alasql.min.js | 4 ++-- dist/alasql.js | 26 +++++++++++++++++--------- dist/alasql.js.map | 2 +- dist/alasql.min.js | 4 ++-- src/76usedatabase.js | 4 ++-- src/90websql.js | 2 +- src/91indexeddb.js | 2 +- src/92localstorage.js | 2 +- src/93sqlite.js | 14 +++++++++++--- src/94filestorage.js | 2 +- 14 files changed, 62 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fee3e0be1..39edc6d08d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +### 0.0.44 "Roma" (02.04.2015 - ...04.2015) +* Added params to SQLite attached database: alasql('ATTACH SQLITE DATABASE a(?)',[event],cb); + ### 0.0.43 "The Wall" (25.03.2015 - 01.04.2015) * Created "develop" branch for git-flow * Fixed GREATEST and LEAST() bugs diff --git a/alasql.js b/alasql.js index c0929abecb..28f0075073 100755 --- a/alasql.js +++ b/alasql.js @@ -9552,7 +9552,7 @@ yy.AttachDatabase.prototype.toString = function() { if(args) { s += '('; if(args.length>0) { - s += args.map(function(arg){ return arg.toJavaScript(); }).join(', '); + s += args.map(function(arg){ return arg.toString(); }).join(', '); } s += ')'; } @@ -9566,7 +9566,7 @@ yy.AttachDatabase.prototype.execute = function (databaseid, params, cb) { if(!alasql.engines[this.engineid]) { throw new Error('Engine "'+this.engineid+'" is not defined.'); }; - var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, cb); + var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, params, cb); return res; }; @@ -11253,7 +11253,7 @@ WEBSQL.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop WebSQL database.'); }; -WEBSQL.attachDatabase = function(databaseid, dbid, cb){ +WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); @@ -11333,7 +11333,7 @@ IDB.dropDatabase = function(ixdbid, ifexists, cb){ }; }; -IDB.attachDatabase = function(ixdbid, dbid, args, cb) { +IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) { var request1 = indexedDB.webkitGetDatabaseNames(); request1.onsuccess = function(event) { var dblist = event.target.result; @@ -11723,7 +11723,7 @@ LS.dropDatabase = function(lsdbid, ifexists, cb){ }; -LS.attachDatabase = function(lsdbid, dbid, args, cb){ +LS.attachDatabase = function(lsdbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); @@ -11902,14 +11902,22 @@ SQLITE.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop SQLite database. Detach it.'); }; -SQLITE.attachDatabase = function(sqldbid, dbid, args, cb){ +SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); }; - if(args[0] && args[0] instanceof yy.StringValue) { - alasql.utils.loadBinaryFile(args[0].value,true,function(data){ + + if(args[0] && (args[0] instanceof yy.StringValue) + || (args[0] instanceof yy.ParamValue)) { + + if(args[0] instanceof yy.StringValue) { + var value = args[0].value; + } else if(args[0] instanceof yy.ParamValue) { + var value = params[args[0].param]; + } + alasql.utils.loadBinaryFile(value,true,function(data){ var db = new alasql.Database(dbid || sqldbid); db.engineid = "SQLITE"; db.sqldbid = sqldbid; @@ -12067,7 +12075,7 @@ FS.dropDatabase = function(fsdbid, ifexists, cb){ }; -FS.attachDatabase = function(fsdbid, dbid, args, cb){ +FS.attachDatabase = function(fsdbid, dbid, args, params, cb){ // console.log(arguments); var res = 1; if(alasql.databases[dbid]) { diff --git a/alasql.js.map b/alasql.js.map index c656032ccc..9a432b2ecf 100755 --- a/alasql.js.map +++ b/alasql.js.map @@ -75,5 +75,5 @@ "src/99worker.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/alasql.min.js b/alasql.min.js index e7f03d56e9..69de515ef3 100644 --- a/alasql.min.js +++ b/alasql.min.js @@ -4,5 +4,5 @@ break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case }};var Database=alasql.Database=function(databaseid){var self=this;if(self===alasql){if(databaseid){self=alasql.databases[databaseid];if(!self){throw new Error('Database "'+databaseid+'" not found')}}else{self=alasql.databases.alasql}}if(!databaseid){databaseid="db"+alasql.databasenum++}self.databaseid=databaseid;alasql.databases[databaseid]=self;self.tables={};self.views={};self.indices={};self.resetSqlCache();self.dbversion=0;return self};Database.prototype.resetSqlCache=function(){this.sqlCache={};this.sqlCacheSize=0};Database.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Database.prototype.transaction=function(cb){var tx=new alasql.Transaction(this.databaseid);var res=cb(tx);return res};var Transaction=alasql.Transaction=function(databaseid){this.transactionid=Date.now();this.databaseid=databaseid;this.commited=false;this.dbversion=alasql.databases[databaseid].dbversion;this.bank=JSON.stringify(alasql.databases[databaseid]);return this};Transaction.prototype.commit=function(){this.commited=true;alasql.databases[this.databaseid].dbversion=Date.now();delete this.bank};Transaction.prototype.rollback=function(){if(!this.commited){alasql.databases[this.databaseid]=JSON.parse(this.bank);delete this.bank}else{throw new Error("Transaction already commited")}};Transaction.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Transaction.prototype.executeSQL=Transaction.prototype.exec;var Table=alasql.Table=function(params){this.columns=[];this.xcolumns={};this.data=[];this.inddefs={};this.indices={};this.uniqs={};this.uniqdefs={};extend(this,params)};Table.prototype.indexColumns=function(){var self=this;self.xcolumns={};self.columns.forEach(function(col){self.xcolumns[col.columnid]=col})};var View=alasql.View=function(params){this.columns=[];this.xcolumns={};this.query=[];extend(this,params)};var Query=alasql.Query=function(params){this.alasql=alasql;this.columns=[];this.xcolumns={};this.selectGroup=[];this.groupColumns={};extend(this,params)};var Recordset=alasql.Recordset=function(params){extend(this,params)};var yy=parser.yy={};yy.extend=extend;yy.casesensitive=alasql.options.casesensitive;var Base=yy.Base=function(params){return yy.extend(this,params)};Base.prototype.toString=function(){};Base.prototype.toType=function(){};Base.prototype.toJavaScript=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};yy.Statements=function(params){return yy.extend(this,params)};yy.Statements.prototype.toString=function(){return this.statements.map(function(st){return st.toString()}).join(";"+NL())};yy.Statements.prototype.compile=function(db){var statements=this.statements.map(function(st){return st.compile(db)});if(statements.length==1){return statements[0]}else{return function(params,cb){var res=statements.map(function(st){return st(params)});if(cb)cb(res);return res}}};function queryfn(query,oldscope,cb,A,B){var ms;query.sourceslen=query.sources.length;var slen=query.sourceslen;query.query=query;query.A=A;query.B=B;query.cb=cb;query.oldscope=oldscope;if(query.queriesfn){query.sourceslen+=query.queriesfn.length;slen+=query.queriesfn.length;query.queriesdata=[];query.queriesfn.forEach(function(q,idx){q.query.params=query.params;if(false){queryfn(q.query,query.oldscope,queryfn2,-idx-1,query)}else{queryfn2([],-idx-1,query)}})}var scope;if(!oldscope)scope={};else scope=cloneDeep(oldscope);query.scope=scope;var result;query.sources.forEach(function(source,idx){source.query=query;var rs=source.datafn(query,query.params,queryfn2,idx,alasql);if(typeof rs!=undefined){if((query.intofn||query.intoallfn)&&rs instanceof Array)rs=rs.length;result=rs}source.queriesdata=query.queriesdata});if(slen==0)result=queryfn3(query);return result}function queryfn2(data,idx,query){if(idx>=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) }var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] }else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toJavaScript()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="
"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue){alasql.utils.loadBinaryFile(args[0].value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file +if(db.engineid&&alasql.engines[db.engineid].updateTable){return alasql.engines[db.engineid].updateTable(databaseid,tableid,assignfn,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];if(!table){throw new Error("Table '"+tableid+"' not exists")}var numrows=0;for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/console/alasql.min.js b/console/alasql.min.js index e7f03d56e9..69de515ef3 100644 --- a/console/alasql.min.js +++ b/console/alasql.min.js @@ -4,5 +4,5 @@ break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case }};var Database=alasql.Database=function(databaseid){var self=this;if(self===alasql){if(databaseid){self=alasql.databases[databaseid];if(!self){throw new Error('Database "'+databaseid+'" not found')}}else{self=alasql.databases.alasql}}if(!databaseid){databaseid="db"+alasql.databasenum++}self.databaseid=databaseid;alasql.databases[databaseid]=self;self.tables={};self.views={};self.indices={};self.resetSqlCache();self.dbversion=0;return self};Database.prototype.resetSqlCache=function(){this.sqlCache={};this.sqlCacheSize=0};Database.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Database.prototype.transaction=function(cb){var tx=new alasql.Transaction(this.databaseid);var res=cb(tx);return res};var Transaction=alasql.Transaction=function(databaseid){this.transactionid=Date.now();this.databaseid=databaseid;this.commited=false;this.dbversion=alasql.databases[databaseid].dbversion;this.bank=JSON.stringify(alasql.databases[databaseid]);return this};Transaction.prototype.commit=function(){this.commited=true;alasql.databases[this.databaseid].dbversion=Date.now();delete this.bank};Transaction.prototype.rollback=function(){if(!this.commited){alasql.databases[this.databaseid]=JSON.parse(this.bank);delete this.bank}else{throw new Error("Transaction already commited")}};Transaction.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Transaction.prototype.executeSQL=Transaction.prototype.exec;var Table=alasql.Table=function(params){this.columns=[];this.xcolumns={};this.data=[];this.inddefs={};this.indices={};this.uniqs={};this.uniqdefs={};extend(this,params)};Table.prototype.indexColumns=function(){var self=this;self.xcolumns={};self.columns.forEach(function(col){self.xcolumns[col.columnid]=col})};var View=alasql.View=function(params){this.columns=[];this.xcolumns={};this.query=[];extend(this,params)};var Query=alasql.Query=function(params){this.alasql=alasql;this.columns=[];this.xcolumns={};this.selectGroup=[];this.groupColumns={};extend(this,params)};var Recordset=alasql.Recordset=function(params){extend(this,params)};var yy=parser.yy={};yy.extend=extend;yy.casesensitive=alasql.options.casesensitive;var Base=yy.Base=function(params){return yy.extend(this,params)};Base.prototype.toString=function(){};Base.prototype.toType=function(){};Base.prototype.toJavaScript=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};yy.Statements=function(params){return yy.extend(this,params)};yy.Statements.prototype.toString=function(){return this.statements.map(function(st){return st.toString()}).join(";"+NL())};yy.Statements.prototype.compile=function(db){var statements=this.statements.map(function(st){return st.compile(db)});if(statements.length==1){return statements[0]}else{return function(params,cb){var res=statements.map(function(st){return st(params)});if(cb)cb(res);return res}}};function queryfn(query,oldscope,cb,A,B){var ms;query.sourceslen=query.sources.length;var slen=query.sourceslen;query.query=query;query.A=A;query.B=B;query.cb=cb;query.oldscope=oldscope;if(query.queriesfn){query.sourceslen+=query.queriesfn.length;slen+=query.queriesfn.length;query.queriesdata=[];query.queriesfn.forEach(function(q,idx){q.query.params=query.params;if(false){queryfn(q.query,query.oldscope,queryfn2,-idx-1,query)}else{queryfn2([],-idx-1,query)}})}var scope;if(!oldscope)scope={};else scope=cloneDeep(oldscope);query.scope=scope;var result;query.sources.forEach(function(source,idx){source.query=query;var rs=source.datafn(query,query.params,queryfn2,idx,alasql);if(typeof rs!=undefined){if((query.intofn||query.intoallfn)&&rs instanceof Array)rs=rs.length;result=rs}source.queriesdata=query.queriesdata});if(slen==0)result=queryfn3(query);return result}function queryfn2(data,idx,query){if(idx>=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) }var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] }else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toJavaScript()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue){alasql.utils.loadBinaryFile(args[0].value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file +if(db.engineid&&alasql.engines[db.engineid].updateTable){return alasql.engines[db.engineid].updateTable(databaseid,tableid,assignfn,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];if(!table){throw new Error("Table '"+tableid+"' not exists")}var numrows=0;for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/dist/alasql.js b/dist/alasql.js index c0929abecb..28f0075073 100755 --- a/dist/alasql.js +++ b/dist/alasql.js @@ -9552,7 +9552,7 @@ yy.AttachDatabase.prototype.toString = function() { if(args) { s += '('; if(args.length>0) { - s += args.map(function(arg){ return arg.toJavaScript(); }).join(', '); + s += args.map(function(arg){ return arg.toString(); }).join(', '); } s += ')'; } @@ -9566,7 +9566,7 @@ yy.AttachDatabase.prototype.execute = function (databaseid, params, cb) { if(!alasql.engines[this.engineid]) { throw new Error('Engine "'+this.engineid+'" is not defined.'); }; - var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, cb); + var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, params, cb); return res; }; @@ -11253,7 +11253,7 @@ WEBSQL.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop WebSQL database.'); }; -WEBSQL.attachDatabase = function(databaseid, dbid, cb){ +WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); @@ -11333,7 +11333,7 @@ IDB.dropDatabase = function(ixdbid, ifexists, cb){ }; }; -IDB.attachDatabase = function(ixdbid, dbid, args, cb) { +IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) { var request1 = indexedDB.webkitGetDatabaseNames(); request1.onsuccess = function(event) { var dblist = event.target.result; @@ -11723,7 +11723,7 @@ LS.dropDatabase = function(lsdbid, ifexists, cb){ }; -LS.attachDatabase = function(lsdbid, dbid, args, cb){ +LS.attachDatabase = function(lsdbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); @@ -11902,14 +11902,22 @@ SQLITE.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop SQLite database. Detach it.'); }; -SQLITE.attachDatabase = function(sqldbid, dbid, args, cb){ +SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); }; - if(args[0] && args[0] instanceof yy.StringValue) { - alasql.utils.loadBinaryFile(args[0].value,true,function(data){ + + if(args[0] && (args[0] instanceof yy.StringValue) + || (args[0] instanceof yy.ParamValue)) { + + if(args[0] instanceof yy.StringValue) { + var value = args[0].value; + } else if(args[0] instanceof yy.ParamValue) { + var value = params[args[0].param]; + } + alasql.utils.loadBinaryFile(value,true,function(data){ var db = new alasql.Database(dbid || sqldbid); db.engineid = "SQLITE"; db.sqldbid = sqldbid; @@ -12067,7 +12075,7 @@ FS.dropDatabase = function(fsdbid, ifexists, cb){ }; -FS.attachDatabase = function(fsdbid, dbid, args, cb){ +FS.attachDatabase = function(fsdbid, dbid, args, params, cb){ // console.log(arguments); var res = 1; if(alasql.databases[dbid]) { diff --git a/dist/alasql.js.map b/dist/alasql.js.map index c656032ccc..9a432b2ecf 100755 --- a/dist/alasql.js.map +++ b/dist/alasql.js.map @@ -75,5 +75,5 @@ "src/99worker.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/dist/alasql.min.js b/dist/alasql.min.js index e7f03d56e9..69de515ef3 100644 --- a/dist/alasql.min.js +++ b/dist/alasql.min.js @@ -4,5 +4,5 @@ break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case }};var Database=alasql.Database=function(databaseid){var self=this;if(self===alasql){if(databaseid){self=alasql.databases[databaseid];if(!self){throw new Error('Database "'+databaseid+'" not found')}}else{self=alasql.databases.alasql}}if(!databaseid){databaseid="db"+alasql.databasenum++}self.databaseid=databaseid;alasql.databases[databaseid]=self;self.tables={};self.views={};self.indices={};self.resetSqlCache();self.dbversion=0;return self};Database.prototype.resetSqlCache=function(){this.sqlCache={};this.sqlCacheSize=0};Database.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Database.prototype.transaction=function(cb){var tx=new alasql.Transaction(this.databaseid);var res=cb(tx);return res};var Transaction=alasql.Transaction=function(databaseid){this.transactionid=Date.now();this.databaseid=databaseid;this.commited=false;this.dbversion=alasql.databases[databaseid].dbversion;this.bank=JSON.stringify(alasql.databases[databaseid]);return this};Transaction.prototype.commit=function(){this.commited=true;alasql.databases[this.databaseid].dbversion=Date.now();delete this.bank};Transaction.prototype.rollback=function(){if(!this.commited){alasql.databases[this.databaseid]=JSON.parse(this.bank);delete this.bank}else{throw new Error("Transaction already commited")}};Transaction.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Transaction.prototype.executeSQL=Transaction.prototype.exec;var Table=alasql.Table=function(params){this.columns=[];this.xcolumns={};this.data=[];this.inddefs={};this.indices={};this.uniqs={};this.uniqdefs={};extend(this,params)};Table.prototype.indexColumns=function(){var self=this;self.xcolumns={};self.columns.forEach(function(col){self.xcolumns[col.columnid]=col})};var View=alasql.View=function(params){this.columns=[];this.xcolumns={};this.query=[];extend(this,params)};var Query=alasql.Query=function(params){this.alasql=alasql;this.columns=[];this.xcolumns={};this.selectGroup=[];this.groupColumns={};extend(this,params)};var Recordset=alasql.Recordset=function(params){extend(this,params)};var yy=parser.yy={};yy.extend=extend;yy.casesensitive=alasql.options.casesensitive;var Base=yy.Base=function(params){return yy.extend(this,params)};Base.prototype.toString=function(){};Base.prototype.toType=function(){};Base.prototype.toJavaScript=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};yy.Statements=function(params){return yy.extend(this,params)};yy.Statements.prototype.toString=function(){return this.statements.map(function(st){return st.toString()}).join(";"+NL())};yy.Statements.prototype.compile=function(db){var statements=this.statements.map(function(st){return st.compile(db)});if(statements.length==1){return statements[0]}else{return function(params,cb){var res=statements.map(function(st){return st(params)});if(cb)cb(res);return res}}};function queryfn(query,oldscope,cb,A,B){var ms;query.sourceslen=query.sources.length;var slen=query.sourceslen;query.query=query;query.A=A;query.B=B;query.cb=cb;query.oldscope=oldscope;if(query.queriesfn){query.sourceslen+=query.queriesfn.length;slen+=query.queriesfn.length;query.queriesdata=[];query.queriesfn.forEach(function(q,idx){q.query.params=query.params;if(false){queryfn(q.query,query.oldscope,queryfn2,-idx-1,query)}else{queryfn2([],-idx-1,query)}})}var scope;if(!oldscope)scope={};else scope=cloneDeep(oldscope);query.scope=scope;var result;query.sources.forEach(function(source,idx){source.query=query;var rs=source.datafn(query,query.params,queryfn2,idx,alasql);if(typeof rs!=undefined){if((query.intofn||query.intoallfn)&&rs instanceof Array)rs=rs.length;result=rs}source.queriesdata=query.queriesdata});if(slen==0)result=queryfn3(query);return result}function queryfn2(data,idx,query){if(idx>=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) }var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] }else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toJavaScript()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue){alasql.utils.loadBinaryFile(args[0].value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file +if(db.engineid&&alasql.engines[db.engineid].updateTable){return alasql.engines[db.engineid].updateTable(databaseid,tableid,assignfn,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];if(!table){throw new Error("Table '"+tableid+"' not exists")}var numrows=0;for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/src/76usedatabase.js b/src/76usedatabase.js index cc991180b6..6c1681a21e 100644 --- a/src/76usedatabase.js +++ b/src/76usedatabase.js @@ -56,7 +56,7 @@ yy.AttachDatabase.prototype.toString = function() { if(args) { s += '('; if(args.length>0) { - s += args.map(function(arg){ return arg.toJavaScript(); }).join(', '); + s += args.map(function(arg){ return arg.toString(); }).join(', '); } s += ')'; } @@ -70,7 +70,7 @@ yy.AttachDatabase.prototype.execute = function (databaseid, params, cb) { if(!alasql.engines[this.engineid]) { throw new Error('Engine "'+this.engineid+'" is not defined.'); }; - var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, cb); + var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, this.args, params, cb); return res; }; diff --git a/src/90websql.js b/src/90websql.js index 6f5b1a75f7..d092db2fdc 100644 --- a/src/90websql.js +++ b/src/90websql.js @@ -26,7 +26,7 @@ WEBSQL.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop WebSQL database.'); }; -WEBSQL.attachDatabase = function(databaseid, dbid, cb){ +WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); diff --git a/src/91indexeddb.js b/src/91indexeddb.js index e81b4b51b2..6a1bcc7ff1 100644 --- a/src/91indexeddb.js +++ b/src/91indexeddb.js @@ -66,7 +66,7 @@ IDB.dropDatabase = function(ixdbid, ifexists, cb){ }; }; -IDB.attachDatabase = function(ixdbid, dbid, args, cb) { +IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) { var request1 = indexedDB.webkitGetDatabaseNames(); request1.onsuccess = function(event) { var dblist = event.target.result; diff --git a/src/92localstorage.js b/src/92localstorage.js index 7ec455a99b..e95525fc6f 100644 --- a/src/92localstorage.js +++ b/src/92localstorage.js @@ -75,7 +75,7 @@ LS.dropDatabase = function(lsdbid, ifexists, cb){ }; -LS.attachDatabase = function(lsdbid, dbid, args, cb){ +LS.attachDatabase = function(lsdbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); diff --git a/src/93sqlite.js b/src/93sqlite.js index 8fc6d82ff2..399ebe9521 100644 --- a/src/93sqlite.js +++ b/src/93sqlite.js @@ -14,14 +14,22 @@ SQLITE.dropDatabase = function(databaseid){ throw new Error('This is impossible to drop SQLite database. Detach it.'); }; -SQLITE.attachDatabase = function(sqldbid, dbid, args, cb){ +SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb){ var res = 1; if(alasql.databases[dbid]) { throw new Error('Unable to attach database as "'+dbid+'" because it already exists'); }; - if(args[0] && args[0] instanceof yy.StringValue) { - alasql.utils.loadBinaryFile(args[0].value,true,function(data){ + + if(args[0] && (args[0] instanceof yy.StringValue) + || (args[0] instanceof yy.ParamValue)) { + + if(args[0] instanceof yy.StringValue) { + var value = args[0].value; + } else if(args[0] instanceof yy.ParamValue) { + var value = params[args[0].param]; + } + alasql.utils.loadBinaryFile(value,true,function(data){ var db = new alasql.Database(dbid || sqldbid); db.engineid = "SQLITE"; db.sqldbid = sqldbid; diff --git a/src/94filestorage.js b/src/94filestorage.js index ff99f3ba70..a91fc18374 100644 --- a/src/94filestorage.js +++ b/src/94filestorage.js @@ -75,7 +75,7 @@ FS.dropDatabase = function(fsdbid, ifexists, cb){ }; -FS.attachDatabase = function(fsdbid, dbid, args, cb){ +FS.attachDatabase = function(fsdbid, dbid, args, params, cb){ // console.log(arguments); var res = 1; if(alasql.databases[dbid]) { From a5e80ad6b72d3e09e306702e6db493398cdc117d Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Sun, 5 Apr 2015 19:52:01 +0300 Subject: [PATCH 2/6] Clean directory --- .gitignore | 7 - CHANGELOG.md | 1 + README.md | 2 +- RELEASES.md | 78 +- TODO.md | 86 +- alasql-worker.js | 101 - alasql-worker.js.map | 11 - alasql-worker.min.js | 1 - alasql.min.js | 8 - gulpfile.js | 22 +- index.js | 8 - medals.csv | 1873 --- medals.xlsx | Bin 547298 -> 0 bytes node_modules/gulp/CHANGELOG.md | 184 + node_modules/gulp/LICENSE | 22 + node_modules/gulp/README.md | 205 +- node_modules/gulp/bin/gulp.js | 424 +- node_modules/gulp/completion/README.md | 40 +- node_modules/gulp/completion/bash | 54 +- node_modules/gulp/completion/fish | 20 +- node_modules/gulp/completion/powershell | 122 +- node_modules/gulp/completion/zsh | 50 +- node_modules/gulp/index.js | 126 +- node_modules/gulp/lib/completion.js | 44 +- node_modules/gulp/lib/taskTree.js | 28 +- node_modules/gulp/node_modules/.bin/semver | 0 .../gulp/node_modules/archy/.travis.yml | 8 +- node_modules/gulp/node_modules/archy/LICENSE | 18 + .../gulp/node_modules/archy/README.markdown | 180 +- .../gulp/node_modules/archy/examples/beep.js | 48 +- .../node_modules/archy/examples/multi_line.js | 50 +- node_modules/gulp/node_modules/archy/index.js | 70 +- .../gulp/node_modules/archy/package.json | 148 +- .../gulp/node_modules/archy/test/beep.js | 80 +- .../node_modules/archy/test/multi_line.js | 90 +- .../node_modules/archy/test/non_unicode.js | 80 +- node_modules/gulp/node_modules/chalk/index.js | 190 +- .../chalk/node_modules/.bin/has-ansi | 0 .../chalk/node_modules/.bin/strip-ansi | 0 .../chalk/node_modules/.bin/supports-color | 0 .../chalk/node_modules/ansi-styles/index.js | 80 +- .../node_modules/ansi-styles/package.json | 148 +- .../chalk/node_modules/ansi-styles/readme.md | 140 +- .../escape-string-regexp/index.js | 22 +- .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 139 +- .../escape-string-regexp/readme.md | 54 +- .../chalk/node_modules/has-ansi/cli.js | 106 +- .../chalk/node_modules/has-ansi/index.js | 8 +- .../has-ansi/node_modules/ansi-regex/index.js | 8 +- .../node_modules/ansi-regex/package.json | 158 +- .../node_modules/ansi-regex/readme.md | 66 +- .../chalk/node_modules/has-ansi/package.json | 170 +- .../chalk/node_modules/has-ansi/readme.md | 90 +- .../chalk/node_modules/strip-ansi/cli.js | 78 +- .../chalk/node_modules/strip-ansi/index.js | 12 +- .../node_modules/ansi-regex/index.js | 8 +- .../node_modules/ansi-regex/package.json | 158 +- .../node_modules/ansi-regex/readme.md | 66 +- .../node_modules/strip-ansi/package.json | 168 +- .../chalk/node_modules/strip-ansi/readme.md | 86 +- .../chalk/node_modules/supports-color/cli.js | 56 +- .../node_modules/supports-color/index.js | 64 +- .../node_modules/supports-color/package.json | 156 +- .../node_modules/supports-color/readme.md | 88 +- .../gulp/node_modules/chalk/package.json | 164 +- .../gulp/node_modules/chalk/readme.md | 350 +- .../gulp/node_modules/deprecated/.npmignore | 10 +- .../gulp/node_modules/deprecated/.travis.yml | 10 +- .../gulp/node_modules/deprecated/LICENSE | 40 +- .../gulp/node_modules/deprecated/README.md | 100 +- .../gulp/node_modules/deprecated/index.js | 76 +- .../gulp/node_modules/deprecated/package.json | 126 +- .../node_modules/deprecated/test/field.js | 86 +- .../node_modules/deprecated/test/method.js | 62 +- .../gulp/node_modules/gulp-util/.npmignore | 7 - .../gulp/node_modules/gulp-util/LICENSE | 40 +- .../gulp/node_modules/gulp-util/README.md | 287 +- .../gulp/node_modules/gulp-util/index.js | 36 +- .../gulp/node_modules/gulp-util/lib/File.js | 1 - .../node_modules/gulp-util/lib/PluginError.js | 250 +- .../gulp/node_modules/gulp-util/lib/beep.js | 3 - .../gulp/node_modules/gulp-util/lib/buffer.js | 30 +- .../gulp/node_modules/gulp-util/lib/colors.js | 1 - .../node_modules/gulp-util/lib/combine.js | 22 +- .../gulp/node_modules/gulp-util/lib/date.js | 1 - .../gulp/node_modules/gulp-util/lib/env.js | 8 +- .../node_modules/gulp-util/lib/isBuffer.js | 14 +- .../gulp/node_modules/gulp-util/lib/isNull.js | 6 +- .../node_modules/gulp-util/lib/isStream.js | 10 +- .../node_modules/gulp-util/lib/linefeed.js | 1 - .../gulp/node_modules/gulp-util/lib/log.js | 20 +- .../gulp/node_modules/gulp-util/lib/noop.js | 10 +- .../node_modules/gulp-util/lib/template.js | 40 +- .../gulp-util/node_modules/.bin/dateformat | 1 + .../node_modules/array-differ/index.js | 7 + .../node_modules/array-differ/package.json | 61 + .../node_modules/array-differ/readme.md | 41 + .../node_modules/array-uniq/index.js | 60 + .../node_modules/array-uniq/package.json | 66 + .../node_modules/array-uniq/readme.md | 30 + .../gulp-util/node_modules/beeper/index.js | 45 + .../node_modules/beeper/package.json | 67 + .../gulp-util/node_modules/beeper/readme.md | 53 + .../gulp-util/node_modules/chalk/index.js | 100 + .../gulp-util/node_modules/chalk/license | 21 + .../chalk/node_modules/.bin/has-ansi | 1 + .../chalk/node_modules/.bin/strip-ansi | 1 + .../chalk/node_modules/.bin/supports-color | 1 + .../chalk/node_modules/ansi-styles/index.js | 56 + .../chalk/node_modules/ansi-styles/license | 21 + .../node_modules/ansi-styles/package.json | 80 + .../chalk/node_modules/ansi-styles/readme.md | 86 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 70 + .../escape-string-regexp/readme.md | 27 + .../chalk/node_modules/has-ansi/cli.js | 45 + .../chalk/node_modules/has-ansi/index.js | 4 + .../chalk/node_modules/has-ansi/license | 21 + .../has-ansi/node_modules/ansi-regex/index.js | 4 + .../has-ansi/node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 86 + .../node_modules/ansi-regex/readme.md | 33 + .../has-ansi/node_modules/get-stdin/index.js | 49 + .../node_modules/get-stdin/package.json | 64 + .../has-ansi/node_modules/get-stdin/readme.md | 44 + .../chalk/node_modules/has-ansi/package.json | 92 + .../chalk/node_modules/has-ansi/readme.md | 45 + .../chalk/node_modules/strip-ansi/cli.js | 47 + .../chalk/node_modules/strip-ansi/index.js | 6 + .../node_modules/ansi-regex/index.js | 4 + .../node_modules/ansi-regex/license | 21 + .../node_modules/ansi-regex/package.json | 86 + .../node_modules/ansi-regex/readme.md | 33 + .../node_modules/strip-ansi/package.json | 89 + .../chalk/node_modules/strip-ansi/readme.md | 43 + .../chalk/node_modules/supports-color/cli.js | 29 + .../node_modules/supports-color/index.js | 43 + .../chalk/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 85 + .../node_modules/supports-color/readme.md | 46 + .../gulp-util/node_modules/chalk/package.json | 83 + .../gulp-util/node_modules/chalk/readme.md | 197 + .../node_modules/dateformat/.npmignore | 57 + .../node_modules/dateformat}/.travis.yml | 10 +- .../gulp-util/node_modules/dateformat/LICENSE | 40 +- .../node_modules/dateformat/Readme.md | 161 +- .../node_modules/dateformat/bin/cli.js | 75 + .../node_modules/dateformat/lib/dateformat.js | 407 +- .../node_modules/get-stdin/index.js | 49 + .../node_modules/get-stdin/package.json | 64 + .../node_modules/get-stdin/readme.md | 44 + .../dateformat/node_modules/meow/index.js | 45 + .../dateformat/node_modules/meow/license | 21 + .../meow/node_modules/.bin/indent-string | 1 + .../meow/node_modules/camelcase-keys/index.js | 9 + .../node_modules/camelcase/index.js | 15 + .../node_modules/camelcase/package.json | 68 + .../node_modules/camelcase/readme.md | 45 + .../node_modules/map-obj/index.js | 15 + .../node_modules/map-obj/package.json | 65 + .../node_modules/map-obj/readme.md | 29 + .../node_modules/camelcase-keys/package.json | 81 + .../node_modules/camelcase-keys/readme.md | 32 + .../meow/node_modules/indent-string/cli.js | 48 + .../meow/node_modules/indent-string/index.js | 16 + .../meow/node_modules/indent-string/license | 21 + .../indent-string/node_modules/.bin/repeating | 1 + .../node_modules/repeating/cli.js | 22 + .../node_modules/repeating/index.js | 24 + .../node_modules/repeating/license | 21 + .../repeating/node_modules/is-finite/index.js | 9 + .../node_modules/is-finite/package.json | 66 + .../node_modules/is-finite/readme.md | 30 + .../node_modules/repeating/package.json | 73 + .../node_modules/repeating/readme.md | 40 + .../node_modules/indent-string/package.json | 72 + .../meow/node_modules/indent-string/readme.md | 77 + .../dateformat/node_modules/meow/package.json | 68 + .../dateformat/node_modules/meow/readme.md | 110 + .../node_modules/dateformat/package.json | 135 +- .../dateformat/test/test_dayofweek.js | 25 +- .../dateformat/test/test_formats.js | 76 + .../dateformat/test/test_isoutcdatetime.js | 11 + .../test/{ => weekofyear}/test_weekofyear.js | 8 +- .../test/{ => weekofyear}/test_weekofyear.sh | 54 +- .../LICENSE.txt | 44 +- .../node_modules/lodash._reescape/README.md | 20 + .../node_modules/lodash._reescape/index.js | 13 + .../lodash._reescape/package.json | 72 + .../LICENSE.txt | 44 +- .../node_modules/lodash._reevaluate/README.md | 20 + .../node_modules/lodash._reevaluate/index.js | 13 + .../lodash._reevaluate/package.json | 72 + .../lodash._reinterpolate/LICENSE.txt | 44 +- .../lodash._reinterpolate/README.md | 35 +- .../lodash._reinterpolate/index.js | 26 +- .../lodash._reinterpolate/package.json | 159 +- .../node_modules/lodash.template/LICENSE.txt | 44 +- .../node_modules/lodash.template/README.md | 35 +- .../node_modules/lodash.template/index.js | 596 +- .../LICENSE.txt | 44 +- .../node_modules/lodash._basecopy/README.md | 20 + .../node_modules/lodash._basecopy/index.js | 34 + .../lodash._basecopy/package.json | 72 + .../lodash._basetostring/LICENSE.txt | 22 + .../lodash._basetostring/README.md | 20 + .../lodash._basetostring/index.js | 25 + .../lodash._basetostring/package.json | 72 + .../lodash._basevalues/LICENSE.txt | 22 + .../node_modules/lodash._basevalues/README.md | 20 + .../node_modules/lodash._basevalues/index.js | 31 + .../lodash._basevalues/package.json | 72 + .../lodash._escapestringchar/README.md | 15 - .../lodash._escapestringchar/index.js | 33 - .../lodash._escapestringchar/package.json | 75 - .../lodash._isiterateecall/LICENSE.txt | 22 + .../lodash._isiterateecall/README.md | 20 + .../lodash._isiterateecall/index.js | 97 + .../lodash._isiterateecall/package.json | 88 + .../node_modules/lodash.defaults/README.md | 15 - .../node_modules/lodash.defaults/index.js | 54 - .../lodash._objecttypes/README.md | 15 - .../node_modules/lodash._objecttypes/index.js | 20 - .../lodash._objecttypes/package.json | 76 - .../node_modules/lodash.defaults/package.json | 86 - .../node_modules/lodash.escape/LICENSE.txt | 44 +- .../node_modules/lodash.escape/README.md | 35 +- .../node_modules/lodash.escape/index.js | 107 +- .../lodash._escapehtmlchar/README.md | 15 - .../lodash._escapehtmlchar/index.js | 22 - .../lodash._htmlescapes/LICENSE.txt | 22 - .../lodash._htmlescapes/README.md | 15 - .../node_modules/lodash._htmlescapes/index.js | 26 - .../lodash._htmlescapes/package.json | 75 - .../lodash._escapehtmlchar/package.json | 78 - .../lodash._reunescapedhtml/LICENSE.txt | 22 - .../lodash._reunescapedhtml/README.md | 15 - .../lodash._reunescapedhtml/index.js | 15 - .../lodash._htmlescapes/LICENSE.txt | 22 - .../lodash._htmlescapes/README.md | 15 - .../node_modules/lodash._htmlescapes/index.js | 26 - .../lodash._htmlescapes/package.json | 75 - .../lodash._reunescapedhtml/package.json | 79 - .../node_modules/lodash.escape/package.json | 180 +- .../node_modules/lodash.keys/LICENSE.txt | 44 +- .../node_modules/lodash.keys/README.md | 35 +- .../node_modules/lodash.keys/index.js | 269 +- .../node_modules/lodash._isnative/LICENSE.txt | 22 - .../node_modules/lodash._isnative/README.md | 15 - .../node_modules/lodash._isnative/index.js | 34 - .../lodash._isnative/package.json | 64 - .../node_modules/lodash._shimkeys/LICENSE.txt | 22 - .../node_modules/lodash._shimkeys/README.md | 15 - .../node_modules/lodash._shimkeys/index.js | 38 - .../lodash._objecttypes/LICENSE.txt | 22 - .../lodash._objecttypes/README.md | 15 - .../node_modules/lodash._objecttypes/index.js | 20 - .../lodash._objecttypes/package.json | 76 - .../lodash._shimkeys/package.json | 79 - .../lodash.isarguments/LICENSE.txt | 22 + .../node_modules/lodash.isarguments/README.md | 20 + .../node_modules/lodash.isarguments/index.js | 73 + .../lodash.isarguments/package.json | 94 + .../node_modules/lodash.isarray/LICENSE.txt | 22 + .../node_modules/lodash.isarray/README.md | 20 + .../node_modules/lodash.isarray/index.js | 158 + .../node_modules/lodash.isarray/package.json | 94 + .../node_modules/lodash.isnative/LICENSE.txt | 22 + .../node_modules/lodash.isnative/README.md | 20 + .../node_modules/lodash.isnative/index.js | 115 + .../node_modules/lodash.isnative/package.json | 94 + .../node_modules/lodash.isobject/LICENSE.txt | 22 - .../node_modules/lodash.isobject/README.md | 15 - .../node_modules/lodash.isobject/index.js | 39 - .../lodash._objecttypes/LICENSE.txt | 22 - .../lodash._objecttypes/README.md | 15 - .../node_modules/lodash._objecttypes/index.js | 20 - .../lodash._objecttypes/package.json | 76 - .../node_modules/lodash.isobject/package.json | 86 - .../node_modules/lodash.keys/package.json | 187 +- .../node_modules/lodash.restparam/LICENSE.txt | 22 + .../node_modules/lodash.restparam/README.md | 20 + .../node_modules/lodash.restparam/index.js | 67 + .../lodash.restparam/package.json | 78 + .../lodash.templatesettings/LICENSE.txt | 44 +- .../lodash.templatesettings/README.md | 35 +- .../lodash.templatesettings/index.js | 150 +- .../lodash.templatesettings/package.json | 184 +- .../node_modules/lodash.values/LICENSE.txt | 22 - .../node_modules/lodash.values/README.md | 15 - .../node_modules/lodash.values/index.js | 36 - .../node_modules/lodash.values/package.json | 85 - .../node_modules/lodash.template/package.json | 196 +- .../gulp-util/node_modules/lodash/LICENSE.txt | 22 - .../gulp-util/node_modules/lodash/README.md | 163 - .../node_modules/lodash/dist/lodash.compat.js | 7157 ----------- .../lodash/dist/lodash.compat.min.js | 61 - .../node_modules/lodash/dist/lodash.js | 6785 ---------- .../node_modules/lodash/dist/lodash.min.js | 56 - .../lodash/dist/lodash.underscore.js | 4979 -------- .../lodash/dist/lodash.underscore.min.js | 39 - .../gulp-util/node_modules/lodash/lodash.js | 7179 ----------- .../node_modules/lodash/package.json | 132 - .../node_modules/multipipe/.npmignore | 2 +- .../node_modules/multipipe/.travis.yml | 6 +- .../node_modules/multipipe/History.md | 50 +- .../gulp-util/node_modules/multipipe/Makefile | 18 +- .../node_modules/multipipe/Readme.md | 203 +- .../gulp-util/node_modules/multipipe/index.js | 144 +- .../node_modules/duplexer2/.npmignore | 2 +- .../node_modules/duplexer2/.travis.yml | 6 +- .../node_modules/duplexer2/LICENSE.md | 52 +- .../node_modules/duplexer2/README.md | 258 +- .../node_modules/duplexer2/example.js | 98 +- .../multipipe/node_modules/duplexer2/index.js | 124 +- .../node_modules/readable-stream/.npmignore | 8 +- .../node_modules/readable-stream/LICENSE | 36 +- .../node_modules/readable-stream/README.md | 30 +- .../node_modules/readable-stream/duplex.js | 2 +- .../node_modules/readable-stream/float.patch | 1846 +-- .../readable-stream/lib/_stream_duplex.js | 178 +- .../lib/_stream_passthrough.js | 92 +- .../readable-stream/lib/_stream_readable.js | 1902 +-- .../readable-stream/lib/_stream_transform.js | 418 +- .../readable-stream/lib/_stream_writable.js | 954 +- .../node_modules/core-util-is/README.md | 6 +- .../node_modules/core-util-is/float.patch | 1206 +- .../node_modules/core-util-is/lib/util.js | 212 +- .../node_modules/core-util-is/package.json | 108 +- .../node_modules/core-util-is/util.js | 212 +- .../node_modules/inherits/LICENSE | 32 +- .../node_modules/inherits/README.md | 84 +- .../node_modules/inherits/inherits.js | 2 +- .../node_modules/inherits/inherits_browser.js | 46 +- .../node_modules/inherits/package.json | 102 +- .../node_modules/inherits/test.js | 50 +- .../node_modules/isarray/README.md | 108 +- .../node_modules/isarray/build/build.js | 418 +- .../node_modules/isarray/component.json | 38 +- .../node_modules/isarray/index.js | 6 +- .../node_modules/isarray/package.json | 108 +- .../node_modules/string_decoder/.npmignore | 4 +- .../node_modules/string_decoder/LICENSE | 40 +- .../node_modules/string_decoder/README.md | 12 +- .../node_modules/string_decoder/index.js | 442 +- .../node_modules/string_decoder/package.json | 108 +- .../node_modules/readable-stream/package.json | 140 +- .../readable-stream/passthrough.js | 2 +- .../node_modules/readable-stream/readable.js | 14 +- .../node_modules/readable-stream/transform.js | 2 +- .../node_modules/readable-stream/writable.js | 2 +- .../node_modules/duplexer2/package.json | 113 +- .../node_modules/duplexer2/test/tests.js | 322 +- .../node_modules/multipipe/package.json | 89 +- .../node_modules/multipipe/test/multipipe.js | 282 +- .../node_modules/object-assign/index.js | 26 + .../node_modules/object-assign/package.json | 68 + .../node_modules/object-assign/readme.md | 51 + .../{vinyl => replace-ext}/.npmignore | 10 +- .../replace-ext}/.travis.yml | 11 +- .../node_modules/replace-ext/LICENSE | 20 + .../node_modules/replace-ext/README.md | 44 + .../replace-ext/index.js} | 16 +- .../node_modules/replace-ext/package.json | 63 + .../node_modules/replace-ext/test/main.js | 51 + .../node_modules/through2/.npmignore | 4 +- .../gulp-util/node_modules/through2/LICENSE | 76 +- .../gulp-util/node_modules/through2/README.md | 298 +- .../node_modules/readable-stream/.npmignore | 8 +- .../node_modules/readable-stream/LICENSE | 36 +- .../node_modules/readable-stream/README.md | 30 +- .../node_modules/readable-stream/duplex.js | 2 +- .../readable-stream/lib/_stream_duplex.js | 178 +- .../lib/_stream_passthrough.js | 92 +- .../readable-stream/lib/_stream_readable.js | 1964 +-- .../readable-stream/lib/_stream_transform.js | 420 +- .../readable-stream/lib/_stream_writable.js | 772 +- .../node_modules/core-util-is/README.md | 6 +- .../node_modules/core-util-is/float.patch | 1206 +- .../node_modules/core-util-is/lib/util.js | 212 +- .../node_modules/core-util-is/package.json | 108 +- .../node_modules/core-util-is/util.js | 212 +- .../node_modules/inherits/LICENSE | 32 +- .../node_modules/inherits/README.md | 84 +- .../node_modules/inherits/inherits.js | 2 +- .../node_modules/inherits/inherits_browser.js | 46 +- .../node_modules/inherits/package.json | 102 +- .../node_modules/inherits/test.js | 50 +- .../node_modules/isarray/README.md | 108 +- .../node_modules/isarray/build/build.js | 418 +- .../node_modules/isarray/component.json | 38 +- .../node_modules/isarray/index.js | 6 +- .../node_modules/isarray/package.json | 108 +- .../node_modules/string_decoder/.npmignore | 4 +- .../node_modules/string_decoder/LICENSE | 40 +- .../node_modules/string_decoder/README.md | 12 +- .../node_modules/string_decoder/index.js | 442 +- .../node_modules/string_decoder/package.json | 108 +- .../node_modules/readable-stream/package.json | 139 +- .../readable-stream/passthrough.js | 2 +- .../node_modules/readable-stream/readable.js | 16 +- .../node_modules/readable-stream/transform.js | 2 +- .../node_modules/readable-stream/writable.js | 2 +- .../through2/node_modules/xtend/.jshintrc | 60 +- .../through2/node_modules/xtend/.npmignore | 2 +- .../through2/node_modules/xtend/LICENCE | 38 +- .../through2/node_modules/xtend/Makefile | 6 +- .../through2/node_modules/xtend/README.md | 64 +- .../through2/node_modules/xtend/immutable.js | 34 +- .../through2/node_modules/xtend/mutable.js | 30 +- .../through2/node_modules/xtend/package.json | 176 +- .../through2/node_modules/xtend/test.js | 126 +- .../node_modules/through2/package.json | 129 +- .../node_modules/through2/through2.js | 192 +- .../gulp-util/node_modules/vinyl/.jshintrc | 36 - .../gulp-util/node_modules/vinyl/.travis.yml | 5 - .../gulp-util/node_modules/vinyl/LICENSE | 40 +- .../gulp-util/node_modules/vinyl/README.md | 254 +- .../node_modules/vinyl/coverage/coverage.json | 1 - .../vinyl/coverage/lcov-report/index.html | 363 - .../vinyl/coverage/lcov-report/prettify.css | 1 - .../vinyl/coverage/lcov-report/prettify.js | 1 - .../coverage/lcov-report/vinyl/index.html | 350 - .../coverage/lcov-report/vinyl/index.js.html | 847 -- .../lcov-report/vinyl/lib/cloneBuffer.js.html | 343 - .../coverage/lcov-report/vinyl/lib/index.html | 402 - .../vinyl/lib/inspectStream.js.html | 355 - .../lcov-report/vinyl/lib/isBuffer.js.html | 340 - .../lcov-report/vinyl/lib/isNull.js.html | 331 - .../lcov-report/vinyl/lib/isStream.js.html | 334 - .../node_modules/vinyl/coverage/lcov.info | 280 - .../gulp-util/node_modules/vinyl/index.js | 350 +- .../node_modules/vinyl/lib/cloneBuffer.js | 14 +- .../node_modules/vinyl/lib/inspectStream.js | 22 +- .../node_modules/vinyl/lib/isBuffer.js | 12 +- .../node_modules/vinyl/lib/isNull.js | 6 +- .../node_modules/vinyl/lib/isStream.js | 8 +- .../vinyl/node_modules/clone-stats/LICENSE.md | 42 +- .../vinyl/node_modules/clone-stats/README.md | 34 +- .../vinyl/node_modules/clone-stats/index.js | 26 +- .../node_modules/clone-stats/package.json | 114 +- .../vinyl/node_modules/clone-stats/test.js | 72 +- .../vinyl/node_modules/clone/.npmignore | 1 + .../vinyl/node_modules/clone}/.travis.yml | 9 +- .../vinyl/node_modules/clone/LICENSE | 18 + .../vinyl/node_modules/clone/README.md | 126 + .../vinyl/node_modules/clone/clone.js | 144 + .../vinyl/node_modules/clone/package.json | 127 + .../vinyl/node_modules/clone/test.js | 289 + .../gulp-util/node_modules/vinyl/package.json | 144 +- .../node_modules/vinyl/perf/clone.js | 59 - .../gulp-util/node_modules/vinyl/test/File.js | 753 -- .../node_modules/vinyl/test/cloneBuffer.js | 27 - .../node_modules/vinyl/test/inspectStream.js | 53 - .../node_modules/vinyl/test/isBuffer.js | 29 - .../node_modules/vinyl/test/isNull.js | 22 - .../node_modules/vinyl/test/isStream.js | 29 - .../gulp/node_modules/gulp-util/package.json | 167 +- .../gulp/node_modules/interpret/CHANGELOG | 76 +- .../gulp/node_modules/interpret/LICENSE | 44 +- .../gulp/node_modules/interpret/README.md | 169 +- .../gulp/node_modules/interpret/index.js | 103 +- .../gulp/node_modules/interpret/package.json | 123 +- .../gulp/node_modules/liftoff/.jshintrc | 22 +- .../gulp/node_modules/liftoff/.npmignore | 3 +- .../gulp/node_modules/liftoff/.travis.yml | 9 - .../gulp/node_modules/liftoff/CHANGELOG | 202 +- .../gulp/node_modules/liftoff/LICENSE | 44 +- .../gulp/node_modules/liftoff/README.md | 605 +- .../gulp/node_modules/liftoff/UPGRADING.md | 54 +- .../gulp/node_modules/liftoff/appveyor.yml | 54 +- .../liftoff/artwork/liftoff-icon.eps | Bin 520682 -> 0 bytes .../liftoff/artwork/liftoff-icon.png | Bin 8407 -> 0 bytes .../liftoff/artwork/liftoff-icon.svg | 77 - .../node_modules/liftoff/artwork/liftoff.eps | Bin 551958 -> 0 bytes .../node_modules/liftoff/artwork/liftoff.png | Bin 10492 -> 0 bytes .../node_modules/liftoff/artwork/liftoff.svg | 78 - .../gulp/node_modules/liftoff/index.js | 361 +- .../liftoff/lib/build_config_name.js | 34 +- .../node_modules/liftoff/lib/file_search.js | 28 +- .../node_modules/liftoff/lib/find_config.js | 50 +- .../gulp/node_modules/liftoff/lib/find_cwd.js | 32 +- .../node_modules/liftoff/lib/parse_options.js | 66 +- .../liftoff/lib/silent_require.js | 10 +- .../liftoff/node_modules/extend/.jscs.json | 66 + .../liftoff/node_modules/extend/.travis.yml | 36 +- .../liftoff/node_modules/extend/LICENSE | 46 +- .../liftoff/node_modules/extend/README.md | 122 +- .../node_modules/extend/component.json | 63 +- .../liftoff/node_modules/extend/index.js | 161 +- .../liftoff/node_modules/extend/package.json | 133 +- .../node_modules/findup-sync/.jshintrc | 15 - .../node_modules/findup-sync/.npmignore | 4 + .../node_modules/findup-sync/.travis.yml | 5 - .../node_modules/findup-sync/Gruntfile.js | 25 - .../node_modules/findup-sync/LICENSE-MIT | 44 +- .../node_modules/findup-sync/README.md | 92 +- .../findup-sync/lib/findup-sync.js | 95 +- .../findup-sync/node_modules/glob/.npmignore | 2 - .../findup-sync/node_modules/glob/LICENSE | 27 - .../findup-sync/node_modules/glob/README.md | 607 +- .../findup-sync/node_modules/glob/common.js | 177 + .../node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../findup-sync/node_modules/glob/glob.js | 1377 +-- .../glob/node_modules/inflight/.eslintrc | 17 + .../glob/node_modules/inflight/LICENSE | 15 + .../glob/node_modules/inflight/README.md | 37 + .../glob/node_modules/inflight/inflight.js | 44 + .../inflight/node_modules/wrappy/LICENSE | 15 + .../inflight/node_modules/wrappy/README.md | 36 + .../inflight/node_modules/wrappy/package.json | 52 + .../node_modules/wrappy/test/basic.js | 51 + .../inflight/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/inflight/package.json | 61 + .../glob/node_modules/inflight/test.js | 97 + .../glob/node_modules/inherits/LICENSE | 32 +- .../glob/node_modules/inherits/README.md | 84 +- .../glob/node_modules/inherits/inherits.js | 2 +- .../node_modules/inherits/inherits_browser.js | 46 +- .../glob/node_modules/inherits/package.json | 102 +- .../glob/node_modules/inherits/test.js | 50 +- .../glob/node_modules/minimatch/LICENSE | 46 +- .../glob/node_modules/minimatch/README.md | 434 +- .../glob/node_modules/minimatch/browser.js | 1114 ++ .../glob/node_modules/minimatch/minimatch.js | 1929 ++- .../node_modules/brace-expansion}/.npmignore | 3 +- .../node_modules/brace-expansion}/.travis.yml | 6 +- .../node_modules/brace-expansion/README.md | 121 + .../node_modules/brace-expansion/example.js | 8 + .../node_modules/brace-expansion/index.js | 191 + .../node_modules/balanced-match/.npmignore} | 4 +- .../node_modules/balanced-match/.travis.yml | 4 + .../node_modules/balanced-match/Makefile | 6 + .../node_modules/balanced-match/README.md | 80 + .../node_modules/balanced-match/example.js | 5 + .../node_modules/balanced-match/index.js | 38 + .../node_modules/balanced-match/package.json | 73 + .../balanced-match/test/balanced.js | 56 + .../node_modules/concat-map/.travis.yml | 4 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 83 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 75 + .../brace-expansion/test/bash-comparison.js | 32 + .../brace-expansion/test/bash-results.txt | 1075 ++ .../brace-expansion/test/cases.txt | 182 + .../brace-expansion/test/dollar.js | 9 + .../brace-expansion/test/empty-option.js | 10 + .../brace-expansion/test/generate.sh | 24 + .../test/negative-increment.js | 15 + .../brace-expansion/test/nested.js | 16 + .../brace-expansion/test/order.js | 10 + .../node_modules/brace-expansion/test/pad.js | 13 + .../brace-expansion/test/same-type.js | 7 + .../brace-expansion/test/sequence.js | 50 + .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 50 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 58 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../glob/node_modules/minimatch/package.json | 121 +- .../glob/node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../node_modules/sigmund => once}/LICENSE | 54 +- .../glob/node_modules/once/README.md | 51 + .../once/node_modules/wrappy/LICENSE | 15 + .../once/node_modules/wrappy/README.md | 36 + .../once/node_modules/wrappy/package.json | 52 + .../once/node_modules/wrappy/test/basic.js | 51 + .../once/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/once/once.js | 21 + .../glob/node_modules/once/package.json | 60 + .../glob/node_modules/once/test/once.js | 23 + .../node_modules/glob/package.json | 130 +- .../findup-sync/node_modules/glob/sync.js | 409 + .../node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 351 - .../node_modules/glob/test/cwd-test.js | 55 - .../node_modules/glob/test/globstar-match.js | 19 - .../node_modules/glob/test/mark.js | 118 - .../glob/test/new-glob-optional-options.js | 10 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/readme-issue.js | 36 - .../node_modules/glob/test/root-nomount.js | 39 - .../node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/stat.js | 32 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../node_modules/lodash/LICENSE.txt | 22 - .../findup-sync/node_modules/lodash/README.md | 163 - .../node_modules/lodash/dist/lodash.compat.js | 7157 ----------- .../lodash/dist/lodash.compat.min.js | 61 - .../node_modules/lodash/dist/lodash.js | 6785 ---------- .../node_modules/lodash/dist/lodash.min.js | 56 - .../lodash/dist/lodash.underscore.js | 4979 -------- .../lodash/dist/lodash.underscore.min.js | 39 - .../findup-sync/node_modules/lodash/lodash.js | 7179 ----------- .../node_modules/lodash/package.json | 132 - .../node_modules/findup-sync/package.json | 134 +- .../findup-sync/test/findup-sync_test.js | 48 - .../node_modules/flagged-respawn/.npmignore | 2 +- .../node_modules/flagged-respawn/.travis.yml | 18 +- .../node_modules/flagged-respawn/LICENSE | 44 +- .../node_modules/flagged-respawn/README.md | 114 +- .../node_modules/flagged-respawn/index.js | 36 +- .../flagged-respawn/lib/reorder.js | 32 +- .../flagged-respawn/lib/respawn.js | 30 +- .../node_modules/flagged-respawn/package.json | 123 +- .../flagged-respawn/test/bin/exit_code.js | 26 +- .../flagged-respawn/test/bin/respawner.js | 34 +- .../flagged-respawn/test/bin/signal.js | 32 +- .../flagged-respawn/test/index.js | 186 +- .../liftoff/node_modules/resolve/.travis.yml | 8 +- .../liftoff/node_modules/resolve/LICENSE | 36 +- .../node_modules/resolve/example/async.js | 10 +- .../node_modules/resolve/example/sync.js | 6 +- .../liftoff/node_modules/resolve/index.js | 10 +- .../liftoff/node_modules/resolve/lib/async.js | 325 +- .../node_modules/resolve/lib/caller.js | 16 +- .../liftoff/node_modules/resolve/lib/core.js | 8 +- .../node_modules/resolve/lib/core.json | 76 +- .../resolve/lib/node-modules-paths.js | 72 +- .../liftoff/node_modules/resolve/lib/sync.js | 162 +- .../liftoff/node_modules/resolve/package.json | 109 +- .../node_modules/resolve/readme.markdown | 292 +- .../liftoff/node_modules/resolve/test/core.js | 24 +- .../node_modules/resolve/test/dotdot.js | 58 +- .../resolve/test/dotdot/abc/index.js | 4 +- .../node_modules/resolve/test/dotdot/index.js | 2 +- .../resolve/test/faulty_basedir.js | 31 +- .../node_modules/resolve/test/filter.js | 36 +- .../node_modules/resolve/test/filter_sync.js | 30 +- .../liftoff/node_modules/resolve/test/mock.js | 284 +- .../node_modules/resolve/test/mock_sync.js | 136 +- .../node_modules/resolve/test/module_dir.js | 112 +- .../test/module_dir/xmodules/aaa/index.js | 2 +- .../test/module_dir/ymodules/aaa/index.js | 2 +- .../test/module_dir/zmodules/bbb/main.js | 2 +- .../test/module_dir/zmodules/bbb/package.json | 6 +- .../node_modules/resolve/test/node_path.js | 96 +- .../resolve/test/node_path/x/aaa/index.js | 2 +- .../resolve/test/node_path/x/ccc/index.js | 2 +- .../resolve/test/node_path/y/bbb/index.js | 2 +- .../resolve/test/node_path/y/ccc/index.js | 2 +- .../node_modules/resolve/test/nonstring.js | 18 +- .../node_modules/resolve/test/pathfilter.js | 35 + .../test/pathfilter/deep_ref/main.js} | 0 .../deep_ref/node_modules/deep/alt.js} | 0 .../deep_ref/node_modules/deep/deeper/ref.js} | 0 .../deep_ref/node_modules/deep/package.json | 4 + .../deep_ref/node_modules/deep/ref.js} | 0 .../node_modules/resolve/test/precedence.js | 23 + .../resolve/test/precedence/aaa.js | 1 + .../resolve/test/precedence/aaa/index.js | 1 + .../resolve/test/precedence/aaa/main.js | 1 + .../resolve/test/precedence/bbb.js | 1 + .../resolve/test/precedence/bbb/main.js | 1 + .../node_modules/resolve/test/resolver.js | 562 +- .../resolver/bar/node_modules/foo/index.js | 2 +- .../resolve/test/resolver/baz/package.json | 6 +- .../resolve/test/resolver/baz/quux.js | 2 +- .../biz/node_modules/garply/lib/index.js | 2 +- .../biz/node_modules/garply/package.json | 6 +- .../resolver/biz/node_modules/grux/index.js | 2 +- .../resolver/biz/node_modules/tiv/index.js | 2 +- .../resolve/test/resolver/cup.coffee | 2 +- .../node_modules/resolve/test/resolver/foo.js | 2 +- .../test/resolver/incorrect_main/index.js | 4 +- .../test/resolver/incorrect_main/package.json | 6 +- .../resolve/test/resolver/quux/foo/index.js | 2 +- .../test/resolver/without_basedir/main.js | 12 +- .../without_basedir/node_modules/mymodule.js | 2 +- .../resolve/test/resolver_sync.js | 360 +- .../node_modules/resolve/test/subdirs.js | 13 + .../test/subdirs/node_modules/a/b/c/x.json | 1 + .../test/subdirs/node_modules/a/package.json | 1 + .../gulp/node_modules/liftoff/package.json | 136 +- .../gulp/node_modules/minimist/.travis.yml | 8 +- .../gulp/node_modules/minimist/LICENSE | 36 +- .../node_modules/minimist/example/parse.js | 4 +- .../gulp/node_modules/minimist/index.js | 438 +- .../gulp/node_modules/minimist/package.json | 141 +- .../node_modules/minimist/readme.markdown | 182 +- .../node_modules/minimist/test/all_bool.js | 64 +- .../gulp/node_modules/minimist/test/bool.js | 238 +- .../gulp/node_modules/minimist/test/dash.js | 62 +- .../minimist/test/default_bool.js | 55 +- .../gulp/node_modules/minimist/test/dotted.js | 44 +- .../gulp/node_modules/minimist/test/long.js | 62 +- .../gulp/node_modules/minimist/test/num.js | 72 +- .../gulp/node_modules/minimist/test/parse.js | 394 +- .../minimist/test/parse_modified.js | 18 +- .../gulp/node_modules/minimist/test/short.js | 134 +- .../node_modules/minimist/test/stop_early.js | 30 +- .../node_modules/minimist/test/unknown.js | 204 +- .../node_modules/minimist/test/whitespace.js | 16 +- .../gulp/node_modules/orchestrator/.npmignore | 20 +- .../gulp/node_modules/orchestrator/LICENSE | 40 +- .../gulp/node_modules/orchestrator/README.md | 572 +- .../gulp/node_modules/orchestrator/index.js | 608 +- .../node_modules/orchestrator/lib/runTask.js | 132 +- .../node_modules/end-of-stream/.npmignore | 2 +- .../node_modules/end-of-stream/README.md | 92 +- .../node_modules/end-of-stream/index.js | 120 +- .../end-of-stream/node_modules/once/LICENSE | 54 +- .../end-of-stream/node_modules/once/README.md | 102 +- .../once/node_modules/wrappy/LICENSE | 30 +- .../once/node_modules/wrappy/README.md | 72 +- .../once/node_modules/wrappy/package.json | 104 +- .../once/node_modules/wrappy/test/basic.js | 102 +- .../once/node_modules/wrappy/wrappy.js | 66 +- .../end-of-stream/node_modules/once/once.js | 42 +- .../node_modules/once/package.json | 120 +- .../node_modules/once/test/once.js | 46 +- .../node_modules/end-of-stream/package.json | 110 +- .../node_modules/end-of-stream/test.js | 118 +- .../node_modules/sequencify/package.json | 124 +- .../node_modules/stream-consume/.npmignore | 2 +- .../node_modules/stream-consume/README.md | 106 +- .../node_modules/stream-consume/index.js | 28 +- .../node_modules/stream-consume/package.json | 96 +- .../node_modules/stream-consume/test/tests.js | 360 +- .../node_modules/orchestrator/package.json | 162 +- .../node_modules/pretty-hrtime/package.json | 119 +- .../gulp/node_modules/semver/.npmignore | 2 +- node_modules/gulp/node_modules/semver/LICENSE | 54 +- .../gulp/node_modules/semver/Makefile | 48 +- .../gulp/node_modules/semver/README.md | 461 +- .../gulp/node_modules/semver/bin/semver | 258 +- .../semver/{foot.js => foot.js.txt} | 12 +- .../semver/{head.js => head.js.txt} | 4 +- .../gulp/node_modules/semver/package.json | 105 +- .../node_modules/semver/semver.browser.js | 2233 ++-- .../node_modules/semver/semver.browser.js.gz | Bin 7247 -> 7970 bytes .../gulp/node_modules/semver/semver.js | 2241 ++-- .../gulp/node_modules/semver/semver.min.js | 2 +- .../gulp/node_modules/semver/semver.min.js.gz | Bin 3318 -> 3776 bytes .../gulp/node_modules/semver/test/amd.js | 30 +- .../node_modules/semver/test/big-numbers.js | 31 + .../gulp/node_modules/semver/test/clean.js | 54 +- .../gulp/node_modules/semver/test/gtr.js | 346 +- .../gulp/node_modules/semver/test/index.js | 1272 +- .../gulp/node_modules/semver/test/ltr.js | 356 +- .../semver/test/major-minor-patch.js | 72 + .../node_modules/semver/test/no-module.js | 38 +- .../gulp/node_modules/tildify/index.js | 12 +- .../tildify/node_modules/.bin/user-home | 0 .../tildify/node_modules/user-home/cli.js | 52 +- .../tildify/node_modules/user-home/index.js | 29 +- .../tildify/node_modules/user-home/license | 21 + .../node_modules/user-home/package.json | 137 +- .../tildify/node_modules/user-home/readme.md | 82 +- .../gulp/node_modules/tildify/package.json | 133 +- .../gulp/node_modules/tildify/readme.md | 60 +- .../gulp/node_modules/v8flags/.npmignore | 5 +- .../gulp/node_modules/v8flags/.travis.yml | 9 - .../node_modules/v8flags/3.14.5.9.flags.json | 1 - .../gulp/node_modules/v8flags/LICENSE | 44 +- .../gulp/node_modules/v8flags/README.md | 67 +- .../gulp/node_modules/v8flags/fetch.js | 30 - .../gulp/node_modules/v8flags/index.js | 94 +- .../v8flags/node_modules/.bin/user-home | 1 + .../v8flags/node_modules/user-home/cli.js | 26 + .../v8flags/node_modules/user-home/index.js | 15 + .../v8flags/node_modules/user-home/license | 21 + .../node_modules/user-home/package.json | 69 + .../v8flags/node_modules/user-home/readme.md | 42 + .../gulp/node_modules/v8flags/package.json | 127 +- .../gulp/node_modules/v8flags/test.js | 22 - .../gulp/node_modules/vinyl-fs/.editorconfig | 10 - .../gulp/node_modules/vinyl-fs/.jshintrc | 27 - .../gulp/node_modules/vinyl-fs/.npmignore | 9 - .../gulp/node_modules/vinyl-fs/LICENSE | 40 +- .../gulp/node_modules/vinyl-fs/README.md | 186 +- .../gulp/node_modules/vinyl-fs/index.js | 14 +- .../node_modules/vinyl-fs/lib/dest/index.js | 127 +- .../vinyl-fs/lib/dest/writeContents/index.js | 118 +- .../lib/dest/writeContents/writeBuffer.js | 26 +- .../lib/dest/writeContents/writeDir.js | 18 +- .../lib/dest/writeContents/writeStream.js | 44 +- .../lib/src/getContents/bufferFile.js | 32 +- .../vinyl-fs/lib/src/getContents/index.js | 52 +- .../vinyl-fs/lib/src/getContents/readDir.js | 16 +- .../lib/src/getContents/streamFile.js | 26 +- .../node_modules/vinyl-fs/lib/src/getStats.js | 38 +- .../node_modules/vinyl-fs/lib/src/index.js | 123 +- .../vinyl-fs/node_modules/.bin/mkdirp | 0 .../vinyl-fs/node_modules/.bin/strip-bom | 0 .../node_modules/defaults}/.npmignore | 2 +- .../vinyl-fs/node_modules/defaults/LICENSE | 21 + .../vinyl-fs/node_modules/defaults/README.md | 43 + .../vinyl-fs/node_modules/defaults/index.js | 13 + .../defaults/node_modules/clone/.npmignore | 1 + .../node_modules/clone}/.travis.yml | 9 +- .../defaults/node_modules/clone/LICENSE | 18 + .../defaults/node_modules/clone/README.md | 126 + .../defaults/node_modules/clone/clone.js | 144 + .../defaults/node_modules/clone/package.json | 127 + .../defaults/node_modules/clone/test.js | 289 + .../node_modules/defaults/package.json | 54 + .../vinyl-fs/node_modules/defaults/test.js | 34 + .../node_modules/glob-stream/.npmignore | 6 - .../node_modules/glob-stream/.travis.yml | 6 - .../vinyl-fs/node_modules/glob-stream/LICENSE | 40 +- .../node_modules/glob-stream/README.md | 134 +- .../node_modules/glob-stream/index.js | 236 +- .../glob-stream/node_modules/glob/.npmignore | 3 - .../glob-stream/node_modules/glob/LICENSE | 30 +- .../glob-stream/node_modules/glob/README.md | 610 +- .../glob-stream/node_modules/glob/common.js | 237 + .../node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../glob-stream/node_modules/glob/glob.js | 1486 ++- .../glob/node_modules/inflight/.eslintrc | 17 + .../glob/node_modules/inflight/LICENSE | 15 + .../glob/node_modules/inflight/README.md | 37 + .../glob/node_modules/inflight/inflight.js | 44 + .../inflight/node_modules/wrappy/LICENSE | 15 + .../inflight/node_modules/wrappy/README.md | 36 + .../inflight/node_modules/wrappy/package.json | 52 + .../node_modules/wrappy/test/basic.js | 51 + .../inflight/node_modules/wrappy/wrappy.js | 33 + .../glob/node_modules/inflight/package.json | 61 + .../glob/node_modules/inflight/test.js | 97 + .../glob/node_modules/inherits/LICENSE | 32 +- .../glob/node_modules/inherits/README.md | 84 +- .../glob/node_modules/inherits/inherits.js | 2 +- .../node_modules/inherits/inherits_browser.js | 46 +- .../glob/node_modules/inherits/package.json | 102 +- .../glob/node_modules/inherits/test.js | 50 +- .../glob/node_modules/once/LICENSE | 54 +- .../glob/node_modules/once/README.md | 102 +- .../once/node_modules/wrappy/LICENSE | 30 +- .../once/node_modules/wrappy/README.md | 72 +- .../once/node_modules/wrappy/package.json | 104 +- .../once/node_modules/wrappy/test/basic.js | 102 +- .../once/node_modules/wrappy/wrappy.js | 66 +- .../glob/node_modules/once/once.js | 42 +- .../glob/node_modules/once/package.json | 120 +- .../glob/node_modules/once/test/once.js | 46 +- .../node_modules/glob/oh-my-glob.gif | Bin 510360 -> 0 bytes .../node_modules/glob/package.json | 133 +- .../glob-stream/node_modules/glob/sync.js | 457 + .../node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 356 - .../node_modules/glob/test/cwd-test.js | 55 - .../node_modules/glob/test/empty-set.js | 20 - .../node_modules/glob/test/error-callback.js | 21 - .../node_modules/glob/test/globstar-match.js | 19 - .../node_modules/glob/test/mark.js | 118 - .../node_modules/glob/test/negation-test.js | 16 - .../glob/test/new-glob-optional-options.js | 10 - .../node_modules/glob/test/nocase-nomagic.js | 125 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/readme-issue.js | 36 - .../node_modules/glob/test/root-nomount.js | 39 - .../node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/stat.js | 32 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../node_modules/glob2base/.editorconfig | 10 - .../node_modules/glob2base/.jshintrc | 19 - .../node_modules/glob2base/.npmignore | 9 - .../node_modules/glob2base/.travis.yml | 6 - .../node_modules/glob2base/LICENSE | 40 +- .../node_modules/glob2base/README.md | 102 +- .../node_modules/glob2base/index.js | 119 +- .../node_modules/find-index/README.md | 33 + .../node_modules/find-index/index.js | 26 + .../glob2base/node_modules/find-index/last.js | 26 + .../node_modules/find-index/package.json | 52 + .../node_modules/glob2base/package.json | 140 +- .../node_modules/glob2base/test/main.js | 53 - .../node_modules/minimatch/LICENSE | 46 +- .../node_modules/minimatch/README.md | 434 +- .../node_modules/minimatch/browser.js | 1114 ++ .../node_modules/minimatch/minimatch.js | 1941 ++- .../node_modules/brace-expansion/.npmignore} | 4 +- .../node_modules/brace-expansion/.travis.yml | 3 + .../node_modules/brace-expansion/README.md | 121 + .../node_modules/brace-expansion/example.js | 8 + .../node_modules/brace-expansion/index.js | 191 + .../node_modules/balanced-match/.npmignore | 2 + .../node_modules/balanced-match/.travis.yml | 4 + .../node_modules/balanced-match/Makefile | 6 + .../node_modules/balanced-match/README.md | 80 + .../node_modules/balanced-match/example.js | 5 + .../node_modules/balanced-match/index.js | 38 + .../node_modules/balanced-match/package.json | 73 + .../balanced-match/test/balanced.js | 56 + .../node_modules/concat-map/.travis.yml | 4 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 83 + .../node_modules/concat-map/test/map.js | 39 + .../node_modules/brace-expansion/package.json | 75 + .../brace-expansion/test/bash-comparison.js | 32 + .../brace-expansion/test/bash-results.txt | 1075 ++ .../brace-expansion/test/cases.txt | 182 + .../brace-expansion/test/dollar.js | 9 + .../brace-expansion/test/empty-option.js | 10 + .../brace-expansion/test/generate.sh | 24 + .../test/negative-increment.js | 15 + .../brace-expansion/test/nested.js | 16 + .../brace-expansion/test/order.js | 10 + .../node_modules/brace-expansion/test/pad.js | 13 + .../brace-expansion/test/same-type.js | 7 + .../brace-expansion/test/sequence.js | 50 + .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 50 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 58 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 122 +- .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 40 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../ordered-read-streams/.npmignore | 32 +- .../ordered-read-streams/.travis.yml | 8 +- .../node_modules/ordered-read-streams/LICENSE | 40 +- .../ordered-read-streams/README.md | 130 +- .../ordered-read-streams/index.js | 158 +- .../ordered-read-streams/package.json | 100 +- .../ordered-read-streams/test/main.js | 320 +- .../node_modules/unique-stream/.npmignore | 6 +- .../node_modules/unique-stream/.travis.yml | 6 +- .../node_modules/unique-stream/LICENSE | 40 +- .../node_modules/unique-stream/README.md | 178 +- .../node_modules/unique-stream/index.js | 108 +- .../node_modules/unique-stream/package.json | 110 +- .../node_modules/unique-stream/test/index.js | 218 +- .../node_modules/glob-stream/package.json | 146 +- .../glob-stream/test/fixtures/.swag | 1 - .../glob-stream/test/fixtures/stuff/run.dmc | 0 .../glob-stream/test/fixtures/stuff/test.dmc | 0 .../glob-stream/test/fixtures/test.coffee | 1 - .../hey/isaidhey/whatsgoingon/test.txt | 1 - .../test/fixtures/whatsgoingon/test.js | 1 - .../node_modules/glob-stream/test/main.js | 425 - .../node_modules/glob-watcher/.npmignore | 10 +- .../node_modules/glob-watcher/.travis.yml | 10 +- .../node_modules/glob-watcher/LICENSE | 40 +- .../node_modules/glob-watcher/README.md | 106 +- .../node_modules/glob-watcher/index.js | 78 +- .../node_modules/gaze/LICENSE-MIT | 44 +- .../glob-watcher/node_modules/gaze/README.md | 360 +- .../node_modules/gaze/lib/gaze.js | 878 +- .../node_modules/gaze/lib/helper.js | 134 +- .../gaze/node_modules/globule/.jshintrc | 30 +- .../gaze/node_modules/globule/.npmignore | 2 +- .../gaze/node_modules/globule/.travis.yml | 12 +- .../gaze/node_modules/globule/Gruntfile.js | 96 +- .../gaze/node_modules/globule/LICENSE-MIT | 44 +- .../gaze/node_modules/globule/README.md | 234 +- .../gaze/node_modules/globule/lib/globule.js | 344 +- .../globule/node_modules/glob/.npmignore | 4 +- .../globule/node_modules/glob/.travis.yml | 6 +- .../globule/node_modules/glob/LICENSE | 54 +- .../globule/node_modules/glob/README.md | 466 +- .../globule/node_modules/glob/examples/g.js | 18 +- .../node_modules/glob/examples/usr-local.js | 18 +- .../globule/node_modules/glob/glob.js | 1286 +- .../glob/node_modules/graceful-fs/.npmignore | 2 +- .../glob/node_modules/graceful-fs/LICENSE | 54 +- .../glob/node_modules/graceful-fs/README.md | 66 +- .../node_modules/graceful-fs/graceful-fs.js | 884 +- .../node_modules/graceful-fs/package.json | 130 +- .../node_modules/graceful-fs/test/open.js | 92 +- .../node_modules/graceful-fs/test/ulimit.js | 316 +- .../glob/node_modules/inherits/README.md | 102 +- .../glob/node_modules/inherits/inherits.js | 58 +- .../glob/node_modules/inherits/package.json | 92 +- .../globule/node_modules/glob/package.json | 114 +- .../node_modules/glob/test/00-setup.js | 352 +- .../node_modules/glob/test/bash-comparison.js | 126 +- .../node_modules/glob/test/bash-results.json | 696 +- .../node_modules/glob/test/cwd-test.js | 110 +- .../globule/node_modules/glob/test/mark.js | 148 +- .../node_modules/glob/test/nocase-nomagic.js | 226 +- .../node_modules/glob/test/pause-resume.js | 146 +- .../node_modules/glob/test/root-nomount.js | 78 +- .../globule/node_modules/glob/test/root.js | 92 +- .../node_modules/glob/test/zz-cleanup.js | 22 +- .../globule/node_modules/lodash}/LICENSE.txt | 42 +- .../globule/node_modules/lodash/README.md | 292 +- .../node_modules/lodash/dist/lodash.compat.js | 10304 ++++++++-------- .../lodash/dist/lodash.compat.min.js | 82 +- .../node_modules/lodash/dist/lodash.js | 9966 +++++++-------- .../node_modules/lodash/dist/lodash.min.js | 81 +- .../lodash/dist/lodash.underscore.js | 8614 ++++++------- .../lodash/dist/lodash.underscore.min.js | 66 +- .../globule/node_modules/lodash/package.json | 177 +- .../globule/node_modules/minimatch/.npmignore | 2 +- .../globule/node_modules/minimatch/LICENSE | 46 +- .../globule/node_modules/minimatch/README.md | 436 +- .../node_modules/minimatch/minimatch.js | 2110 ++-- .../node_modules/lru-cache/.npmignore | 2 +- .../node_modules/lru-cache/CONTRIBUTORS | 28 +- .../minimatch/node_modules/lru-cache/LICENSE | 46 +- .../node_modules/lru-cache/README.md | 194 +- .../node_modules/lru-cache/lib/lru-cache.js | 504 +- .../node_modules/lru-cache/package.json | 100 +- .../node_modules/lru-cache/test/basic.js | 738 +- .../node_modules/lru-cache/test/foreach.js | 104 +- .../lru-cache/test/memory-leak.js | 100 +- .../minimatch/node_modules/sigmund/LICENSE | 54 +- .../minimatch/node_modules/sigmund/README.md | 106 +- .../minimatch/node_modules/sigmund/bench.js | 566 +- .../node_modules/sigmund/package.json | 116 +- .../minimatch/node_modules/sigmund/sigmund.js | 78 +- .../node_modules/sigmund/test/basic.js | 48 +- .../node_modules/minimatch/package.json | 114 +- .../node_modules/minimatch/test/basic.js | 798 +- .../minimatch/test/brace-expand.js | 66 +- .../node_modules/minimatch/test/caching.js | 28 +- .../node_modules/minimatch/test/defaults.js | 548 +- .../test/extglob-ending-with-state-char.js | 16 +- .../gaze/node_modules/globule/package.json | 148 +- .../node_modules/globule/test/globule_test.js | 972 +- .../node_modules/gaze/package.json | 142 +- .../node_modules/glob-watcher/package.json | 132 +- .../node_modules/glob-watcher/test/main.js | 172 +- .../node_modules/graceful-fs/.npmignore | 2 +- .../vinyl-fs/node_modules/graceful-fs/LICENSE | 54 +- .../node_modules/graceful-fs/README.md | 72 +- .../vinyl-fs/node_modules/graceful-fs/fs.js | 22 +- .../node_modules/graceful-fs/graceful-fs.js | 316 +- .../node_modules/graceful-fs/package.json | 142 +- .../node_modules/graceful-fs/polyfills.js | 510 +- .../node_modules/graceful-fs/test/max-open.js | 138 +- .../node_modules/graceful-fs/test/open.js | 78 +- .../graceful-fs/test/readdir-sort.js | 40 +- .../graceful-fs/test/write-then-read.js | 90 +- .../vinyl-fs/node_modules/lodash/LICENSE.txt | 22 - .../vinyl-fs/node_modules/lodash/README.md | 163 - .../node_modules/lodash/dist/lodash.compat.js | 7157 ----------- .../lodash/dist/lodash.compat.min.js | 61 - .../node_modules/lodash/dist/lodash.js | 6785 ---------- .../node_modules/lodash/dist/lodash.min.js | 56 - .../lodash/dist/lodash.underscore.js | 4979 -------- .../lodash/dist/lodash.underscore.min.js | 39 - .../vinyl-fs/node_modules/lodash/lodash.js | 7179 ----------- .../vinyl-fs/node_modules/lodash/package.json | 132 - .../vinyl-fs/node_modules/mkdirp/.npmignore | 2 +- .../vinyl-fs/node_modules/mkdirp/.travis.yml | 10 +- .../vinyl-fs/node_modules/mkdirp/LICENSE | 42 +- .../vinyl-fs/node_modules/mkdirp/bin/cmd.js | 66 +- .../node_modules/mkdirp/bin/usage.txt | 24 +- .../node_modules/mkdirp/examples/pow.js | 12 +- .../vinyl-fs/node_modules/mkdirp/index.js | 194 +- .../mkdirp/node_modules/minimist/.travis.yml | 8 +- .../mkdirp/node_modules/minimist/LICENSE | 36 +- .../node_modules/minimist/example/parse.js | 4 +- .../mkdirp/node_modules/minimist/index.js | 374 +- .../mkdirp/node_modules/minimist/package.json | 134 +- .../node_modules/minimist/readme.markdown | 146 +- .../mkdirp/node_modules/minimist/test/dash.js | 48 +- .../minimist/test/default_bool.js | 40 +- .../node_modules/minimist/test/dotted.js | 32 +- .../mkdirp/node_modules/minimist/test/long.js | 62 +- .../node_modules/minimist/test/parse.js | 636 +- .../minimist/test/parse_modified.js | 18 +- .../node_modules/minimist/test/short.js | 134 +- .../node_modules/minimist/test/whitespace.js | 16 +- .../vinyl-fs/node_modules/mkdirp/package.json | 116 +- .../node_modules/mkdirp/readme.markdown | 200 +- .../node_modules/mkdirp/test/chmod.js | 76 +- .../node_modules/mkdirp/test/clobber.js | 74 +- .../node_modules/mkdirp/test/mkdirp.js | 52 +- .../node_modules/mkdirp/test/opts_fs.js | 54 +- .../node_modules/mkdirp/test/opts_fs_sync.js | 50 +- .../vinyl-fs/node_modules/mkdirp/test/perm.js | 60 +- .../node_modules/mkdirp/test/perm_sync.js | 68 +- .../vinyl-fs/node_modules/mkdirp/test/race.js | 80 +- .../vinyl-fs/node_modules/mkdirp/test/rel.js | 60 +- .../node_modules/mkdirp/test/return.js | 50 +- .../node_modules/mkdirp/test/return_sync.js | 48 +- .../vinyl-fs/node_modules/mkdirp/test/root.js | 36 +- .../vinyl-fs/node_modules/mkdirp/test/sync.js | 60 +- .../node_modules/mkdirp/test/umask.js | 52 +- .../node_modules/mkdirp/test/umask_sync.js | 60 +- .../vinyl-fs/node_modules/strip-bom/cli.js | 84 +- .../vinyl-fs/node_modules/strip-bom/index.js | 48 +- .../node_modules/first-chunk-stream/index.js | 186 +- .../first-chunk-stream/package.json | 129 +- .../node_modules/first-chunk-stream/readme.md | 124 +- .../strip-bom/node_modules/is-utf8/README.md | 24 +- .../strip-bom/node_modules/is-utf8/ansi.txt | 14 +- .../strip-bom/node_modules/is-utf8/is-utf8.js | 152 +- .../node_modules/is-utf8/package.json | 92 +- .../strip-bom/node_modules/is-utf8/test.js | 14 +- .../strip-bom/node_modules/is-utf8/utf8.txt | 0 .../node_modules/strip-bom/package.json | 159 +- .../vinyl-fs/node_modules/strip-bom/readme.md | 118 +- .../vinyl-fs/node_modules/through2/.npmignore | 4 +- .../vinyl-fs/node_modules/through2/LICENSE | 76 +- .../vinyl-fs/node_modules/through2/README.md | 298 +- .../node_modules/readable-stream/.npmignore | 8 +- .../node_modules/readable-stream/LICENSE | 36 +- .../node_modules/readable-stream/README.md | 30 +- .../node_modules/readable-stream/duplex.js | 2 +- .../readable-stream/lib/_stream_duplex.js | 178 +- .../lib/_stream_passthrough.js | 92 +- .../readable-stream/lib/_stream_readable.js | 1964 +-- .../readable-stream/lib/_stream_transform.js | 420 +- .../readable-stream/lib/_stream_writable.js | 772 +- .../node_modules/core-util-is/README.md | 6 +- .../node_modules/core-util-is/float.patch | 1206 +- .../node_modules/core-util-is/lib/util.js | 212 +- .../node_modules/core-util-is/package.json | 108 +- .../node_modules/core-util-is/util.js | 212 +- .../node_modules/inherits/LICENSE | 32 +- .../node_modules/inherits/README.md | 84 +- .../node_modules/inherits/inherits.js | 2 +- .../node_modules/inherits/inherits_browser.js | 46 +- .../node_modules/inherits/package.json | 102 +- .../node_modules/inherits/test.js | 50 +- .../node_modules/isarray/README.md | 108 +- .../node_modules/isarray/build/build.js | 418 +- .../node_modules/isarray/component.json | 38 +- .../node_modules/isarray/index.js | 6 +- .../node_modules/isarray/package.json | 108 +- .../node_modules/string_decoder/.npmignore | 4 +- .../node_modules/string_decoder/LICENSE | 40 +- .../node_modules/string_decoder/README.md | 12 +- .../node_modules/string_decoder/index.js | 442 +- .../node_modules/string_decoder/package.json | 108 +- .../node_modules/readable-stream/package.json | 140 +- .../readable-stream/passthrough.js | 2 +- .../node_modules/readable-stream/readable.js | 16 +- .../node_modules/readable-stream/transform.js | 2 +- .../node_modules/readable-stream/writable.js | 2 +- .../through2/node_modules/xtend/.jshintrc | 60 +- .../through2/node_modules/xtend/.npmignore | 2 +- .../through2/node_modules/xtend/LICENCE | 38 +- .../through2/node_modules/xtend/Makefile | 6 +- .../through2/node_modules/xtend/README.md | 64 +- .../through2/node_modules/xtend/immutable.js | 34 +- .../through2/node_modules/xtend/mutable.js | 30 +- .../through2/node_modules/xtend/package.json | 176 +- .../through2/node_modules/xtend/test.js | 126 +- .../node_modules/through2/package.json | 129 +- .../node_modules/through2/through2.js | 192 +- .../vinyl-fs/node_modules/vinyl/.jshintrc | 36 - .../vinyl-fs/node_modules/vinyl/.npmignore | 6 - .../vinyl-fs/node_modules/vinyl/.travis.yml | 5 - .../vinyl-fs/node_modules/vinyl/LICENSE | 40 +- .../vinyl-fs/node_modules/vinyl/README.md | 254 +- .../node_modules/vinyl/coverage/coverage.json | 1 - .../vinyl/coverage/lcov-report/index.html | 363 - .../vinyl/coverage/lcov-report/prettify.css | 1 - .../vinyl/coverage/lcov-report/prettify.js | 1 - .../coverage/lcov-report/vinyl/index.html | 350 - .../coverage/lcov-report/vinyl/index.js.html | 847 -- .../lcov-report/vinyl/lib/cloneBuffer.js.html | 343 - .../coverage/lcov-report/vinyl/lib/index.html | 402 - .../vinyl/lib/inspectStream.js.html | 355 - .../lcov-report/vinyl/lib/isBuffer.js.html | 340 - .../lcov-report/vinyl/lib/isNull.js.html | 331 - .../lcov-report/vinyl/lib/isStream.js.html | 334 - .../node_modules/vinyl/coverage/lcov.info | 280 - .../vinyl-fs/node_modules/vinyl/index.js | 350 +- .../node_modules/vinyl/lib/cloneBuffer.js | 14 +- .../node_modules/vinyl/lib/inspectStream.js | 22 +- .../node_modules/vinyl/lib/isBuffer.js | 12 +- .../vinyl-fs/node_modules/vinyl/lib/isNull.js | 6 +- .../node_modules/vinyl/lib/isStream.js | 8 +- .../vinyl/node_modules/clone-stats/LICENSE.md | 42 +- .../vinyl/node_modules/clone-stats/README.md | 34 +- .../vinyl/node_modules/clone-stats/index.js | 26 +- .../node_modules/clone-stats/package.json | 114 +- .../vinyl/node_modules/clone-stats/test.js | 72 +- .../vinyl/node_modules/clone/.npmignore | 1 + .../vinyl/node_modules/clone/.travis.yml | 5 + .../vinyl/node_modules/clone/LICENSE | 18 + .../vinyl/node_modules/clone/README.md | 126 + .../vinyl/node_modules/clone/clone.js | 144 + .../vinyl/node_modules/clone/package.json | 127 + .../vinyl/node_modules/clone/test.js | 289 + .../vinyl-fs/node_modules/vinyl/package.json | 144 +- .../vinyl-fs/node_modules/vinyl/perf/clone.js | 59 - .../vinyl-fs/node_modules/vinyl/test/File.js | 753 -- .../node_modules/vinyl/test/cloneBuffer.js | 27 - .../node_modules/vinyl/test/inspectStream.js | 53 - .../node_modules/vinyl/test/isBuffer.js | 29 - .../node_modules/vinyl/test/isNull.js | 22 - .../node_modules/vinyl/test/isStream.js | 29 - .../gulp/node_modules/vinyl-fs/package.json | 157 +- .../gulp/node_modules/vinyl-fs/test/dest.js | 631 - .../vinyl-fs/test/fixtures/bom-utf16be.txt | Bin 244 -> 0 bytes .../vinyl-fs/test/fixtures/bom-utf16le.txt | Bin 244 -> 0 bytes .../vinyl-fs/test/fixtures/bom-utf8.txt | 1 - .../vinyl-fs/test/fixtures/test.coffee | 1 - .../vinyl-fs/test/fixtures/wow/suchempty | 1 - .../gulp/node_modules/vinyl-fs/test/spy.js | 27 - .../gulp/node_modules/vinyl-fs/test/src.js | 247 - node_modules/gulp/package.json | 217 +- package.json | 2 +- test-sql/sqllogic/sqltest.zip | Bin 0 -> 536453 bytes {cordova => test/cordova}/alasql-cordova.js | 0 {cordova => test/cordova}/filestorage.js | 0 {cordova => test/cordova}/test.js | 0 {cordova => test/cordova}/test1.js | 0 {cordova => test/cordova}/test1.json | 0 test/future/test119.js | 2 +- test/future/test123.js | 2 +- test/future/test131.js | 2 +- test/future/test132.js | 2 +- test/future/test134.js | 2 +- test/future/test135.js | 2 +- test/future/test136.js | 2 +- test/future/test147.js | 2 +- test/test000.js | 2 +- test/test001.js | 2 +- test/test002.js | 2 +- test/test003.js | 2 +- test/test004.js | 2 +- test/test005.js | 2 +- test/test006.js | 2 +- test/test007.js | 2 +- test/test008.js | 2 +- test/test009.js | 2 +- test/test010.js | 2 +- test/test011.js | 2 +- test/test012.js | 2 +- test/test013.js | 2 +- test/test014.js | 2 +- test/test015.js | 2 +- test/test016.js | 2 +- test/test016a.js | 2 +- test/test017.js | 2 +- test/test018.js | 2 +- test/test019.js | 2 +- test/test020.js | 2 +- test/test021.js | 2 +- test/test022.js | 2 +- test/test023.js | 2 +- test/test024.js | 2 +- test/test025.js | 2 +- test/test026.js | 2 +- test/test027.js | 2 +- test/test028.js | 2 +- test/test029.js | 2 +- test/test030.js | 2 +- test/test031.js | 2 +- test/test032.js | 2 +- test/test034.js | 2 +- test/test035.js | 2 +- test/test036.js | 2 +- test/test037.js | 2 +- test/test038.js | 2 +- test/test039.js | 2 +- test/test040.js | 2 +- test/test041.js | 2 +- test/test042.js | 2 +- test/test044.js | 2 +- test/test045.js | 2 +- test/test046.js | 2 +- test/test047.js | 2 +- test/test048.js | 2 +- test/test049.js | 2 +- test/test050.js | 2 +- test/test051.js | 2 +- test/test052.js | 2 +- test/test053.js | 2 +- test/test054.js | 2 +- test/test055.js | 2 +- test/test056.js | 2 +- test/test057.js | 2 +- test/test058.js | 2 +- test/test059.js | 2 +- test/test060.js | 2 +- test/test061.js | 2 +- test/test062.js | 2 +- test/test063.js | 2 +- test/test064.js | 2 +- test/test065.js | 2 +- test/test066.js | 2 +- test/test067.js | 2 +- test/test068.js | 2 +- test/test069.js | 2 +- test/test070.js | 2 +- test/test071.js | 2 +- test/test072.js | 2 +- test/test073.js | 2 +- test/test074.js | 2 +- test/test075.js | 2 +- test/test076.js | 2 +- test/test077.js | 2 +- test/test078.js | 2 +- test/test079.js | 2 +- test/test080.js | 2 +- test/test081.js | 2 +- test/test082.js | 2 +- test/test083.js | 2 +- test/test084.js | 2 +- test/test085.js | 2 +- test/test086.js | 2 +- test/test087.js | 2 +- test/test088.js | 2 +- test/test089.js | 2 +- test/test090.js | 2 +- test/test091.js | 2 +- test/test092.js | 2 +- test/test093.js | 2 +- test/test094.js | 2 +- test/test095.js | 2 +- test/test096.js | 2 +- test/test097.js | 2 +- test/test098.js | 2 +- test/test099.js | 2 +- test/test100.js | 2 +- test/test101.js | 2 +- test/test102.js | 2 +- test/test103.js | 2 +- test/test104.js | 2 +- test/test105.js | 2 +- test/test106.js | 2 +- test/test113.js | 2 +- test/test114.js | 2 +- test/test115.js | 2 +- test/test116.js | 2 +- test/test117.js | 2 +- test/test118.js | 2 +- test/test119.js | 2 +- test/test120.js | 2 +- test/test121.js | 2 +- test/test122.js | 2 +- test/test123.js | 2 +- test/test124.js | 2 +- test/test125.js | 2 +- test/test126.js | 2 +- test/test127.js | 2 +- test/test128.js | 2 +- test/test131.js | 2 +- test/test132.js | 2 +- test/test133.js | 2 +- test/test134.js | 2 +- test/test135.js | 2 +- test/test136.js | 2 +- test/test137.js | 2 +- test/test138.js | 2 +- test/test139.js | 2 +- test/test140.js | 2 +- test/test141.js | 2 +- test/test142.js | 2 +- test/test143.js | 2 +- test/test144.js | 2 +- test/test145.js | 2 +- test/test146.js | 2 +- test/test147.js | 2 +- test/test148.js | 2 +- test/test149.js | 2 +- test/test150.js | 2 +- test/test151.js | 2 +- test/test152.js | 2 +- test/test153.js | 2 +- test/test154.js | 2 +- test/test155.js | 2 +- test/test156.js | 2 +- test/test157.js | 2 +- test/test158.js | 2 +- test/test159.js | 2 +- test/test160.js | 2 +- test/test161.js | 2 +- test/test162.js | 2 +- test/test163.js | 2 +- test/test164.js | 2 +- test/test165.js | 2 +- test/test166.js | 2 +- test/test167.js | 2 +- test/test168.js | 2 +- test/test169.js | 2 +- test/test169a.xlsx | Bin 13756 -> 13756 bytes test/test170.js | 2 +- test/test171.js | 2 +- test/test172.js | 2 +- test/test173.js | 2 +- test/test174.js | 2 +- test/test175.js | 2 +- test/test176.js | 2 +- test/test177.js | 2 +- test/test178.js | 2 +- test/test179.js | 2 +- test/test180.js | 2 +- test/test181.js | 2 +- test/test182.js | 2 +- test/test183.js | 2 +- test/test184.js | 2 +- test/test185.js | 2 +- test/test186.js | 2 +- test/test187.js | 2 +- test/test188.js | 2 +- test/test189.js | 2 +- test/test190.js | 2 +- test/test191.js | 2 +- test/test192.js | 2 +- test/test193.js | 2 +- test/test194.js | 2 +- test/test195.js | 2 +- test/test196.js | 2 +- test/test197.js | 2 +- test/test198.js | 2 +- test/test199.js | 2 +- test/test200.js | 2 +- test/test201.js | 2 +- test/test202.js | 2 +- test/test203.js | 2 +- test/test204.js | 2 +- test/test205.js | 2 +- test/test206.js | 2 +- test/test207.js | 2 +- test/test208.js | 2 +- test/test209.js | 2 +- test/test210.js | 2 +- test/test211.js | 2 +- test/test212.js | 2 +- test/test213.js | 2 +- test/test214.js | 2 +- test/test215.js | 2 +- test/test216.js | 2 +- test/test217.js | 2 +- test/test218.js | 2 +- test/test219.js | 2 +- test/test220.js | 2 +- test/test221.js | 2 +- test/test222.js | 2 +- test/test223.js | 2 +- test/test224.js | 2 +- test/test225.js | 2 +- test/test226.js | 2 +- test/test227.js | 2 +- test/test228.js | 2 +- test/test229.js | 2 +- test/test230.js | 2 +- test/test231.js | 2 +- test/test232.js | 2 +- test/test233.js | 2 +- test/test234.js | 2 +- test/test235.js | 2 +- test/test236.js | 2 +- test/test237.js | 2 +- test/test238.js | 2 +- test/test238b.xlsx | Bin 13661 -> 13661 bytes test/test239.js | 2 +- test/test240.js | 2 +- test/test241.js | 2 +- test/test242.js | 2 +- test/test243.js | 2 +- test/test244.js | 2 +- test/test245.js | 2 +- test/test246.js | 2 +- test/test247.js | 2 +- test/test248.js | 2 +- test/test250.js | 2 +- test/test251.js | 2 +- test/test251.xlsx | Bin 15278 -> 15278 bytes test/test252.js | 2 +- testsql/sqllogic/README.md | 1 - 1492 files changed, 82804 insertions(+), 164923 deletions(-) delete mode 100755 alasql-worker.js delete mode 100755 alasql-worker.js.map delete mode 100644 alasql-worker.min.js delete mode 100644 alasql.min.js delete mode 100644 index.js delete mode 100644 medals.csv delete mode 100644 medals.xlsx create mode 100644 node_modules/gulp/CHANGELOG.md create mode 100644 node_modules/gulp/LICENSE mode change 100644 => 120000 node_modules/gulp/node_modules/.bin/semver create mode 100644 node_modules/gulp/node_modules/archy/LICENSE mode change 100644 => 120000 node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi mode change 100644 => 120000 node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi mode change 100644 => 120000 node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color create mode 100644 node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/license mode change 100644 => 100755 node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js mode change 100644 => 100755 node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js mode change 100644 => 100755 node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js mode change 100644 => 100755 node_modules/gulp/node_modules/deprecated/LICENSE delete mode 100644 node_modules/gulp/node_modules/gulp-util/.npmignore mode change 100644 => 100755 node_modules/gulp/node_modules/gulp-util/LICENSE delete mode 100644 node_modules/gulp/node_modules/gulp-util/lib/File.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/lib/beep.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/lib/colors.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/lib/date.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/lib/linefeed.js create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/.bin/dateformat create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-differ/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-differ/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-differ/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-uniq/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-uniq/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/array-uniq/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/beeper/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/beeper/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/beeper/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/license create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/.bin/has-ansi create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/.bin/strip-ansi create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/.bin/supports-color create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/ansi-styles/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/escape-string-regexp/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/escape-string-regexp/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/escape-string-regexp/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/escape-string-regexp/readme.md create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/has-ansi/readme.md create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/strip-ansi/readme.md create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/supports-color/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/supports-color/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/supports-color/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/supports-color/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/node_modules/supports-color/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/chalk/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/.npmignore rename node_modules/gulp/node_modules/{vinyl-fs => gulp-util/node_modules/dateformat}/.travis.yml (55%) create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/bin/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/get-stdin/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/get-stdin/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/get-stdin/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/license create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/.bin/indent-string create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/camelcase/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/camelcase/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/camelcase/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/map-obj/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/map-obj/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/node_modules/map-obj/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/camelcase-keys/readme.md create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/license create mode 120000 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/.bin/repeating create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/cli.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/license create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/node_modules/is-finite/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/node_modules/is-finite/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/node_modules/is-finite/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/node_modules/repeating/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/indent-string/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/readme.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/test/test_formats.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/test/test_isoutcdatetime.js rename node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/test/{ => weekofyear}/test_weekofyear.js (96%) rename node_modules/gulp/node_modules/gulp-util/node_modules/dateformat/test/{ => weekofyear}/test_weekofyear.sh (96%) rename node_modules/gulp/node_modules/gulp-util/node_modules/{lodash.template/node_modules/lodash._escapestringchar => lodash._reescape}/LICENSE.txt (83%) create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reescape/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reescape/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reescape/package.json rename node_modules/gulp/node_modules/gulp-util/node_modules/{lodash.template/node_modules/lodash.defaults/node_modules/lodash._objecttypes => lodash._reevaluate}/LICENSE.txt (83%) create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reevaluate/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reevaluate/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash._reevaluate/package.json rename node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/{lodash.escape/node_modules/lodash._escapehtmlchar => lodash._basecopy}/LICENSE.txt (83%) create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basecopy/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basecopy/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basecopy/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basetostring/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basetostring/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basetostring/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basetostring/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basevalues/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basevalues/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basevalues/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._basevalues/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._escapestringchar/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._escapestringchar/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._escapestringchar/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._isiterateecall/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._isiterateecall/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._isiterateecall/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash._isiterateecall/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/node_modules/lodash._objecttypes/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/node_modules/lodash._objecttypes/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/node_modules/lodash._objecttypes/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.defaults/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/node_modules/lodash._htmlescapes/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/node_modules/lodash._htmlescapes/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/node_modules/lodash._htmlescapes/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/node_modules/lodash._htmlescapes/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._reunescapedhtml/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._isnative/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._isnative/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._isnative/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._isnative/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/node_modules/lodash._objecttypes/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/node_modules/lodash._objecttypes/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/node_modules/lodash._objecttypes/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/node_modules/lodash._objecttypes/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash._shimkeys/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarguments/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarguments/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarguments/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarguments/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarray/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarray/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarray/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isarray/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isnative/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isnative/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isnative/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isnative/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/node_modules/lodash._objecttypes/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/node_modules/lodash._objecttypes/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/node_modules/lodash._objecttypes/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/node_modules/lodash._objecttypes/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.keys/node_modules/lodash.isobject/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.restparam/LICENSE.txt create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.restparam/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.restparam/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.restparam/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.values/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.values/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.values/index.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.values/package.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/README.md delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/lodash.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/lodash/package.json mode change 100644 => 100755 node_modules/gulp/node_modules/gulp-util/node_modules/multipipe/node_modules/duplexer2/example.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/object-assign/index.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/object-assign/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/object-assign/readme.md rename node_modules/gulp/node_modules/gulp-util/node_modules/{vinyl => replace-ext}/.npmignore (91%) rename node_modules/gulp/node_modules/gulp-util/{ => node_modules/replace-ext}/.travis.yml (70%) create mode 100755 node_modules/gulp/node_modules/gulp-util/node_modules/replace-ext/LICENSE create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/replace-ext/README.md rename node_modules/gulp/node_modules/gulp-util/{lib/replaceExtension.js => node_modules/replace-ext/index.js} (97%) create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/replace-ext/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/replace-ext/test/main.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/.jshintrc delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/.travis.yml delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/coverage.json delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/index.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.css delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov.info create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.npmignore rename node_modules/gulp/node_modules/{vinyl-fs/node_modules/glob-stream/node_modules/minimatch => gulp-util/node_modules/vinyl/node_modules/clone}/.travis.yml (69%) create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/LICENSE create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/README.md create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/clone.js create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/package.json create mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/test.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/perf/clone.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/File.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/cloneBuffer.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/inspectStream.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isBuffer.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isNull.js delete mode 100644 node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isStream.js delete mode 100644 node_modules/gulp/node_modules/liftoff/.travis.yml delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.eps delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.png delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.svg delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff.eps delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff.png delete mode 100644 node_modules/gulp/node_modules/liftoff/artwork/liftoff.svg create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.jshintrc delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.travis.yml delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/Gruntfile.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.npmignore delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/g.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/usr-local.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/LICENSE create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/inflight.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/test.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js rename node_modules/gulp/node_modules/{vinyl-fs/node_modules/glob-stream/node_modules/minimatch => liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion}/.npmignore (68%) rename node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/{ => node_modules/minimatch/node_modules/brace-expansion}/.travis.yml (71%) create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js rename node_modules/gulp/node_modules/{gulp-util/node_modules/vinyl/.jshintignore => liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore} (54%) create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js rename node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/{minimatch/node_modules/sigmund => once}/LICENSE (97%) create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/README.md create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/once.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/package.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/test/once.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/sync.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/globstar-match.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/mark.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/new-glob-optional-options.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/readme-issue.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/stat.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/README.md delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/lodash.js delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/package.json delete mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/test/findup-sync_test.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/pathfilter.js rename node_modules/gulp/node_modules/liftoff/node_modules/{findup-sync/test/fixtures/a.txt => resolve/test/pathfilter/deep_ref/main.js} (100%) rename node_modules/gulp/node_modules/liftoff/node_modules/{findup-sync/test/fixtures/a/b/bar.txt => resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js} (100%) rename node_modules/gulp/node_modules/liftoff/node_modules/{findup-sync/test/fixtures/a/foo.txt => resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js} (100%) create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json rename node_modules/gulp/node_modules/liftoff/node_modules/{findup-sync/test/fixtures/aaa.txt => resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js} (100%) create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence/aaa.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence/aaa/index.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence/aaa/main.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence/bbb.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/precedence/bbb/main.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/subdirs.js create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/resolve/test/subdirs/node_modules/a/package.json mode change 100644 => 100755 node_modules/gulp/node_modules/semver/bin/semver rename node_modules/gulp/node_modules/semver/{foot.js => foot.js.txt} (95%) rename node_modules/gulp/node_modules/semver/{head.js => head.js.txt} (92%) create mode 100644 node_modules/gulp/node_modules/semver/test/big-numbers.js create mode 100644 node_modules/gulp/node_modules/semver/test/major-minor-patch.js mode change 100644 => 120000 node_modules/gulp/node_modules/tildify/node_modules/.bin/user-home mode change 100644 => 100755 node_modules/gulp/node_modules/tildify/node_modules/user-home/cli.js create mode 100644 node_modules/gulp/node_modules/tildify/node_modules/user-home/license delete mode 100644 node_modules/gulp/node_modules/v8flags/.travis.yml delete mode 100644 node_modules/gulp/node_modules/v8flags/3.14.5.9.flags.json delete mode 100644 node_modules/gulp/node_modules/v8flags/fetch.js create mode 120000 node_modules/gulp/node_modules/v8flags/node_modules/.bin/user-home create mode 100755 node_modules/gulp/node_modules/v8flags/node_modules/user-home/cli.js create mode 100644 node_modules/gulp/node_modules/v8flags/node_modules/user-home/index.js create mode 100644 node_modules/gulp/node_modules/v8flags/node_modules/user-home/license create mode 100644 node_modules/gulp/node_modules/v8flags/node_modules/user-home/package.json create mode 100644 node_modules/gulp/node_modules/v8flags/node_modules/user-home/readme.md delete mode 100644 node_modules/gulp/node_modules/v8flags/test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/.editorconfig delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/.jshintrc delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/.npmignore mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/LICENSE mode change 100644 => 120000 node_modules/gulp/node_modules/vinyl-fs/node_modules/.bin/mkdirp mode change 100644 => 120000 node_modules/gulp/node_modules/vinyl-fs/node_modules/.bin/strip-bom rename node_modules/gulp/node_modules/{liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch => vinyl-fs/node_modules/defaults}/.npmignore (92%) create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/index.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/.npmignore rename node_modules/gulp/node_modules/vinyl-fs/node_modules/{glob-stream/node_modules/glob => defaults/node_modules/clone}/.travis.yml (69%) create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/clone.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/node_modules/clone/test.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/defaults/test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/.npmignore delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/.travis.yml mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/LICENSE delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/.npmignore create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/common.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/examples/g.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/examples/usr-local.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/.eslintrc create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/inflight.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/oh-my-glob.gif create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/sync.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/empty-set.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/error-callback.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/globstar-match.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/mark.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/negation-test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/new-glob-optional-options.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/readme-issue.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/root.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/stat.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/.editorconfig delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/.jshintrc delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/.npmignore delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/.travis.yml mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/node_modules/find-index/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/node_modules/find-index/index.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/node_modules/find-index/last.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/node_modules/find-index/package.json delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob2base/test/main.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/browser.js rename node_modules/gulp/node_modules/vinyl-fs/node_modules/{vinyl/.jshintignore => glob-stream/node_modules/minimatch/node_modules/brace-expansion/.npmignore} (54%) create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/.travis.yml create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/example.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/index.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/nested.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/order.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/pad.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/.swag delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/stuff/run.dmc delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/stuff/test.dmc delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/test.coffee delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/whatsgoingon/hey/isaidhey/whatsgoingon/test.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/fixtures/whatsgoingon/test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/test/main.js mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/LICENSE rename node_modules/gulp/node_modules/{gulp-util/node_modules/lodash.template/node_modules/lodash.defaults => vinyl-fs/node_modules/glob-watcher/node_modules/gaze/node_modules/globule/node_modules/lodash}/LICENSE.txt (86%) delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/LICENSE.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/README.md delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/lodash.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/package.json mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/mkdirp/bin/cmd.js mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/strip-bom/cli.js mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/ansi.txt mode change 100644 => 100755 node_modules/gulp/node_modules/vinyl-fs/node_modules/strip-bom/node_modules/is-utf8/utf8.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/.jshintrc delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/.npmignore delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/.travis.yml delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/coverage.json delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/index.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.css delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov.info create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.npmignore create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.travis.yml create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/LICENSE create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/README.md create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/clone.js create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json create mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/test.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/perf/clone.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/File.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/cloneBuffer.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/inspectStream.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isBuffer.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isNull.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isStream.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/dest.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16be.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16le.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf8.txt delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/fixtures/test.coffee delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/fixtures/wow/suchempty delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/spy.js delete mode 100644 node_modules/gulp/node_modules/vinyl-fs/test/src.js create mode 100644 test-sql/sqllogic/sqltest.zip rename {cordova => test/cordova}/alasql-cordova.js (100%) rename {cordova => test/cordova}/filestorage.js (100%) rename {cordova => test/cordova}/test.js (100%) rename {cordova => test/cordova}/test1.js (100%) rename {cordova => test/cordova}/test1.json (100%) delete mode 100644 testsql/sqllogic/README.md diff --git a/.gitignore b/.gitignore index be8a1b0c0a..353e73db3c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,2 @@ # MySQL demo database -test/world/world_innodb.sql -test/world/world.sql - -test/world/NeptunoCreacionMySQL.sql - -test-sql/* -test-sql \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 39edc6d08d..42febbf710 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 0.0.44 "Roma" (02.04.2015 - ...04.2015) * Added params to SQLite attached database: alasql('ATTACH SQLITE DATABASE a(?)',[event],cb); +* Root directory was cleaned ### 0.0.43 "The Wall" (25.03.2015 - 01.04.2015) * Created "develop" branch for git-flow diff --git a/README.md b/README.md index a276e52012..dd0362d6bf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Alasql.js - JavaScript SQL database library with support of localStorage, IndexedDB, and Excel -Version: 0.0.43 "The Wall" Date: April 1, 2015 [Change log](CHANGELOG.md), [Release plan](RELEASES.md) +Version: 0.0.44 "Roma" Date: April 5, 2015 [Change log](CHANGELOG.md), [Release plan](RELEASES.md) Alasql - '[à la SQL](http://en.wiktionary.org/wiki/%C3%A0_la)' - is a lightweight JavaScript SQL database designed to work in browser, Node.js, and Apache Cordova. It supports traditional SQL with some NoSQL functionality. Current version of Alasql can work in memory and use file, IndexedDB, and localStorage as a persistent storage. diff --git a/RELEASES.md b/RELEASES.md index 61740cc445..5bf62c9109 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -14,81 +14,7 @@ ## Next Releases: -### Version "Sapsan" 0.0.40 (25.01.2015) +To be defined -* MERGE -* Cordova Support -* Tests -* AUTOINCREMENT / IDENTITY -* SELECT INDEX, COLUMN, VALUE on column -* Bower.json -* Wikibooks SQL samples as tests - -### Version "Pacific Rim" 0.0.42 (01.02.2015) - -* If-then-else JISON problem -* UNION ORDER BY bug -* T-SQL compatibility and multiple SQL Tests -* Documentation -* API documentation with JsDoc -* WorkerJS for Node (primarily for test) - -### Version "Sigirya" 0.0.45 (05.02.2015) - -* package.json -* Datatypes + CONVERT -* Functions -* Constraint and Foreign Keys, indexes, Check, Default -* CONTINUE/BREAK/FOR/LOOP - -### Version "Elbrus" 0.0.50 (10.02.2015) - -* Transactions -* SET NOCOUNT - -### Version "Prague" 0.0.55 (20.02.2015) - -* PIVOT/UNPIVOT - -### Version "Manila" 0.0.60 (01.03.2015) - -* OVER PARTITION - -### Version "Vanilla" 0.0.63 (01.03.2015) - -* GROUP BY HIERARCHY, TOTAL, DETAIL - -### Version "Menlo Park" 0.0.65 (10.03.2015) - -* CREATE FUNCTION, CREATE PROCEDURE, EXEC -* Bugs -* Documentation - -### Version "Vorkuta" 0.0.70 (20.03.2015) - -* Fluent interface improvement -* Bugs -* Documentation - -### Version "San Diego" 0.0.75 (01.04.2015) - -* NeDB, MongoDB, Redis, Cassandra NoSQL -* Bugs -* Documentation - -### Version "Voronezh" 0.0.80 (10.04.2015) - -* Compatibility - -### Version "Rio de Janeiro" 0.0.85 (20.04.2015) -* Speed - -### Version "Quito" 0.0.90 (01.05.2015) -* Memory - -### Version "First Pancake" 0.1.0 (10.05.2015) - -* Bugs -* Speed, memory, and size optimization -* Compatibility: browsers, mobiles, SQL databases +### Version "Chess" 0.1.0 (10.04.2015) diff --git a/TODO.md b/TODO.md index 9d5b975f4b..ebc759675d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,88 @@ -# To do +# TO DO + +This file contanis unstructured ideas for future development of Alasql. + +## Ideas + + +### Version "Sapsan" 0.0.40 (25.01.2015) + +* MERGE +* Cordova Support +* Tests +* AUTOINCREMENT / IDENTITY +* SELECT INDEX, COLUMN, VALUE on column +* Bower.json +* Wikibooks SQL samples as tests + +### Version "Pacific Rim" 0.0.42 (01.02.2015) + +* If-then-else JISON problem +* UNION ORDER BY bug +* T-SQL compatibility and multiple SQL Tests +* Documentation +* API documentation with JsDoc +* WorkerJS for Node (primarily for test) + +### Version "Sigirya" 0.0.45 (05.02.2015) + +* package.json +* Datatypes + CONVERT +* Functions +* Constraint and Foreign Keys, indexes, Check, Default +* CONTINUE/BREAK/FOR/LOOP + +### Version "Elbrus" 0.0.50 (10.02.2015) + +* Transactions +* SET NOCOUNT + +### Version "Prague" 0.0.55 (20.02.2015) + +* PIVOT/UNPIVOT + +### Version "Manila" 0.0.60 (01.03.2015) + +* OVER PARTITION + +### Version "Vanilla" 0.0.63 (01.03.2015) + +* GROUP BY HIERARCHY, TOTAL, DETAIL + +### Version "Menlo Park" 0.0.65 (10.03.2015) + +* CREATE FUNCTION, CREATE PROCEDURE, EXEC +* Bugs +* Documentation + +### Version "Vorkuta" 0.0.70 (20.03.2015) + +* Fluent interface improvement +* Bugs +* Documentation + +### Version "San Diego" 0.0.75 (01.04.2015) + +* NeDB, MongoDB, Redis, Cassandra NoSQL +* Bugs +* Documentation + +### Version "Voronezh" 0.0.80 (10.04.2015) + +* Compatibility + +### Version "Rio de Janeiro" 0.0.85 (20.04.2015) +* Speed + +### Version "Quito" 0.0.90 (01.05.2015) +* Memory + +### Version "First Pancake" 0.1.0 (10.05.2015) + +* Bugs +* Speed, memory, and size optimization +* Compatibility: browsers, mobiles, SQL databases + ## Next Versions diff --git a/alasql-worker.js b/alasql-worker.js deleted file mode 100755 index 1d5e08899c..0000000000 --- a/alasql-worker.js +++ /dev/null @@ -1,101 +0,0 @@ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define([], factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - root.alasql = factory(); - } -}(this, function () { - -/** - Main procedure for worker - */ -function alasql(sql,params,cb){ - var id = alasql.lastid++; - alasql.buffer[id] = cb; - alasql.webworker.postMessage({id:id,sql:sql,params:params}); -}; - - -if (typeof importScripts === 'function') { - // Nothing -} else if(typeof exports != 'object') { - -alasql.worker = function(path, paths, cb) { -// var path; - if(path === true) path = undefined; - if (typeof path == "undefined") { - var sc = document.getElementsByTagName('script'); - for(var i=0;i 1) { - var sql = 'REQUIRE ' + paths.map(function(p){ - return '"'+p+'"'; - }).join(","); - alasql(sql,[],cb); - } - - } else if(path === false) { - delete alasql.webworker; - return; - }; -}; - -}; - - - -/* WebWorker */ -alasql.lastid = 0; -alasql.buffer = {}; - -alasql.worker(); - -return alasql; -})); - - -//# sourceMappingURL=alasql-worker.js.map \ No newline at end of file diff --git a/alasql-worker.js.map b/alasql-worker.js.map deleted file mode 100755 index d080a665ba..0000000000 --- a/alasql-worker.js.map +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 3, - "file": "alasql-worker.js", - "sources": [ - "src/99worker-start.js", - "src/99worker.js", - "src/99worker-finish.js" - ], - "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" -} \ No newline at end of file diff --git a/alasql-worker.min.js b/alasql-worker.min.js deleted file mode 100644 index 8f1c632630..0000000000 --- a/alasql-worker.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){function alasql(sql,params,cb){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}if(typeof importScripts==="function"){}else if(typeof exports!="object"){alasql.worker=function(path,paths,cb){if(path===true)path=undefined;if(typeof path=="undefined"){var sc=document.getElementsByTagName("script");for(var i=0;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}}alasql.lastid=0;alasql.buffer={};alasql.worker();return alasql}); \ No newline at end of file diff --git a/alasql.min.js b/alasql.min.js deleted file mode 100644 index 69de515ef3..0000000000 --- a/alasql.min.js +++ /dev/null @@ -1,8 +0,0 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){var alasql=function(sql,params,cb,scope){if(typeof importScripts!="function"&&alasql.webworker){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}else{if(arguments.length==0){return new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]})}else if(arguments.length==1&&typeof sql=="object"&&sql instanceof Array){var select=new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]});select.preparams=[sql];return select}else{if(typeof sql=="string"&&sql[0]=="#"&&typeof document=="object"){sql=document.querySelector(sql).textContent}else if(typeof sql=="object"&&sql instanceof HTMElement){sql=sql.textContent}else if(typeof sql=="function"){sql=sql.toString().slice(14,-3)}return alasql.exec(sql,params,cb,scope)}}};alasql.version="0.0.36";var parser=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,11],$V1=[1,6],$V2=[1,35],$V3=[1,61],$V4=[1,80],$V5=[1,70],$V6=[1,68],$V7=[1,78],$V8=[1,54],$V9=[1,57],$Va=[1,52],$Vb=[1,49],$Vc=[1,56],$Vd=[1,50],$Ve=[1,58],$Vf=[1,51],$Vg=[1,55],$Vh=[1,67],$Vi=[1,62],$Vj=[1,69],$Vk=[1,71],$Vl=[1,72],$Vm=[1,65],$Vn=[1,66],$Vo=[1,64],$Vp=[1,73],$Vq=[1,74],$Vr=[1,75],$Vs=[1,76],$Vt=[1,77],$Vu=[1,53],$Vv=[1,63],$Vw=[1,60],$Vx=[1,82],$Vy=[1,83],$Vz=[8,9,11,201],$VA=[8,9,11,201,205],$VB=[1,138],$VC=[1,139],$VD=[1,103],$VE=[1,114],$VF=[1,111],$VG=[1,110],$VH=[1,128],$VI=[1,124],$VJ=[1,125],$VK=[1,129],$VL=[1,130],$VM=[1,131],$VN=[1,132],$VO=[1,133],$VP=[1,134],$VQ=[1,135],$VR=[1,136],$VS=[1,137],$VT=[1,112],$VU=[1,113],$VV=[1,115],$VW=[1,116],$VX=[1,121],$VY=[1,122],$VZ=[1,117],$V_=[1,118],$V$=[1,119],$V01=[1,120],$V11=[1,123],$V21=[1,109],$V31=[1,108],$V41=[1,107],$V51=[1,127],$V61=[1,140],$V71=[1,151],$V81=[4,5],$V91=[8,9,11,65,97,124,125,135,136,137,138,144,201,205],$Va1=[1,167],$Vb1=[1,175],$Vc1=[1,174],$Vd1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Ve1=[1,206],$Vf1=[1,199],$Vg1=[4,5,64,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vh1=[2,74],$Vi1=[1,220],$Vj1=[4,5,64,75,78,79,88,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vk1=[1,236],$Vl1=[1,232],$Vm1=[1,233],$Vn1=[1,234],$Vo1=[1,235],$Vp1=[1,237],$Vq1=[1,238],$Vr1=[1,239],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,242],$Vv1=[1,243],$Vw1=[1,244],$Vx1=[1,245],$Vy1=[1,246],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,249],$VC1=[1,250],$VD1=[1,252],$VE1=[1,253],$VF1=[1,255],$VG1=[1,254],$VH1=[1,256],$VI1=[1,257],$VJ1=[1,258],$VK1=[1,259],$VL1=[2,193],$VM1=[1,263],$VN1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VO1=[2,251],$VP1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VQ1=[1,271],$VR1=[1,281],$VS1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VT1=[1,297],$VU1=[4,5,8,9,11,45,59,61,63,64,65,78,80,86,91,96,97,102,104,106,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,195,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,244,246,250,257,258,259,263,274,275,276,278,279,287,288,291,292,294,295,296,297,298,299,300,301,303,304,305,309,311,312,320,322,327,328,330,331,333,334,335,336,337,339,342,343,355],$VV1=[1,304],$VW1=[1,305],$VX1=[2,364],$VY1=[1,310],$VZ1=[8,9,11,61,201,205],$V_1=[2,416],$V$1=[1,321],$V02=[8,9,11,65,124,125,135,136,137,138,144,201,205],$V12=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22=[2,110],$V32=[1,349],$V42=[61,80],$V52=[8,9,11,61,65,191,201,205,228,246,258,274,275,278,279,291],$V62=[79,235,236],$V72=[1,414],$V82=[1,420],$V92=[1,421],$Va2=[1,431],$Vb2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,208,209,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vc2=[2,266],$Vd2=[1,438],$Ve2=[201,203,205],$Vf2=[61,322],$Vg2=[61,320,322],$Vh2=[1,445],$Vi2=[61,320],$Vj2=[4,5,96,190],$Vk2=[8,9,11,65,125,135,136,137,138,144,201,205],$Vl2=[8,9,11,65,91,97,124,125,135,136,137,138,144,201,205],$Vm2=[1,512],$Vn2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,201,205],$Vo2=[2,176],$Vp2=[1,514],$Vq2=[1,515],$Vr2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,149,150,201,205],$Vs2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vt2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vu2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vv2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vw2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vx2=[1,537],$Vy2=[61,65],$Vz2=[2,191],$VA2=[1,577],$VB2=[8,9,11,65,135,136,137,138,144,201,205],$VC2=[8,9,11,61,65,124,125,135,136,137,138,144,201,205],$VD2=[1,592],$VE2=[1,593],$VF2=[1,595],$VG2=[1,596],$VH2=[1,597],$VI2=[1,598],$VJ2=[1,599],$VK2=[1,600],$VL2=[1,601],$VM2=[1,602],$VN2=[1,606],$VO2=[1,617],$VP2=[8,9,11,61,124,201,203,205,355],$VQ2=[1,625],$VR2=[1,624],$VS2=[2,229],$VT2=[1,646],$VU2=[2,433],$VV2=[1,667],$VW2=[1,679],$VX2=[8,9,11,61,201,203,205,355],$VY2=[1,682],$VZ2=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V_2=[8,9,11,65,135,136,137,144,201,205],$V$2=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V03=[1,696],$V13=[1,698],$V23=[4,5,64,192,194,195,196,197],$V33=[8,9,11,201,203,205,355],$V43=[213,218],$V53=[1,738],$V63=[8,9,11,61,65,201,205],$V73=[1,754],$V83=[8,9,11,65,135,136,137,201,205],$V93=[1,773],$Va3=[1,774],$Vb3=[1,775],$Vc3=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$Vd3=[1,805],$Ve3=[1,818],$Vf3=[1,819],$Vg3=[1,817],$Vh3=[1,815],$Vi3=[1,821],$Vj3=[1,812],$Vk3=[1,813],$Vl3=[1,814],$Vm3=[1,816],$Vn3=[1,825],$Vo3=[1,830],$Vp3=[1,831],$Vq3=[1,832],$Vr3=[1,833],$Vs3=[78,86,274,275,276,278],$Vt3=[2,376],$Vu3=[1,838],$Vv3=[8,9,11,65,201,205],$Vw3=[1,851],$Vx3=[8,9,11,61,65,134,135,136,137,138,144,201,205],$Vy3=[1,868],$Vz3=[1,867],$VA3=[8,9,11,201,205,246,257,258,259],$VB3=[1,918],$VC3=[8,9,11,61,65,135,136,137,144,201,205],$VD3=[1,935];var parser={trace:function trace(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,SEMICOLON:9,AStatement:10,GO:11,ExplainStatement:12,EXPLAIN:13,QUERY:14,PLAN:15,Statement:16,If:17,AlterTable:18,AttachDatabase:19,CreateDatabase:20,CreateIndex:21,CreateTable:22,CreateView:23,Declare:24,Delete:25,DetachDatabase:26,DropDatabase:27,DropIndex:28,DropTable:29,DropView:30,Insert:31,RenameTable:32,Select:33,Merge:34,WithSelect:35,ShowCreateTable:36,ShowColumns:37,ShowDatabases:38,ShowIndex:39,ShowTables:40,TruncateTable:41,BeginTransaction:42,CommitTransaction:43,RollbackTransaction:44,EndTransaction:45,UseDatabase:46,Update:47,Help:48,JavaScript:49,Source:50,Assert:51,While:52,Continue:53,Break:54,BeginEnd:55,Print:56,Require:57,SetVariable:58,WITH:59,WithTablesList:60,COMMA:61,WithTable:62,AS:63,LPAR:64,RPAR:65,SelectClause:66,IntoClause:67,FromClause:68,WhereClause:69,GroupClause:70,OrderClause:71,LimitClause:72,UnionClause:73,SelectModifier:74,DISTINCT:75,TopClause:76,ResultColumns:77,UNIQUE:78,ALL:79,SELECT:80,VALUE:81,ROW:82,COLUMN:83,MATRIX:84,TEXTSTRING:85,INDEX:86,RECORDSET:87,TOP:88,NumValue:89,PERCENT:90,INTO:91,Table:92,FuncValue:93,ParamValue:94,VarValue:95,STRING:96,FROM:97,FromTablesList:98,FromTable:99,JoinTablesList:100,ApplyClause:101,CROSS:102,APPLY:103,OUTER:104,FromString:105,DOT:106,JoinTable:107,JoinMode:108,JoinTableAs:109,OnClause:110,JoinModeMode:111,NATURAL:112,JOIN:113,INNER:114,LEFT:115,RIGHT:116,FULL:117,SEMI:118,ANTI:119,ON:120,Expression:121,USING:122,ColumnsList:123,WHERE:124,GROUP:125,BY:126,GroupExpressionsList:127,HavingClause:128,GroupExpression:129,GROUPING:130,SETS:131,ROLLUP:132,CUBE:133,HAVING:134,UNION:135,EXCEPT:136,INTERSECT:137,ORDER:138,OrderExpressionsList:139,OrderExpression:140,DIRECTION:141,COLLATE:142,NOCASE:143,LIMIT:144,OffsetClause:145,OFFSET:146,ResultColumn:147,TDTH:148,TD:149,TH:150,NUMBER:151,StringValue:152,Star:153,STAR:154,Column:155,AggrValue:156,Op:157,LogicValue:158,NullValue:159,ExistsValue:160,CaseValue:161,CastClause:162,Json:163,NewClause:164,JAVASCRIPT:165,NEW:166,CAST:167,ColumnType:168,CONVERT:169,PrimitiveValue:170,CURRENT_TIMESTAMP:171,Aggregator:172,OverClause:173,OVER:174,OverPartitionClause:175,OverOrderByClause:176,PARTITION:177,SUM:178,COUNT:179,MIN:180,MAX:181,AVG:182,FIRST:183,LAST:184,AGGR:185,ARRAY:186,ExprList:187,TRUE:188,FALSE:189,NSTRING:190,NULL:191,AT:192,EXISTS:193,DOLLAR:194,COLON:195,QUESTION:196,BRAQUESTION:197,CASE:198,WhensList:199,ElseClause:200,END:201,When:202,WHEN:203,THEN:204,ELSE:205,LIKE:206,NOT_LIKE:207,PLUS:208,MINUS:209,SLASH:210,MODULO:211,CARET:212,ARROW:213,GT:214,GE:215,LT:216,LE:217,EQ:218,EQEQ:219,EQEQEQ:220,NE:221,NEEQEQ:222,NEEQEQEQ:223,CondOp:224,AllSome:225,AND:226,OR:227,NOT:228,IN:229,ColFunc:230,BETWEEN:231,NOT_BETWEEN:232,IS:233,DOUBLECOLON:234,SOME:235,ANY:236,UPDATE:237,SET:238,SetColumnsList:239,SetColumn:240,DELETE:241,INSERT:242,Into:243,VALUES:244,ValuesListsList:245,DEFAULT:246,ValuesList:247,Value:248,DateValue:249,CREATE:250,TABLE:251,IfNotExists:252,CreateTableDefClause:253,CreateTableOptionsClause:254,CreateTableOptions:255,CreateTableOption:256,ENGINE:257,AUTO_INCREMENT:258,CHARSET:259,TemporaryClause:260,TEMPORARY:261,TEMP:262,IF:263,ColumnDefsList:264,ConstraintsList:265,Constraint:266,ConstraintName:267,PrimaryKey:268,ForeignKey:269,UniqueKey:270,IndexKey:271,Check:272,CONSTRAINT:273,CHECK:274,PRIMARY:275,KEY:276,ColsList:277,FOREIGN:278,REFERENCES:279,OnForeignKeyClause:280,OnDeleteClause:281,OnUpdateClause:282,NO:283,ACTION:284,ColumnDef:285,ColumnConstraintsClause:286,ColumnConstraints:287,ENUM:288,ColumnConstraintsList:289,ColumnConstraint:290,IDENTITY:291,DROP:292,IfExists:293,ALTER:294,RENAME:295,TO:296,ADD:297,MODIFY:298,ATTACH:299,DATABASE:300,DETACH:301,AsClause:302,USE:303,SHOW:304,DATABASES:305,TABLES:306,COLUMNS:307,VIEW:308,HELP:309,ExpressionStatement:310,SOURCE:311,ASSERT:312,JsonObject:313,ATLBRA:314,JsonArray:315,JsonValue:316,JsonPrimitiveValue:317,LCUR:318,JsonPropertiesList:319,RCUR:320,JsonElementsList:321,RBRA:322,JsonProperty:323,OnOff:324,SetPropsList:325,SetProp:326,OFF:327,COMMIT:328,TRANSACTION:329,ROLLBACK:330,BEGIN:331,ElseStatement:332,WHILE:333,CONTINUE:334,BREAK:335,PRINT:336,REQUIRE:337,StringValuesList:338,DECLARE:339,DeclaresList:340,DeclareItem:341,TRUNCATE:342,MERGE:343,MergeInto:344,MergeUsing:345,MergeOn:346,MergeMatchedList:347,OutputClause:348,MergeMatched:349,MergeNotMatched:350,MATCHED:351,MergeMatchedAction:352,MergeNotMatchedAction:353,TARGET:354,OUTPUT:355,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",9:"SEMICOLON",11:"GO",13:"EXPLAIN",14:"QUERY",15:"PLAN",45:"EndTransaction",59:"WITH",61:"COMMA",63:"AS",64:"LPAR",65:"RPAR",75:"DISTINCT",78:"UNIQUE",79:"ALL",80:"SELECT",81:"VALUE",82:"ROW",83:"COLUMN",84:"MATRIX",85:"TEXTSTRING",86:"INDEX",87:"RECORDSET",88:"TOP",90:"PERCENT",91:"INTO",96:"STRING",97:"FROM",102:"CROSS",103:"APPLY",104:"OUTER",106:"DOT",112:"NATURAL",113:"JOIN",114:"INNER",115:"LEFT",116:"RIGHT",117:"FULL",118:"SEMI",119:"ANTI",120:"ON",122:"USING",124:"WHERE",125:"GROUP",126:"BY",130:"GROUPING",131:"SETS",132:"ROLLUP",133:"CUBE",134:"HAVING",135:"UNION",136:"EXCEPT",137:"INTERSECT",138:"ORDER",141:"DIRECTION",142:"COLLATE",143:"NOCASE",144:"LIMIT",146:"OFFSET",149:"TD",150:"TH",151:"NUMBER",154:"STAR",165:"JAVASCRIPT",166:"NEW",167:"CAST",169:"CONVERT",171:"CURRENT_TIMESTAMP",174:"OVER",177:"PARTITION",178:"SUM",179:"COUNT",180:"MIN",181:"MAX",182:"AVG",183:"FIRST",184:"LAST",185:"AGGR",186:"ARRAY",188:"TRUE",189:"FALSE",190:"NSTRING",191:"NULL",192:"AT",193:"EXISTS",194:"DOLLAR",195:"COLON",196:"QUESTION",197:"BRAQUESTION",198:"CASE",201:"END",203:"WHEN",204:"THEN",205:"ELSE",206:"LIKE",207:"NOT_LIKE",208:"PLUS",209:"MINUS",210:"SLASH",211:"MODULO",212:"CARET",213:"ARROW",214:"GT",215:"GE",216:"LT",217:"LE",218:"EQ",219:"EQEQ",220:"EQEQEQ",221:"NE",222:"NEEQEQ",223:"NEEQEQEQ",226:"AND",227:"OR",228:"NOT",229:"IN",231:"BETWEEN",232:"NOT_BETWEEN",233:"IS",234:"DOUBLECOLON",235:"SOME",236:"ANY",237:"UPDATE",238:"SET",241:"DELETE",242:"INSERT",244:"VALUES",246:"DEFAULT",249:"DateValue",250:"CREATE",251:"TABLE",257:"ENGINE",258:"AUTO_INCREMENT",259:"CHARSET",261:"TEMPORARY",262:"TEMP",263:"IF",273:"CONSTRAINT",274:"CHECK",275:"PRIMARY",276:"KEY",278:"FOREIGN",279:"REFERENCES",283:"NO",284:"ACTION",287:"ColumnConstraints",288:"ENUM",291:"IDENTITY",292:"DROP",294:"ALTER",295:"RENAME",296:"TO",297:"ADD",298:"MODIFY",299:"ATTACH",300:"DATABASE",301:"DETACH",303:"USE",304:"SHOW",305:"DATABASES",306:"TABLES",307:"COLUMNS",308:"VIEW",309:"HELP",311:"SOURCE",312:"ASSERT",314:"ATLBRA",318:"LCUR",320:"RCUR",322:"RBRA",327:"OFF",328:"COMMIT",329:"TRANSACTION",330:"ROLLBACK",331:"BEGIN",333:"WHILE",334:"CONTINUE",335:"BREAK",336:"PRINT",337:"REQUIRE",339:"DECLARE",342:"TRUNCATE",343:"MERGE",351:"MATCHED",354:"TARGET",355:"OUTPUT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,3],[7,1],[7,1],[12,2],[12,4],[10,1],[16,0],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[35,3],[60,3],[60,1],[62,5],[33,8],[66,4],[66,4],[66,4],[66,3],[74,1],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[76,2],[76,4],[76,3],[76,0],[67,0],[67,2],[67,2],[67,2],[67,2],[67,2],[68,2],[68,3],[68,0],[101,6],[101,7],[101,6],[101,7],[98,1],[98,3],[99,4],[99,5],[99,3],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[105,1],[92,3],[92,1],[100,2],[100,2],[100,1],[100,1],[107,3],[109,1],[109,2],[109,3],[109,2],[109,3],[109,4],[109,5],[109,1],[109,2],[109,3],[109,1],[109,2],[109,3],[108,1],[108,2],[111,1],[111,2],[111,2],[111,3],[111,2],[111,3],[111,2],[111,3],[111,2],[111,2],[111,2],[110,2],[110,2],[110,0],[69,0],[69,2],[70,0],[70,4],[127,1],[127,3],[129,5],[129,4],[129,4],[129,1],[128,0],[128,2],[73,0],[73,2],[73,3],[73,2],[73,2],[71,0],[71,3],[139,1],[139,3],[140,1],[140,2],[140,3],[140,4],[72,0],[72,3],[145,0],[145,2],[77,4],[77,2],[148,0],[148,2],[148,2],[148,4],[147,3],[147,2],[147,3],[147,2],[147,3],[147,2],[147,1],[153,5],[153,3],[153,1],[155,5],[155,3],[155,3],[155,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,3],[121,1],[49,1],[164,2],[164,2],[162,6],[162,8],[162,6],[162,8],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[156,5],[156,6],[156,6],[173,0],[173,4],[173,4],[173,5],[175,3],[176,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[93,4],[93,3],[187,1],[187,3],[89,1],[158,1],[158,1],[152,1],[152,1],[159,1],[95,2],[160,4],[94,2],[94,2],[94,1],[94,1],[161,5],[161,4],[199,2],[199,1],[202,4],[200,2],[200,0],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,5],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,6],[157,6],[157,3],[157,3],[157,2],[157,2],[157,2],[157,3],[157,5],[157,6],[157,5],[157,6],[157,4],[157,5],[157,3],[157,4],[157,3],[157,3],[157,3],[157,3],[230,1],[230,1],[230,4],[224,1],[224,1],[224,1],[224,1],[224,1],[224,1],[225,1],[225,1],[225,1],[47,6],[47,4],[239,1],[239,3],[240,3],[25,5],[25,3],[31,5],[31,5],[31,8],[31,4],[31,7],[243,0],[243,1],[245,3],[245,1],[245,1],[245,5],[245,3],[245,3],[247,1],[247,3],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[123,1],[123,3],[22,8],[22,4],[254,0],[254,1],[255,2],[255,1],[256,1],[256,3],[256,3],[256,3],[260,0],[260,1],[260,1],[252,0],[252,3],[253,3],[253,1],[253,2],[265,1],[265,3],[266,2],[266,2],[266,2],[266,2],[266,2],[267,0],[267,2],[272,4],[268,5],[269,11],[280,0],[280,2],[281,4],[282,4],[270,1],[271,5],[271,5],[277,1],[277,1],[277,3],[277,3],[264,1],[264,3],[285,3],[285,2],[285,1],[168,6],[168,4],[168,1],[168,4],[286,0],[286,1],[289,2],[289,1],[290,2],[290,7],[290,5],[290,1],[290,6],[290,1],[290,2],[290,1],[290,2],[290,1],[29,4],[293,0],[293,2],[18,6],[18,6],[18,6],[18,8],[18,6],[32,5],[19,4],[19,7],[19,6],[19,9],[26,3],[20,4],[20,6],[20,9],[20,6],[302,0],[302,2],[46,3],[46,2],[27,4],[27,5],[27,5],[21,8],[21,9],[28,3],[38,2],[38,4],[38,3],[38,5],[40,2],[40,4],[40,4],[40,6],[37,4],[37,6],[39,4],[39,6],[36,4],[36,6],[23,9],[23,6],[30,4],[48,2],[48,1],[310,1],[50,2],[51,2],[51,2],[51,4],[163,4],[163,2],[163,2],[163,2],[163,2],[163,1],[163,2],[163,2],[316,1],[316,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,3],[313,3],[313,4],[313,2],[315,2],[315,3],[315,1],[319,3],[319,1],[323,3],[323,3],[323,3],[321,3],[321,1],[58,3],[58,5],[58,6],[325,3],[325,2],[326,1],[326,1],[326,3],[324,1],[324,1],[43,2],[44,2],[42,2],[17,4],[17,3],[332,2],[52,3],[53,1],[54,1],[55,3],[56,2],[56,2],[57,2],[338,3],[338,1],[24,2],[340,1],[340,3],[341,3],[341,4],[341,5],[341,6],[41,3],[34,6],[344,1],[344,2],[345,2],[346,2],[347,2],[347,2],[347,1],[347,1],[349,4],[349,6],[352,1],[352,3],[350,5],[350,7],[350,7],[350,9],[350,7],[350,9],[353,3],[353,6],[353,3],[353,6],[348,0],[348,2],[348,5],[348,4],[348,7]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:if(yy.casesensitive)this.$=$$[$0];else this.$=$$[$0].toLowerCase();break;case 2:this.$=doubleq($$[$0].substr(1,$$[$0].length-2));break;case 3:return new yy.Statements({statements:$$[$0-1]});break;case 4:case 5:this.$=$$[$0-2];if($$[$0])$$[$0-2].push($$[$0]);break;case 6:case 7:case 56:case 88:case 113:case 114:case 149:case 164:case 246:case 263:case 323:case 336:case 337:case 341:case 349:case 388:case 389:case 497:case 502:case 522:case 524:case 538:case 539:this.$=[$$[$0]];break;case 8:this.$=$$[$0];$$[$0].explain=true;break;case 9:this.$=$$[$0];$$[$0].explain=true;break;case 10:this.$=$$[$0];if(yy.exists)this.$.exists=yy.exists;delete yy.exists;if(yy.queries)this.$.queries=yy.queries;delete yy.queries;break;case 11:case 63:case 74:case 83:case 144:case 145:case 147:case 155:case 157:case 162:case 170:case 172:case 225:case 266:case 361:case 364:case 376:case 381:case 382:case 416:this.$=undefined;break;case 54:this.$=new yy.WithSelect({withs:$$[$0-1],select:$$[$0]});break;case 55:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 57:this.$={name:$$[$0-4],select:$$[$0-1]};break;case 58:yy.extend(this.$,$$[$0-7]);yy.extend(this.$,$$[$0-6]);yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);this.$=$$[$0-7];break;case 59:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 60:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 61:this.$=new yy.Select({columns:$$[$0],all:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 62:this.$=new yy.Select({columns:$$[$0]});yy,extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 64:this.$={modifier:"VALUE"};break;case 65:this.$={modifier:"ROW"};break;case 66:this.$={modifier:"COLUMN"};break;case 67:this.$={modifier:"MATRIX"};break;case 68:this.$={modifier:"TEXTSTRING"};break;case 69:this.$={modifier:"INDEX"};break;case 70:this.$={modifier:"RECORDSET"};break;case 71:this.$={top:$$[$0]};break;case 72:this.$={top:$$[$0-1]};break;case 73:this.$={top:$$[$0-1],percent:true};break;case 75:case 229:case 383:case 384:this.$=undefined;break;case 76:case 77:case 78:case 79:this.$={into:$$[$0]};break;case 80:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();if(s[0]=="#"){this.$={into:new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){this.$={into:new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x4=="XLSX"||x4=="JSON"){this.$={into:new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}break;case 81:this.$={from:$$[$0]};break;case 82:this.$={from:[$$[$0-1]],joins:$$[$0]};break;case 84:this.$=new yy.Apply({select:$$[$0-2],applymode:"CROSS",as:$$[$0]});break;case 85:this.$=new yy.Apply({select:$$[$0-3],applymode:"CROSS",as:$$[$0]});break;case 86:this.$=new yy.Apply({select:$$[$0-2],applymode:"OUTER",as:$$[$0]});break;case 87:this.$=new yy.Apply({select:$$[$0-3],applymode:"OUTER",as:$$[$0]});break;case 89:case 150:case 324:case 390:case 391:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 90:this.$=$$[$0-2];this.$.as=$$[$0];break;case 91:this.$=$$[$0-3];this.$.as=$$[$0];break;case 92:this.$=$$[$0-1];this.$.as="default";break;case 93:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 94:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 95:case 154:case 186:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 209:case 219:case 220:case 221:case 222:case 223:case 224:case 265:case 312:case 313:case 314:case 315:case 316:case 317:case 377:case 402:case 404:case 471:case 472:case 473:case 474:case 475:case 476:case 480:case 482:case 483:case 492:case 503:case 504:this.$=$$[$0];break;case 96:case 100:case 103:case 106:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 97:case 101:case 104:case 107:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 98:case 99:case 102:case 105:this.$=$$[$0];$$[$0].as="default";break;case 108:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();var r;if(s[0]=="#"){r=new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){r=new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x4=="XLSX"||x4=="JSON"){r=new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else{throw new Error("Unknown string in FROM clause")};this.$=r;break;case 109:this.$=new yy.Table({databaseid:$$[$0-2],tableid:$$[$0]});break;case 110:this.$=new yy.Table({tableid:$$[$0]});break;case 111:case 112:this.$=$$[$0-1];$$[$0-1].push($$[$0]);break;case 115:this.$=new yy.Join($$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 116:this.$={table:$$[$0]};break;case 117:this.$={table:$$[$0-1],as:$$[$0]};break;case 118:this.$={table:$$[$0-2],as:$$[$0]};break;case 119:this.$={param:$$[$0-1],as:$$[$0]};break;case 120:this.$={param:$$[$0-2],as:$$[$0]};break;case 121:this.$={select:$$[$0-3],as:$$[$0]};break;case 122:this.$={select:$$[$0-4],as:$$[$0]};break;case 123:this.$={funcid:$$[$0],as:"default"};break;case 124:this.$={funcid:$$[$0-1],as:$$[$0]};break;case 125:this.$={funcid:$$[$0-2],as:$$[$0]};break;case 126:this.$={variable:$$[$0],as:"default"};break;case 127:this.$={variable:$$[$0-1],as:$$[$0]};break;case 128:this.$={variable:$$[$0-2],as:$$[$0]};break;case 129:this.$={joinmode:$$[$0]};break;case 130:this.$={joinmode:$$[$0-1],natural:true};break;case 131:case 132:this.$="INNER";break;case 133:case 134:this.$="LEFT";break;case 135:case 136:this.$="RIGHT";break;case 137:case 138:this.$="OUTER";break;case 139:this.$="SEMI";break;case 140:this.$="ANTI";break;case 141:this.$="CROSS";break;case 142:this.$={on:$$[$0]};break;case 143:case 534:this.$={using:$$[$0]};break;case 146:this.$={where:new yy.Expression({expression:$$[$0]})};break;case 148:this.$={group:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 151:this.$=new yy.GroupExpression({type:"GROUPING SETS",group:$$[$0-1]});break;case 152:this.$=new yy.GroupExpression({type:"ROLLUP",group:$$[$0-1]});break;case 153:this.$=new yy.GroupExpression({type:"CUBE",group:$$[$0-1]});break;case 156:this.$={having:$$[$0]};break;case 158:this.$={union:$$[$0]};break;case 159:this.$={unionall:$$[$0]};break;case 160:this.$={except:$$[$0]};break;case 161:this.$={intersect:$$[$0]};break;case 163:this.$={order:$$[$0]};break;case 165:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 166:this.$=new yy.Expression({expression:$$[$0],direction:"ASC"});break;case 167:this.$=new yy.Expression({expression:$$[$0-1],direction:$$[$0].toUpperCase()});break;case 168:this.$=new yy.Expression({expression:$$[$0-2],direction:"ASC",nocase:true});break;case 169:this.$=new yy.Expression({expression:$$[$0-3],direction:$$[$0].toUpperCase(),nocase:true});break;case 171:this.$={limit:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 173:this.$={offset:$$[$0]};break;case 174:yy.extend($$[$0-1],$$[$0]);$$[$0-3].push($$[$0-1]);this.$=$$[$0-3];break;case 175:yy.extend($$[$0-1],$$[$0]);this.$=[$$[$0-1]];break;case 176:this.$=undefined;break;case 177:this.$={td:$$[$0]};break;case 178:this.$={th:$$[$0]};break;case 179:this.$={th:$$[$0-2],td:$$[$0]};break;case 180:case 182:case 184:$$[$0-2].as=$$[$0];this.$=$$[$0-2];break;case 181:case 183:case 185:$$[$0-1].as=$$[$0];this.$=$$[$0-1];break;case 187:this.$=new yy.Column({columid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 188:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 189:this.$=new yy.Column({columnid:$$[$0]});break;case 190:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 191:case 192:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 193:this.$=new yy.Column({columnid:$$[$0]});break;case 208:this.$=new yy.Json({value:$$[$0]});break;case 210:if(!yy.queries)yy.queries=[];yy.queries.push($$[$0-1]);$$[$0-1].queriesidx=yy.queries.length;this.$=$$[$0-1];break;case 211:this.$=$$[$0];break;case 212:this.$=new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});break;case 213:this.$=new yy.FuncValue({funcid:$$[$0],newid:true});break;case 214:this.$=$$[$0];yy.extend(this.$,{newid:true});break;case 215:this.$=new yy.Convert({expression:$$[$0-3]});yy.extend(this.$,$$[$0-1]);break;case 216:this.$=new yy.Convert({expression:$$[$0-5],style:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 217:this.$=new yy.Convert({expression:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 218:this.$=new yy.Convert({expression:$$[$0-3],style:$$[$0-1]});yy.extend(this.$,$$[$0-5]);break;case 226:this.$=new yy.AggrValue({aggregatorid:$$[$0-4].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 227:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],distinct:true,over:$$[$0]});break;case 228:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 230:case 231:this.$=new yy.Over;yy.extend(this.$,$$[$0-1]);break;case 232:this.$=new yy.Over;yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 233:this.$={partition:$$[$0]};break;case 234:this.$={order:$$[$0]};break;case 235:this.$="SUM";break;case 236:this.$="COUNT";break;case 237:this.$="MIN";break;case 238:this.$="MAX";break;case 239:this.$="AVG";break;case 240:this.$="FIRST";break;case 241:this.$="LAST";break;case 242:this.$="AGGR";break;case 243:this.$="ARRAY";break;case 244:if(alasql.aggr[$$[$0-3]]){this.$=new yy.AggrValue({aggregatorid:"REDUCE",funcid:$$[$0-3],expression:$$[$0-1].pop()})}else{this.$=new yy.FuncValue({funcid:$$[$0-3],args:$$[$0-1]})};break;case 245:this.$=new yy.FuncValue({funcid:$$[$0-2]});break;case 247:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 248:this.$=new yy.NumValue({value:+$$[$0]});break;case 249:this.$=new yy.LogicValue({value:true});break;case 250:this.$=new yy.LogicValue({value:false});break;case 251:this.$=new yy.StringValue({value:$$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 252:this.$=new yy.StringValue({value:$$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 253:this.$=new yy.NullValue({value:undefined});break;case 254:this.$=new yy.VarValue({variable:$$[$0]});break;case 255:if(!yy.exists)yy.exists=[];this.$=new yy.ExistsValue({value:$$[$0-1],existsidx:yy.exists.length});yy.exists.push($$[$0-1]);break;case 256:case 257:this.$=new yy.ParamValue({param:$$[$0]});break;case 258:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++});break;case 259:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++,array:true});break;case 260:this.$=new yy.CaseValue({expression:$$[$0-3],whens:$$[$0-2],elses:$$[$0-1]});break;case 261:this.$=new yy.CaseValue({whens:$$[$0-2],elses:$$[$0-1]}); -break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case 264:this.$={when:$$[$0-2],then:$$[$0]};break;case 267:this.$=new yy.Op({left:$$[$0-2],op:"LIKE",right:$$[$0]});break;case 268:this.$=new yy.Op({left:$$[$0-2],op:"NOT LIKE",right:$$[$0]});break;case 269:this.$=new yy.Op({left:$$[$0-2],op:"+",right:$$[$0]});break;case 270:this.$=new yy.Op({left:$$[$0-2],op:"-",right:$$[$0]});break;case 271:this.$=new yy.Op({left:$$[$0-2],op:"*",right:$$[$0]});break;case 272:this.$=new yy.Op({left:$$[$0-2],op:"/",right:$$[$0]});break;case 273:this.$=new yy.Op({left:$$[$0-2],op:"%",right:$$[$0]});break;case 274:this.$=new yy.Op({left:$$[$0-2],op:"^",right:$$[$0]});break;case 275:case 276:case 278:this.$=new yy.Op({left:$$[$0-2],op:"->",right:$$[$0]});break;case 277:this.$=new yy.Op({left:$$[$0-4],op:"->",right:$$[$0-1]});break;case 279:this.$=new yy.Op({left:$$[$0-2],op:">",right:$$[$0]});break;case 280:this.$=new yy.Op({left:$$[$0-2],op:">=",right:$$[$0]});break;case 281:this.$=new yy.Op({left:$$[$0-2],op:"<",right:$$[$0]});break;case 282:this.$=new yy.Op({left:$$[$0-2],op:"<=",right:$$[$0]});break;case 283:this.$=new yy.Op({left:$$[$0-2],op:"=",right:$$[$0]});break;case 284:this.$=new yy.Op({left:$$[$0-2],op:"==",right:$$[$0]});break;case 285:this.$=new yy.Op({left:$$[$0-2],op:"===",right:$$[$0]});break;case 286:this.$=new yy.Op({left:$$[$0-2],op:"!=",right:$$[$0]});break;case 287:this.$=new yy.Op({left:$$[$0-2],op:"!==",right:$$[$0]});break;case 288:this.$=new yy.Op({left:$$[$0-2],op:"!===",right:$$[$0]});break;case 289:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 290:this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1]});break;case 291:this.$=new yy.Op({left:$$[$0-2],op:"AND",right:$$[$0]});break;case 292:this.$=new yy.Op({left:$$[$0-2],op:"OR",right:$$[$0]});break;case 293:this.$=new yy.UniOp({op:"NOT",right:$$[$0]});break;case 294:this.$=new yy.UniOp({op:"-",right:$$[$0]});break;case 295:this.$=new yy.UniOp({op:"+",right:$$[$0]});break;case 296:this.$=new yy.UniOp({right:$$[$0-1]});break;case 297:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 298:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 299:this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1]});break;case 300:this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1]});break;case 301:this.$=new yy.Op({left:$$[$0-3],op:"IN",right:[]});break;case 302:this.$=new yy.Op({left:$$[$0-4],op:"NOT IN",right:[]});break;case 303:this.$=new yy.Op({left:$$[$0-2],op:"IN",right:$$[$0]});break;case 304:this.$=new yy.Op({left:$$[$0-3],op:"NOT IN",right:$$[$0]});break;case 305:this.$=new yy.Op({left:$$[$0-2],op:"BETWEEN",right:$$[$0]});break;case 306:this.$=new yy.Op({left:$$[$0-2],op:"NOT BETWEEN",right:$$[$0]});break;case 307:this.$=new yy.Op({op:"IS",left:$$[$0-2],right:$$[$0]});break;case 308:this.$=new yy.Convert({expression:$$[$0-2]});yy.extend(this.$,$$[$0]);break;case 309:case 310:this.$=$$[$0];break;case 311:this.$=$$[$0-1];break;case 318:this.$="ALL";break;case 319:this.$="SOME";break;case 320:this.$="ANY";break;case 321:this.$=new yy.Update({table:$$[$0-4],columns:$$[$0-2],where:$$[$0]});break;case 322:this.$=new yy.Update({table:$$[$0-2],columns:$$[$0]});break;case 325:this.$=new yy.SetColumn({columnid:$$[$0-2],expression:$$[$0]});break;case 326:this.$=new yy.Delete({table:$$[$0-2],where:$$[$0]});break;case 327:this.$=new yy.Delete({table:$$[$0]});break;case 328:this.$=new yy.Insert({into:$$[$0-2],values:$$[$0]});break;case 329:this.$=new yy.Insert({into:$$[$0-2],"default":true});break;case 330:this.$=new yy.Insert({into:$$[$0-5],columns:$$[$0-3],values:$$[$0]});break;case 331:this.$=new yy.Insert({into:$$[$0-1],select:$$[$0]});break;case 332:this.$=new yy.Insert({into:$$[$0-4],columns:$$[$0-2],select:$$[$0]});break;case 335:this.$=[$$[$0-1]];break;case 338:this.$=$$[$0-4];$$[$0-4].push($$[$0-1]);break;case 339:case 340:case 342:case 350:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 351:this.$=new yy.CreateTable({table:$$[$0-4]});yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-2]);break;case 352:this.$=new yy.CreateTable({table:$$[$0]});break;case 362:case 363:this.$={temporary:true};break;case 365:this.$={ifnotexists:true};break;case 366:this.$={columns:$$[$0-2],constraints:$$[$0]};break;case 367:this.$={columns:$$[$0]};break;case 368:this.$={as:$$[$0]};break;case 369:case 392:this.$=[$$[$0]];break;case 370:case 393:case 496:case 501:case 521:case 525:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 371:case 372:case 373:case 374:case 375:$$[$0].constraintid=$$[$0-1];this.$=$$[$0];break;case 378:this.$={type:"CHECK",expression:$$[$0-1]};break;case 379:this.$={type:"PRIMARY KEY",columns:$$[$0-1]};break;case 380:this.$={type:"FOREIGN KEY",columns:$$[$0-7],fktableid:$$[$0-4],fkcolumns:$$[$0-2]};break;case 394:this.$=new yy.ColumnDef({columnid:$$[$0-2]});yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 395:this.$=new yy.ColumnDef({columnid:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 396:this.$=new yy.ColumnDef({columnid:$$[$0],dbtypeid:""});break;case 397:this.$={dbtypeid:$$[$0-5],dbsize:+$$[$0-3],dbprecision:+$$[$0-1]};break;case 398:this.$={dbtypeid:$$[$0-3],dbsize:+$$[$0-1]};break;case 399:this.$={dbtypeid:$$[$0]};break;case 400:this.$={dbtypeid:"ENUM",enumvalues:$$[$0-1]};break;case 401:this.$=undefined;break;case 403:yy.extend($$[$0-1],$$[$0]);this.$=$$[$0-1];break;case 405:this.$={primarykey:true};break;case 406:case 407:this.$={foreignkey:{tableid:$$[$0-3],columnid:$$[$0-1]}};break;case 408:this.$={auto_increment:true};break;case 409:this.$={identity:[$$[$0-3],$$[$0-1]]};break;case 410:this.$={identity:[1,1]};break;case 411:this.$={"default":$$[$0]};break;case 412:this.$={"null":true};break;case 413:this.$={notnull:true};break;case 414:this.$=$$[$0];break;case 415:this.$=new yy.DropTable({table:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 417:this.$={ifexists:true};break;case 418:this.$=new yy.AlterTable({table:$$[$0-3],renameto:$$[$0]});break;case 419:this.$=new yy.AlterTable({table:$$[$0-3],addcolumn:$$[$0]});break;case 420:this.$=new yy.AlterTable({table:$$[$0-3],modifycolumn:$$[$0]});break;case 421:this.$=new yy.AlterTable({table:$$[$0-5],renamecolumn:$$[$0-2],to:$$[$0]});break;case 422:this.$=new yy.AlterTable({table:$$[$0-3],dropcolumn:$$[$0]});break;case 423:this.$=new yy.AlterTable({table:$$[$0-2],renameto:$$[$0]});break;case 424:this.$=new yy.AttachDatabase({databaseid:$$[$0],engineid:$$[$0-2].toUpperCase()});break;case 425:this.$=new yy.AttachDatabase({databaseid:$$[$0-3],engineid:$$[$0-5].toUpperCase(),args:$$[$0-1]});break;case 426:this.$=new yy.AttachDatabase({databaseid:$$[$0-2],engineid:$$[$0-4].toUpperCase(),as:$$[$0]});break;case 427:this.$=new yy.AttachDatabase({databaseid:$$[$0-5],engineid:$$[$0-7].toUpperCase(),as:$$[$0],args:$$[$0-3]});break;case 428:this.$=new yy.DetachDatabase({databaseid:$$[$0]});break;case 429:this.$=new yy.CreateDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0]);break;case 430:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),databaseid:$$[$0-1],as:$$[$0]});yy.extend(this.$,$$[$0-2]);break;case 431:this.$=new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(),databaseid:$$[$0-4],args:$$[$0-2],as:$$[$0]});yy.extend(this.$,$$[$0-5]);break;case 432:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),as:$$[$0],args:[$$[$0-1]]});yy.extend(this.$,$$[$0-2]);break;case 433:this.$=undefined;break;case 434:case 467:case 485:case 488:case 505:this.$=$$[$0-1];break;case 435:case 436:this.$=new yy.UseDatabase({databaseid:$$[$0]});break;case 437:this.$=new yy.DropDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 438:case 439:this.$=new yy.DropDatabase({databaseid:$$[$0],engineid:$$[$0-3].toUpperCase()});yy.extend(this.$,$$[$0-1]);break;case 440:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1]});break;case 441:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1],unique:true});break;case 442:this.$=new yy.DropIndex({indexid:$$[$0]});break;case 443:this.$=new yy.ShowDatabases;break;case 444:this.$=new yy.ShowDatabases({like:$$[$0]});break;case 445:this.$=new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase()});break;case 446:this.$=new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase(),like:$$[$0]});break;case 447:this.$=new yy.ShowTables;break;case 448:this.$=new yy.ShowTables({like:$$[$0]});break;case 449:this.$=new yy.ShowTables({databaseid:$$[$0]});break;case 450:this.$=new yy.ShowTables({like:$$[$0],databaseid:$$[$0-2]});break;case 451:this.$=new yy.ShowColumns({table:$$[$0]});break;case 452:this.$=new yy.ShowColumns({table:$$[$0-2],databaseid:$$[$0]});break;case 453:this.$=new yy.ShowIndex({table:$$[$0]});break;case 454:this.$=new yy.ShowIndex({table:$$[$0-2],databaseid:$$[$0]});break;case 455:this.$=new yy.ShowCreateTable({table:$$[$0]});break;case 456:this.$=new yy.ShowCreateTable({table:$$[$0-2],databaseid:$$[$0]});break;case 457:this.$=new yy.CreateTable({table:$$[$0-5],view:true,select:$$[$0],viewcolumns:$$[$0-3]});yy.extend(this.$,$$[$0-6]);break;case 458:this.$=new yy.CreateTable({table:$$[$0-2],view:true,select:$$[$0]});break;case 459:this.$=new yy.DropTable({table:$$[$0],view:true});yy.extend(this.$,$$[$0-1]);break;case 460:this.$=new yy.Help({subject:$$[$0].value.toUpperCase()});break;case 461:this.$=new yy.Help;break;case 462:this.$=new yy.ExpressionStatement({expression:$$[$0]});break;case 463:this.$=new yy.Source({url:$$[$0].value});break;case 464:this.$=new yy.Assert({value:$$[$0]});break;case 465:this.$=new yy.Assert({value:$$[$0].value});break;case 466:this.$=new yy.Assert({value:$$[$0],message:$$[$0-2]});break;case 468:case 479:case 481:this.$=$$[$0].value;break;case 469:case 477:this.$=+$$[$0].value;break;case 470:this.$=!!$$[$0].value;break;case 478:this.$=""+$$[$0].value;break;case 484:this.$=$$[$0-1];break;case 486:case 489:this.$=$$[$0-2];break;case 487:this.$={};break;case 490:this.$=[];break;case 491:yy.extend($$[$0-2],$$[$0]);this.$=$$[$0-2];break;case 493:this.$={};this.$[$$[$0-2].substr(1,$$[$0-2].length-2)]=$$[$0];break;case 494:case 495:this.$={};this.$[$$[$0-2]]=$$[$0];break;case 498:this.$=new yy.SetVariable({variable:$$[$0-1].toLowerCase(),value:$$[$0]});break;case 499:this.$=new yy.SetVariable({variable:$$[$0-2],expression:$$[$0]});break;case 500:this.$=new yy.SetVariable({variable:$$[$0-3],props:$$[$0-2],expression:$$[$0]});break;case 506:this.$=true;break;case 507:this.$=false;break;case 508:this.$=new yy.CommitTransaction;break;case 509:this.$=new yy.RollbackTransaction;break;case 510:this.$=new yy.BeginTransaction;break;case 511:this.$=new yy.If({expression:$$[$0-2],thenstat:$$[$0-1],elsestat:$$[$0]});if($$[$0-1].exists)this.$.exists=$$[$0-1].exists;if($$[$0-1].queries)this.$.queries=$$[$0-1].queries;break;case 512:this.$=new yy.If({expression:$$[$0-1],thenstat:$$[$0]});break;case 513:this.$=$$[$0];break;case 514:this.$=new yy.While({expression:$$[$0-1],loopstat:$$[$0]});if($$[$0].exists)this.$.exists=$$[$0].exists;if($$[$0].queries)this.$.queries=$$[$0].queries;break;case 515:this.$=new yy.Continue;break;case 516:this.$=new yy.Break;break;case 517:this.$=new yy.BeginEnd({statements:$$[$0-1]});break;case 518:case 519:this.$=new yy.Print({statement:$$[$0]});break;case 520:this.$=new yy.Require({paths:$$[$0]});break;case 523:this.$=new yy.Declare({declares:$$[$0]});break;case 526:this.$={variable:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 527:this.$={variable:$$[$0-2]};yy.extend(this.$,$$[$0]);break;case 528:this.$={variable:$$[$0-3],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 529:this.$={variable:$$[$0-4],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 530:this.$=new yy.TruncateTable({table:$$[$0]});break;case 531:this.$=new yy.Merge;yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 532:case 533:this.$={into:$$[$0]};break;case 535:this.$={on:$$[$0]};break;case 540:this.$={matched:true,action:$$[$0]};break;case 541:this.$={matched:true,expr:$$[$0-2],action:$$[$0]};break;case 542:this.$={"delete":true};break;case 543:this.$={update:$$[$0]};break;case 544:case 545:this.$={matched:false,bytarget:true,action:$$[$0]};break;case 546:case 547:this.$={matched:false,bytarget:true,expr:$$[$0-2],action:$$[$0]};break;case 548:this.$={matched:false,bysource:true,action:$$[$0]};break;case 549:this.$={matched:false,bysource:true,expr:$$[$0-2],action:$$[$0]};break;case 550:this.$={insert:true,values:$$[$0]};break;case 551:this.$={insert:true,values:$$[$0],columns:$$[$0-3]};break;case 552:this.$={insert:true,defaultvalues:true};break;case 553:this.$={insert:true,defaultvalues:true,columns:$$[$0-3]};break;case 555:this.$={output:{columns:$$[$0]}};break;case 556:this.$={output:{columns:$$[$0-3],intovar:$$[$0]}};break;case 557:this.$={output:{columns:$$[$0-2],intotable:$$[$0]}};break;case 558:this.$={output:{columns:$$[$0-5],intotable:$$[$0-3],intocolumns:$$[$0-1]}};break}},table:[o([8,9,11],$V0,{6:1,7:2,10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{1:[3]},{8:[1,81],9:$Vx,11:$Vy},o($Vz,[2,6]),o($Vz,[2,7]),o($VA,[2,10]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:84,14:[1,85],45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,12]),o($VA,[2,13]),o($VA,[2,14]),o($VA,[2,15]),o($VA,[2,16]),o($VA,[2,17]),o($VA,[2,18]),o($VA,[2,19]),o($VA,[2,20]),o($VA,[2,21]),o($VA,[2,22]),o($VA,[2,23]),o($VA,[2,24]),o($VA,[2,25]),o($VA,[2,26]),o($VA,[2,27]),o($VA,[2,28]),o($VA,[2,29]),o($VA,[2,30]),o($VA,[2,31]),o($VA,[2,32]),o($VA,[2,33]),o($VA,[2,34]),o($VA,[2,35]),o($VA,[2,36]),o($VA,[2,37]),o($VA,[2,38]),o($VA,[2,39]),o($VA,[2,40]),o($VA,[2,41]),o($VA,[2,42]),o($VA,[2,43]),o($VA,[2,44]),o($VA,[2,45]),o($VA,[2,46]),o($VA,[2,47]),o($VA,[2,48]),o($VA,[2,49]),o($VA,[2,50]),o($VA,[2,51]),o($VA,[2,52]),o($VA,[2,53]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:86,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{251:[1,141]},{3:142,4:$VB,5:$VC},{3:144,4:$VB,5:$VC,78:[1,146],86:[1,145],251:[1,147],300:[1,143],308:[1,148]},{192:$V71,340:149,341:150},{97:[1,152]},{300:[1,153]},{3:155,4:$VB,5:$VC,86:[1,156],251:[1,157],300:[1,154],308:[1,158]},o($V81,[2,333],{243:159,91:[1,160]}),{251:[1,161]},o($V91,[2,75],{67:162,91:[1,163]}),{3:173,4:$VB,5:$VC,64:$Va1,91:[1,166],92:168,93:170,94:169,95:171,96:$Vb1,99:165,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01,344:164},{3:178,4:$VB,5:$VC,60:176,62:177},{3:182,4:$VB,5:$VC,86:[1,183],250:[1,179],305:[1,181],306:[1,184],307:[1,180]},{251:[1,185]},o([9,11,201],$V0,{10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,7:187,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,329:[1,186],330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{329:[1,188]},{329:[1,189]},{3:191,4:$VB,5:$VC,300:[1,190]},{3:193,4:$VB,5:$VC,92:192},o($VA,[2,461],{152:194,96:$VE,190:$VV}),o($Vd1,[2,212]),{96:$VE,152:195,190:$VV},{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:[1,198],151:$VF,152:201,158:202,159:203,163:196,170:197,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:208,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,515]),o($VA,[2,516]),{3:106,4:$VB,5:$VC,33:209,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:211,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,310:210,313:126,314:$V51,318:$V61},{96:$VE,152:213,190:$VV,338:212},{3:214,4:$VB,5:$VC,192:[1,215]},o($Vg1,$Vh1,{76:219,75:[1,216],78:[1,217],79:[1,218],88:$Vi1}),o($Vj1,[2,63],{81:[1,221],82:[1,222],83:[1,223],84:[1,224],85:[1,225],86:[1,226],87:[1,227]}),{1:[2,3]},o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:228,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:229,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,8]),{15:[1,230]},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:231,224:251,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vd1,[2,194]),o($Vd1,[2,195]),o($Vd1,[2,196]),o($Vd1,[2,197]),o($Vd1,[2,198]),o($Vd1,[2,199]),o($Vd1,[2,200]),o($Vd1,[2,201]),o($Vd1,[2,202]),o($Vd1,[2,203]),o($Vd1,[2,204]),o($Vd1,[2,205]),o($Vd1,[2,206]),o($Vd1,[2,207]),o($Vd1,[2,208]),o($Vd1,[2,209]),{3:106,4:$VB,5:$VC,33:260,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:261,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,211]),{64:[1,262]},o($Vd1,$VL1,{64:$VM1,106:[1,264]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:265,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:266,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:267,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,189]),o([4,5,8,9,11,45,59,61,63,64,65,80,90,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,146,149,150,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,257,258,259,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,314,318,320,322,328,330,331,333,334,335,336,337,339,342,343,355],[2,248]),o($VN1,[2,249]),o($VN1,[2,250]),o($VN1,$VO1),o($VN1,[2,252]),o($VN1,[2,253]),{3:268,4:$VB,5:$VC},{3:269,4:$VB,5:$VC},o($VP1,[2,258]),o($VP1,[2,259]),{3:270,4:$VB,5:$VC,64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},{64:[1,277]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:278,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,199:279,202:280,203:$VR1,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,282]},{64:[1,283]},o($VS1,[2,472]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,315:284,316:287,317:289,318:$V61,321:285,322:[1,286]},{3:299,4:$VB,5:$VC,93:300},{64:[2,235]},{64:[2,236]},{64:[2,237]},{64:[2,238]},{64:[2,239]},{64:[2,240]},{64:[2,241]},{64:[2,242]},{64:[2,243]},o($VU1,[2,1]),o($VU1,[2,2]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,319:301,320:[1,302],323:303},{3:193,4:$VB,5:$VC,92:307},{300:[1,308]},o($V81,$VX1,{252:309,263:$VY1}),{300:[1,311]},{3:312,4:$VB,5:$VC},{86:[1,313]},o($V81,$VX1,{252:314,263:$VY1}),o($V81,$VX1,{252:315,263:$VY1}),o($VA,[2,523],{61:[1,316]}),o($VZ1,[2,524]),{3:317,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:318},{3:319,4:$VB,5:$VC},o($V81,$V_1,{293:320,263:$V$1}),{300:[1,322]},{3:323,4:$VB,5:$VC},o($V81,$V_1,{293:324,263:$V$1}),o($V81,$V_1,{293:325,263:$V$1}),{3:193,4:$VB,5:$VC,92:326},o($V81,[2,334]),{3:193,4:$VB,5:$VC,92:327},o($V02,[2,83],{68:328,97:[1,329]}),{3:173,4:$VB,5:$VC,92:330,93:331,94:332,95:333,96:[1,334],192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[1,336],345:335},{122:[2,532]},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:337,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{33:338,66:59,74:79,80:$V4},o($V12,[2,95],{3:339,4:$VB,5:$VC,63:[1,340]}),o($V12,[2,98],{3:341,4:$VB,5:$VC,63:[1,342]}),o($V12,[2,99],{3:343,4:$VB,5:$VC,63:[1,344]}),o($V12,[2,102],{3:345,4:$VB,5:$VC,63:[1,346]}),o($V12,[2,105],{3:347,4:$VB,5:$VC,63:[1,348]}),o([4,5,8,9,11,61,63,65,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22,{64:$VM1,106:$V32}),{3:270,4:$VB,5:$VC},o([4,5,8,9,11,61,63,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],[2,108]),{33:350,61:[1,351],66:59,74:79,80:$V4},o($V42,[2,56]),{63:[1,352]},{251:[1,353]},{97:[1,354]},o($VA,[2,443],{206:[1,355]}),{305:[1,356]},{97:[1,357]},o($VA,[2,447],{97:[1,359],206:[1,358]}),{3:193,4:$VB,5:$VC,92:360},o($VA,[2,510]),{9:$Vx,11:$Vy,201:[1,361]},o($VA,[2,508]),o($VA,[2,509]),{3:362,4:$VB,5:$VC},o($VA,[2,436]),{238:[1,363]},o([8,9,11,63,64,80,97,124,201,205,238,244,246,292,295,296,297,298],$V22,{106:$V32}),o($VA,[2,460]),o($VA,[2,463]),o($VA,[2,464]),o($VA,[2,465]),o($VA,$VO1,{61:[1,364]}),{64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},o($V52,[2,219]),o($V52,[2,220]),o($V52,[2,221]),o($V52,[2,222]),o($V52,[2,223]),o($V52,[2,224]),o($V52,[2,225]),{64:$VM1},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,224:251,10:365,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,518]),o($VA,[2,519]),o($VA,[2,462],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,520],{61:[1,366]}),o($VZ1,[2,522]),{120:[1,368],324:367,327:[1,369]},{3:370,4:$VB,5:$VC},o($Vg1,$Vh1,{76:371,88:$Vi1}),o($Vg1,$Vh1,{76:372,88:$Vi1}),o($Vg1,$Vh1,{76:373,88:$Vi1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:374,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,378],89:377,151:$VF},o($Vj1,[2,64]),o($Vj1,[2,65]),o($Vj1,[2,66]),o($Vj1,[2,67]),o($Vj1,[2,68]),o($Vj1,[2,69]),o($Vj1,[2,70]),o($Vz,[2,4]),o($Vz,[2,5]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:379,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,512],{332:380,205:[1,381]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:382,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:383,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:384,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:385,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:386,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:387,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:388,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:389,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:390,4:$VB,5:$VC,64:[1,392],89:391,93:393,151:$VF},o($V62,[2,312],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:394,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,313],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:395,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,314],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:396,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,315],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:397,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,316],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:398,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:399,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:400,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V62,[2,317],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:401,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:402,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:403,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{79:[1,405],225:404,235:[1,406],236:[1,407]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:408,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:409,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:298,4:$VB,5:$VC,64:[1,410],93:413,155:412,192:$V72,230:411},{229:[1,415]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:416,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:417,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:418,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:419,288:$V92},{65:[1,422]},{65:[1,423],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,75:[1,425],79:[1,426],89:92,93:88,94:96,95:97,96:$VE,121:424,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,65:[1,428],89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:427,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:430,4:$VB,5:$VC,81:$Va2,154:[1,432]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,293],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,233:$VJ1}),o($Vb2,[2,294],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,295],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($VP1,[2,256]),o($VP1,[2,257]),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,254]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:433,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,468]),o($VS1,[2,469]),o($VS1,[2,470]),o($VS1,[2,471]),o($VS1,[2,473]),{33:434,66:59,74:79,80:$V4},{154:$Vk1,199:435,202:280,203:$VR1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{200:436,201:$Vc2,202:437,203:$VR1,205:$Vd2},o($Ve2,[2,263]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:439,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:440,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:441,288:$V92},o($VS1,[2,474]),{61:[1,443],322:[1,442]},o($VS1,[2,490]),o($Vf2,[2,497]),o($Vg2,[2,475]),o($Vg2,[2,476]),o($Vg2,[2,477]),o($Vg2,[2,478]),o($Vg2,[2,479]),o($Vg2,[2,480]),o($Vg2,[2,481]),o($Vg2,[2,482]),o($Vg2,[2,483]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:444,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,$VL1,{64:$VM1,106:$Vh2}),o($Vd1,[2,213],{64:$VM1}),o($Vd1,[2,214]),{61:[1,447],320:[1,446]},o($VS1,[2,487]),o($Vi2,[2,492]),{195:[1,448]},{195:[1,449]},{195:[1,450]},{292:[1,454],295:[1,451],297:[1,452],298:[1,453]},{3:455,4:$VB,5:$VC},{3:456,4:$VB,5:$VC},{228:[1,457]},o($Vj2,$VX1,{252:458,263:$VY1}),{120:[1,459]},{3:460,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:461},{3:193,4:$VB,5:$VC,92:462},{192:$V71,341:463},{4:$V82,63:[1,465],168:464,288:$V92},o($VA,[2,327],{124:[1,466]}),o($VA,[2,428]),{3:467,4:$VB,5:$VC},{193:[1,468]},o($Vj2,$V_1,{293:469,263:$V$1}),o($VA,[2,442]),{3:193,4:$VB,5:$VC,92:470},{3:193,4:$VB,5:$VC,92:471},{33:475,64:[1,474],66:59,74:79,80:$V4,244:[1,472],246:[1,473]},{296:[1,476]},o($Vk2,[2,145],{69:477,124:[1,478]}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,98:479,99:480,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V91,[2,76]),o($V91,[2,77]),o($V91,[2,78]),o($V91,[2,79]),o($V91,[2,80]),{120:[1,482],346:481},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:483,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[2,533]},{65:[1,484]},o($V12,[2,93]),{3:485,4:$VB,5:$VC},o($V12,[2,96]),{3:486,4:$VB,5:$VC},o($V12,[2,100]),{3:487,4:$VB,5:$VC},o($V12,[2,103]),{3:488,4:$VB,5:$VC},o($V12,[2,106]),{3:489,4:$VB,5:$VC},{3:490,4:$VB,5:$VC},o($VA,[2,54]),{3:178,4:$VB,5:$VC,62:491},{64:[1,492]},{3:193,4:$VB,5:$VC,92:493},{3:193,4:$VB,5:$VC,92:494},{96:$VE,152:495,190:$VV},o($VA,[2,445],{206:[1,496]}),{3:193,4:$VB,5:$VC,92:497},{96:$VE,152:498,190:$VV},{3:499,4:$VB,5:$VC},o($VA,[2,530]),o($VA,[2,517]),o($VA,[2,435]),{3:503,4:$VB,5:$VC,155:502,239:500,240:501},{163:504,192:$Vf1,313:126,314:$V51,318:$V61},o($VA,[2,514]),{96:$VE,152:505,190:$VV},o($VA,[2,498]),o($VA,[2,506]),o($VA,[2,507]),{213:[1,508],218:[1,506],325:507},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:509,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:510,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:511,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vl2,[2,62],{61:$Vm2}),o($Vn2,$Vo2,{148:513,149:$Vp2,150:$Vq2}),o($Vr2,[2,186],{224:251,3:517,152:519,4:$VB,5:$VC,63:[1,516],96:$VE,151:[1,518],154:$Vk1,190:$VV,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vg1,[2,71],{90:[1,520]}),{89:521,151:$VF},o($Vz,[2,9]),o($VA,[2,511]),o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:522,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vs2,[2,267],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vs2,[2,268],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,269],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,270],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vt2,[2,271],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,272],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,273],{224:251,212:$Vr1,213:$Vs1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,274],{224:251,213:$Vs1}),o($Vd1,[2,275],{64:$VM1}),o($Vd1,[2,276]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:523,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,278]),o($Vu2,[2,279],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,280],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,281],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,282],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,283],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,284],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,285],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,286],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,287],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,288],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),{64:[1,524]},{64:[2,318]},{64:[2,319]},{64:[2,320]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,291],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,292],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1}),{3:106,4:$VB,5:$VC,33:525,49:104,64:$VD,65:[1,527],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:526,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,303]),o($Vd1,[2,309]),o($Vd1,[2,310]),{64:[1,528]},{3:298,4:$VB,5:$VC,64:[1,529],93:413,155:412,192:$V72,230:530},o($Vv2,[2,305],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o($Vv2,[2,306],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,307],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vd1,[2,308]),o($Vw2,[2,399],{64:[1,531]}),{64:[1,532]},o($Vd1,[2,210]),o($Vd1,[2,296]),{65:[1,533],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:534,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:535,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vx2,65:[1,536]},o($VP1,[2,245]),o($Vy2,[2,246],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,$Vz2,{106:[1,538]}),o($VS1,[2,192]),o($Vd1,[2,188]),{65:[1,539],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,540]},{200:541,201:$Vc2,202:437,203:$VR1,205:$Vd2},{201:[1,542]},o($Ve2,[2,262]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:543,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{154:$Vk1,204:[1,544],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{63:[1,545],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{61:[1,546]},o($VS1,[2,488]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:548,317:289,318:$V61,322:[1,547]},{65:[1,549],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:550,4:$VB,5:$VC,81:$Va2},o($VS1,[2,485]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,320:[1,551],323:552},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:553,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:554,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:555,317:289,318:$V61},{83:[1,557],296:[1,556]},{83:[1,558]},{83:[1,559]},{83:[1,560]},o($VA,[2,424],{63:[1,562],64:[1,561]}),o($VA,[2,429]),{193:[1,563]},{3:564,4:$VB,5:$VC,96:$VE,152:565,190:$VV},{3:193,4:$VB,5:$VC,92:566},{120:[1,567]},o($VA,[2,352],{64:[1,568]}),{63:[1,570],64:[1,569]},o($VZ1,[2,525]),o($VZ1,[2,526],{218:[1,571]}),{4:$V82,168:572,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:573,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,437]),o($Vj2,[2,417]),{3:574,4:$VB,5:$VC,96:$VE,152:575,190:$VV},o($VA,[2,415]),o($VA,[2,459]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:576,313:126,314:$V51,318:$V61},{244:[1,580]},{3:503,4:$VB,5:$VC,123:581,155:582},o($VA,[2,331]),{3:583,4:$VB,5:$VC},o($VB2,[2,147],{70:584,125:[1,585]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:586,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V02,[2,81],{61:[1,587]}),o($VC2,[2,88],{100:588,107:589,101:590,108:591,111:594,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),{203:$VN2,347:603,349:604,350:605},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:607,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{120:[2,534]},o($V12,[2,92],{3:608,4:$VB,5:$VC,63:[1,609]}),o($V12,[2,94]),o($V12,[2,97]),o($V12,[2,101]),o($V12,[2,104]),o($V12,[2,107]),o([4,5,8,9,11,61,63,64,65,80,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205,238,244,246,292,295,296,297,298],[2,109]),o($V42,[2,55]),{33:610,66:59,74:79,80:$V4},o($VA,[2,455],{97:[1,611]}),o($VA,[2,451],{97:[1,612]}),o($VA,[2,444]),{96:$VE,152:613,190:$VV},o($VA,[2,453],{97:[1,614]}),o($VA,[2,448]),o($VA,[2,449],{206:[1,615]}),o($VA,[2,322],{61:$VO2,124:[1,616]}),o($VP2,[2,323]),{218:[1,618]},o([8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205,218],$VL1,{106:$Vh2}),o($VA,[2,466]),o($VZ1,[2,521]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:619,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{213:[1,621],218:[1,620]},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:622},o($Vl2,[2,59],{61:$Vm2}),o($Vl2,[2,60],{61:$Vm2}),o($Vl2,[2,61],{61:$Vm2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:376,147:626,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,[2,175]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:627,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:628,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:629,4:$VB,5:$VC,96:$VE,151:[1,630],152:631,190:$VV},o($Vr2,[2,181]),o($Vr2,[2,183]),o($Vr2,[2,185]),o($Vg1,[2,73]),{65:[1,632]},o($VA,[2,513]),{65:[1,633],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,33:634,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:635,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{65:[1,636]},{61:$Vx2,65:[1,637]},o($Vd1,[2,301]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:638,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,33:639,49:104,64:$VD,65:[1,641],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:640,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,304]),{151:[1,642]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:643,313:126,314:$V51,318:$V61},o($Vd1,$VS2,{173:645,174:$VT2}),{65:[1,647],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,648],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VP1,[2,244]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:649,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:650,4:$VB,5:$VC,154:[1,651]},o($VS1,[2,467]),o($Vd1,[2,255]),{201:[1,652]},o($Vd1,[2,261]),{154:$Vk1,201:[2,265],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:653,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:654,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:655,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,489]),o($Vf2,[2,496]),o($Vg2,[2,484]),o($VS1,$Vz2,{106:[1,656]}),o($VS1,[2,486]),o($Vi2,[2,491]),o($Vi2,[2,493]),o($Vi2,[2,494]),o($Vi2,[2,495]),{3:657,4:$VB,5:$VC},{3:658,4:$VB,5:$VC},{3:660,4:$VB,5:$VC,285:659},{3:660,4:$VB,5:$VC,285:661},{3:662,4:$VB,5:$VC},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:663,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:664,4:$VB,5:$VC},o($Vj2,[2,365]),o($VA,$VU2,{302:665,63:$VV2,64:[1,666]}),o($VA,$VU2,{302:668,63:$VV2}),{64:[1,669]},{3:193,4:$VB,5:$VC,92:670},{3:660,4:$VB,5:$VC,63:[1,673],253:671,264:672,285:674},{3:503,4:$VB,5:$VC,123:675,155:582},{33:676,66:59,74:79,80:$V4},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:677,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VZ1,[2,527],{218:[1,678]}),o($VA,[2,326],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,438]),o($VA,[2,439]),o($VA,[2,328],{61:$VW2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:680,313:126,314:$V51,318:$V61},o($VX2,[2,336]),o($VX2,[2,337]),o($VA,[2,329]),{61:$VY2,65:[1,681]},o($VZ2,[2,349]),o($VA,[2,423]),o($V_2,[2,162],{71:683,138:[1,684]}),{126:[1,685]},o($Vk2,[2,146],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:686,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V02,[2,82],{108:591,111:594,107:687,101:688,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),o($V$2,[2,113]),o($V$2,[2,114]),{3:173,4:$VB,5:$VC,64:[1,692],92:690,93:693,94:691,95:694,109:689,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{103:[1,695],113:$V03},{103:[1,697],113:$V13},o($V23,[2,129]),{102:[1,701],104:[1,700],111:699,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2},o($V23,[2,131]),{113:[1,702]},{104:[1,704],113:[1,703]},{104:[1,706],113:[1,705]},{104:[1,707]},{113:[1,708]},{113:[1,709]},o($VA,[2,554],{348:710,349:711,350:712,203:$VN2,355:[1,713]}),o($V33,[2,538]),o($V33,[2,539]),{228:[1,715],351:[1,714]},{154:$Vk1,203:[2,535],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V12,[2,90]),{3:716,4:$VB,5:$VC},{65:[1,717]},{3:718,4:$VB,5:$VC},{3:719,4:$VB,5:$VC},o($VA,[2,446]),{3:720,4:$VB,5:$VC},{96:$VE,152:721,190:$VV},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:722,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,155:502,240:723},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:724,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,499],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:725,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:726},o($V43,[2,502]),o($V43,[2,503]),o($V43,[2,504]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:727,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,$Vo2,{148:728,149:$Vp2,150:$Vq2}),o($Vn2,[2,177],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vn2,[2,178],{224:251,149:[1,729],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vr2,[2,180]),o($Vr2,[2,182]),o($Vr2,[2,184]),o($Vg1,[2,72]),o($Vd1,[2,277]),{65:[1,730]},{61:$Vx2,65:[1,731]},o($Vd1,[2,297]),o($Vd1,[2,299]),{65:[1,732],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,733]},{61:$Vx2,65:[1,734]},o($Vd1,[2,302]),{61:[1,735],65:[1,736]},{61:$V53,65:[1,737]},o($Vy2,[2,341],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,[2,226]),{64:[1,739]},o($Vd1,$VS2,{173:740,174:$VT2}),o($Vd1,$VS2,{173:741,174:$VT2}),o($Vy2,[2,247],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VS1,[2,190]),o($Vd1,[2,187]),o($Vd1,[2,260]),o($Ve2,[2,264],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{61:[1,743],65:[1,742]},{61:[1,745],65:[1,744],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:650,4:$VB,5:$VC},o($VA,[2,418]),{296:[1,746]},o($VA,[2,419]),o($V63,[2,396],{168:747,4:$V82,287:[1,748],288:$V92}),o($VA,[2,420]),o($VA,[2,422]),{61:$Vx2,65:[1,749]},o($VA,[2,426]),o($VA,[2,430]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:750,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:751,4:$VB,5:$VC},o($VA,[2,432]),{3:753,4:$VB,5:$VC,96:$V73,277:752},{64:[1,755]},{65:[1,756]},{61:[1,757],65:[2,367]},{33:758,66:59,74:79,80:$V4},o($Vy2,[2,392]),{61:$VY2,65:[1,759]},o($VA,[2,458]),o($VZ1,[2,528],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:760,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,761],94:763,163:762,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{61:$V53,65:[1,764]},{33:766,66:59,74:79,80:$V4,244:[1,765]},{3:503,4:$VB,5:$VC,155:767},o($V83,[2,170],{72:768,144:[1,769]}),{126:[1,770]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:771,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC2,[2,89]),o($V$2,[2,111]),o($V$2,[2,112]),o($V$2,[2,144],{110:777,120:[1,778],122:[1,779]}),o($Vc3,[2,116],{3:780,4:$VB,5:$VC,63:[1,781]}),{3:782,4:$VB,5:$VC,63:[1,783]},{33:784,66:59,74:79,80:$V4},o($Vc3,[2,123],{3:785,4:$VB,5:$VC,63:[1,786]}),o($Vc3,[2,126],{3:787,4:$VB,5:$VC,63:[1,788]}),{64:[1,789]},o($V23,[2,141]),{64:[1,790]},o($V23,[2,137]),o($V23,[2,130]),{113:$V13},{113:$V03},o($V23,[2,132]),o($V23,[2,133]),{113:[1,791]},o($V23,[2,135]),{113:[1,792]},{113:[1,793]},o($V23,[2,139]),o($V23,[2,140]),o($VA,[2,531]),o($V33,[2,536]),o($V33,[2,537]),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:794,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{204:[1,795],226:[1,796]},{351:[1,797]},o($V12,[2,91]),o($V42,[2,57]),o($VA,[2,456]),o($VA,[2,452]),o($VA,[2,454]),o($VA,[2,450]),o($VA,[2,321],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VP2,[2,324]),o($VP2,[2,325],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,500],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V43,[2,501]),{65:[1,798],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vn2,[2,174]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:799,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,289]),o($Vd1,[2,290]),o($Vd1,[2,311]),o($Vd1,[2,298]),o($Vd1,[2,300]),{151:[1,800]},o($Vw2,[2,398]),o($Vw2,[2,400]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:801,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{138:$Vd3,175:802,176:803,177:[1,804]},o($Vd1,[2,227]),o($Vd1,[2,228]),o($Vd1,[2,215]),{151:[1,806]},o($Vd1,[2,217]),{151:[1,807]},{3:808,4:$VB,5:$VC},o($V63,[2,401],{286:809,289:810,290:811,272:820,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V63,[2,395]),o($VA,[2,425],{63:[1,822]}),{61:$Vx2,65:[1,823]},o($VA,[2,434]),{61:$Vn3,65:[1,824]},o($Vy2,[2,388]),o($Vy2,[2,389]),{3:753,4:$VB,5:$VC,96:$V73,277:826},o($VA,[2,353],{254:827,255:828,256:829,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($Vs3,$Vt3,{3:660,265:834,285:835,266:836,267:837,4:$VB,5:$VC,273:$Vu3}),{65:[2,368]},{63:[1,839]},o($VZ1,[2,529],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:840,313:126,314:$V51,318:$V61},o($VX2,[2,339]),o($VX2,[2,340]),o($VX2,[2,335]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:841,313:126,314:$V51,318:$V61},o($VA,[2,332]),o($VZ2,[2,350]),o($Vv3,[2,157],{73:842,135:[1,843],136:[1,844],137:[1,845]}),{89:846,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:847,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VB2,[2,155],{128:850,61:$Vw3,134:[1,852]}),o($Vx3,[2,149]),{131:[1,853]},{64:[1,854]},{64:[1,855]},o($Vx3,[2,154],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,115]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:856,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:857,155:582},o($Vc3,[2,117]),{3:858,4:$VB,5:$VC},o($Vc3,[2,119]),{3:859,4:$VB,5:$VC},{65:[1,860]},o($Vc3,[2,124]),{3:861,4:$VB,5:$VC},o($Vc3,[2,127]),{3:862,4:$VB,5:$VC},{33:863,66:59,74:79,80:$V4},{33:864,66:59,74:79,80:$V4},o($V23,[2,134]),o($V23,[2,136]),o($V23,[2,138]),o($VA,[2,555],{61:$Vm2,91:[1,865]}),{237:$Vy3,241:$Vz3,352:866},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:869,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{126:[1,871],204:[1,870],226:[1,872]},o($V43,[2,505]),o($Vn2,[2,179],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,873]},o($Vy2,[2,342],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,874],138:$Vd3,176:875},{65:[1,876]},{126:[1,877]},{126:[1,878]},{65:[1,879]},{65:[1,880]},o($VA,[2,421]),o($V63,[2,394]),o($V63,[2,402],{272:820,290:881,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V52,[2,404]),{276:[1,882]},{276:[1,883]},{3:884,4:$VB,5:$VC},o($V52,[2,408]),o($V52,[2,410],{64:[1,885]}),{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:$VE,151:$VF,152:201,158:202,159:203,170:886,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,194:$VZ,195:$V_,196:$V$,197:$V01},o($V52,[2,412]),{191:[1,887]},o($V52,[2,414]),{64:[1,888]},{3:889,4:$VB,5:$VC},o($VA,$VU2,{302:890,63:$VV2}),o($VA,[2,440]),{3:891,4:$VB,5:$VC,96:[1,892]},{61:$Vn3,65:[1,893]},o($VA,[2,351]),o($VA,[2,354],{256:894,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($VA3,[2,356]),o($VA3,[2,357]),{218:[1,895]},{218:[1,896]},{218:[1,897]},{61:[1,898],65:[2,366]},o($Vy2,[2,393]),o($Vy2,[2,369]),{78:[1,906],86:[1,907],268:899,269:900,270:901,271:902,272:903,274:$Vi3,275:[1,904],276:[1,908],278:[1,905]},{3:909,4:$VB,5:$VC},{33:910,66:59,74:79,80:$V4},{61:$V53,65:[1,911]},o($VA,[2,330],{61:$VW2}),o($Vv3,[2,58]),{33:912,66:59,74:79,79:[1,913],80:$V4},{33:914,66:59,74:79,80:$V4},{33:915,66:59,74:79,80:$V4},o($V83,[2,172],{145:916,146:[1,917]}),o($V_2,[2,163],{61:$VB3}),o($VC3,[2,164]),o($VC3,[2,166],{224:251,141:[1,919],142:[1,920],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VB2,[2,148]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,129:921,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:922,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,923]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:924,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:925,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V$2,[2,142],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,143],{61:$VY2}),o($Vc3,[2,118]),o($Vc3,[2,120]),{3:926,4:$VB,5:$VC,63:[1,927]},o($Vc3,[2,125]),o($Vc3,[2,128]),{65:[1,928]},{65:[1,929]},{3:193,4:$VB,5:$VC,92:931,192:[1,930]},o($V33,[2,540]),o($V33,[2,542]),{238:[1,932]},{154:$Vk1,204:[1,933],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{242:$VD3,353:934},{311:[1,937],354:[1,936]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:938,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vw2,[2,397]),o($Vd1,[2,230]),{65:[1,939]},o($Vd1,[2,231]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:940,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:941,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,216]),o($Vd1,[2,218]),o($V52,[2,403]),o($V52,[2,405]),{279:[1,942]},{64:[1,943]},{89:944,151:$VF},o($V52,[2,411]),o($V52,[2,413]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:945,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,427]),o($VA,[2,431]),o($Vy2,[2,390]),o($Vy2,[2,391]),o($VA,[2,441]),o($VA3,[2,355]),{3:946,4:$VB,5:$VC},{89:947,151:$VF},{3:948,4:$VB,5:$VC},o($Vs3,$Vt3,{267:837,266:949,273:$Vu3}),o($Vy2,[2,371]),o($Vy2,[2,372]),o($Vy2,[2,373]),o($Vy2,[2,374]),o($Vy2,[2,375]),{276:[1,950]},{276:[1,951]},o($Vy2,[2,385]),{3:952,4:$VB,5:$VC},{3:953,4:$VB,5:$VC},o($Vs3,[2,377]),o($VA,[2,457]),o($VX2,[2,338]),o($Vv3,[2,158]),{33:954,66:59,74:79,80:$V4},o($Vv3,[2,160]),o($Vv3,[2,161]),o($V83,[2,171]),{89:955,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,140:956,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC3,[2,167]),{143:[1,957]},o($Vx3,[2,150]),o($VB2,[2,156],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:958,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vw3,65:[1,959]},{61:$Vw3,65:[1,960]},o($Vc3,[2,121]),{3:961,4:$VB,5:$VC},{3:962,4:$VB,5:$VC,63:[1,963]},{3:964,4:$VB,5:$VC,63:[1,965]},{3:966,4:$VB,5:$VC},o($VA,[2,557],{64:[1,967]}),{3:503,4:$VB,5:$VC,155:502,239:968,240:501},{237:$Vy3,241:$Vz3,352:969},o($V33,[2,544]),{64:[1,971],244:[1,970],246:[1,972]},{204:[1,973],226:[1,974]},{204:[1,975],226:[1,976]},{154:$Vk1,204:[1,977],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vd1,[2,232]),o([65,138],[2,233],{61:$Vw3}),{61:$VB3,65:[2,234]},{3:978,4:$VB,5:$VC},{3:979,4:$VB,5:$VC},{61:[1,980]},{65:[1,981],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VA3,[2,358]),o($VA3,[2,359]),o($VA3,[2,360]),o($Vy2,[2,370]),{64:[1,982]},{64:[1,983]},{64:[1,984]},{64:[1,985]},o($Vv3,[2,159]),o($V83,[2,173]),o($VC3,[2,165]),o($VC3,[2,168],{141:[1,986]}),{61:$Vw3,65:[1,987]},o($Vx3,[2,152]),o($Vx3,[2,153]),o($Vc3,[2,122]),o($V$2,[2,84]),{3:988,4:$VB,5:$VC},o($V$2,[2,86]),{3:989,4:$VB,5:$VC},o($VA,[2,556]),{3:503,4:$VB,5:$VC,123:990,155:582},o($V33,[2,543],{61:$VO2}),o($V33,[2,541]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:991,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:992,155:582},{244:[1,993]},{242:$VD3,353:994},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:995,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:996},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:997,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:998},{64:[1,999]},{65:[1,1e3]},{89:1001,151:$VF},o($V52,[2,378]),{3:753,4:$VB,5:$VC,96:$V73,277:1002},{3:753,4:$VB,5:$VC,96:$V73,277:1003},{3:503,4:$VB,5:$VC,123:1004,155:582},{3:503,4:$VB,5:$VC,123:1005,155:582},o($VC3,[2,169]),o($Vx3,[2,151]),o($V$2,[2,85]),o($V$2,[2,87]),{61:$VY2,65:[1,1006]},o($V33,[2,550],{61:$VW2}),{61:$VY2,65:[1,1007]},o($V33,[2,552]),o($V33,[2,545]),{154:$Vk1,204:[1,1008],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,548]),{154:$Vk1,204:[1,1009],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,546]),{3:1010,4:$VB,5:$VC},o($V52,[2,407]),{65:[1,1011]},{61:$Vn3,65:[1,1012]},{61:$Vn3,65:[1,1013]},{61:$VY2,65:[1,1014]},{61:$VY2,65:[1,1015]},o($VA,[2,558]),{244:[1,1016],246:[1,1017]},{242:$VD3,353:1018},{237:$Vy3,241:$Vz3,352:1019},{65:[1,1020]},o($V52,[2,409]),o($Vy2,[2,379]),{279:[1,1021]},o($Vy2,[2,386]),o($Vy2,[2,387]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:1022,313:126,314:$V51,318:$V61},{244:[1,1023]},o($V33,[2,547]),o($V33,[2,549]),o($V52,[2,406]),{3:1024,4:$VB,5:$VC},o($V33,[2,551],{61:$VW2}),o($V33,[2,553]),{64:[1,1025]},{3:753,4:$VB,5:$VC,96:$V73,277:1026},{61:$Vn3,65:[1,1027]},o($Vy2,[2,381],{280:1028,281:1029,120:[1,1030]}),o($Vy2,[2,380]),{120:[1,1032],282:1031},{241:[1,1033]},o($Vy2,[2,382]),{237:[1,1034]},{283:[1,1035]},{283:[1,1036]},{284:[1,1037]},{284:[1,1038]},{120:[2,383]},o($Vy2,[2,384])],defaultActions:{81:[2,3],129:[2,235],130:[2,236],131:[2,237],132:[2,238],133:[2,239],134:[2,240],135:[2,241],136:[2,242],137:[2,243],165:[2,532],337:[2,533],405:[2,318],406:[2,319],407:[2,320],483:[2,534],758:[2,368],1037:[2,383]},parseError:function parseError(str,hash){if(hash.recoverable){this.trace(str) -}else{throw new Error(str)}},parse:function parse(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1;var args=lstack.slice.call(arguments,1);var lexer=Object.create(this.lexer);var sharedState={yy:{}};for(var k in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,k)){sharedState.yy[k]=this.yy[k]}}lexer.setInput(input,sharedState.yy);sharedState.yy.lexer=lexer;sharedState.yy.parser=this;if(typeof lexer.yylloc=="undefined"){lexer.yylloc={}}var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;if(typeof sharedState.yy.parseError==="function"){this.parseError=sharedState.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function popStack(n){stack.length=stack.length-2*n;vstack.length=vstack.length-n;lstack.length=lstack.length-n}_token_stack:function lex(){var token;token=lexer.lex()||EOF;if(typeof token!=="number"){token=self.symbols_[token]||token}return token}var symbol,preErrorSymbol,state,action,a,r,yyval={},p,len,newState,expected;while(true){state=stack[stack.length-1];if(this.defaultActions[state]){action=this.defaultActions[state]}else{if(symbol===null||typeof symbol=="undefined"){symbol=lex()}action=table[state]&&table[state][symbol]}if(typeof action==="undefined"||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state]){if(this.terminals_[p]&&p>TERROR){expected.push("'"+this.terminals_[p]+"'")}}if(lexer.showPosition){errStr="Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'"}else{errStr="Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'")}this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}switch(action[0]){case 1:stack.push(symbol);vstack.push(lexer.yytext);lstack.push(lexer.yylloc);stack.push(action[1]);symbol=null;if(!preErrorSymbol){yyleng=lexer.yyleng;yytext=lexer.yytext;yylineno=lexer.yylineno;yyloc=lexer.yylloc;if(recovering>0){recovering--}}else{symbol=preErrorSymbol;preErrorSymbol=null}break;case 2:len=this.productions_[action[1]][1];yyval.$=vstack[vstack.length-len];yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column};if(ranges){yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]}r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args));if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);lstack=lstack.slice(0,-1*len)}stack.push(this.productions_[action[1]][0]);vstack.push(yyval.$);lstack.push(yyval._$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:return true}}return true}};var lexer=function(){var lexer={EOF:1,parseError:function parseError(str,hash){if(this.yy.parser){this.yy.parser.parseError(str,hash)}else{throw new Error(str)}},setInput:function(input,yy){this.yy=yy||this.yy||{};this._input=input;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.offset++;this.match+=ch;this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return ch},unput:function(ch){var len=ch.length;var lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-len);this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(lines.length-1){this.yylineno-=lines.length-1}var r=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len};if(this.options.ranges){this.yylloc.range=[r[0],r[0]+this.yyleng-len]}this.yyleng=this.yytext.length;return this},more:function(){this._more=true;return this},reject:function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length)}return(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput();var c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer){backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){backup.yylloc.range=this.yylloc.range.slice(0)}}lines=match[0].match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno+=lines.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length};this.yytext+=match[0];this.match+=match[0];this.matches=match;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(match[0].length);this.matched+=match[0];token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(token){return token}else if(this._backtrack){for(var k in backup){this[k]=backup[k]}return false}return false},next:function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var token,match,tempMatch,index;if(!this._more){this.yytext="";this.match=""}var rules=this._currentRules();for(var i=0;imatch[0].length)){match=tempMatch;index=i;if(this.options.backtrack_lexer){token=this.test_match(tempMatch,rules[i]);if(token!==false){return token}else if(this._backtrack){match=false;continue}else{return false}}else if(!this.options.flex){break}}}if(match){token=this.test_match(match,rules[index]);if(token!==false){return token}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}},lex:function lex(){var r=this.next();if(r){return r}else{return this.lex()}},begin:function begin(condition){this.conditionStack.push(condition)},popState:function popState(){var n=this.conditionStack.length-1;if(n>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}},_currentRules:function _currentRules(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}},topState:function topState(n){n=this.conditionStack.length-1-Math.abs(n||0);if(n>=0){return this.conditionStack[n]}else{return"INITIAL"}},pushState:function pushState(condition){this.begin(condition)},stateStackSize:function stateStackSize(){return this.conditionStack.length},options:{"case-insensitive":true},performAction:function anonymous(yy,yy_,$avoiding_name_collisions,YY_START){var YYSTATE=YY_START;switch($avoiding_name_collisions){case 0:return 165;break;case 1:return 197;break;case 2:return 314;break;case 3:return 5;break;case 4:return 5;break;case 5:return 190;break;case 6:return 190;break;case 7:return 96;break;case 8:return 96;break;case 9:return;break;case 10:return;break;case 11:break;case 12:return 227;break;case 13:return 226;break;case 14:return"ABSOLUTE";break;case 15:return 284;break;case 16:return 297;break;case 17:return 185;break;case 18:return 79;break;case 19:return 294;break;case 20:return 226;break;case 21:return 119;break;case 22:return 236;break;case 23:return 103;break;case 24:return 186;break;case 25:return 63;break;case 26:return 312;break;case 27:return 141;break;case 28:return 299;break;case 29:return 258;break;case 30:return 258;break;case 31:return 182;break;case 32:return 331;break;case 33:return 231;break;case 34:return 335;break;case 35:return 232;break;case 36:return 207;break;case 37:return 126;break;case 38:return 198;break;case 39:return 167;break;case 40:return 259;break;case 41:return 274;break;case 42:return"CLOSE";break;case 43:return 142;break;case 44:return"COLUMN";break;case 45:return"COLUMNS";break;case 46:return"COMMIT";break;case 47:return"CONSTRAINT";break;case 48:return"CONTINUE";break;case 49:return"CONVERT";break;case 50:return"COUNT";break;case 51:return 250;break;case 52:return"CROSS";break;case 53:return 133;break;case 54:return"CURRENT_TIMESTAMP";break;case 55:return"CURSOR";break;case 56:return 300;break;case 57:return 305;break;case 58:return 339;break;case 59:return 246;break;case 60:return 241;break;case 61:return"DELETED";break;case 62:return 141;break;case 63:return 301;break;case 64:return 75;break;case 65:return 292;break;case 66:return 201;break;case 67:return 257;break;case 68:return 288;break;case 69:return 205;break;case 70:return 136;break;case 71:return 193;break;case 72:return 13;break;case 73:return 189;break;case 74:return"FETCH";break;case 75:return 183;break;case 76:return 278;break;case 77:return 97;break;case 78:return 11;break;case 79:return 125;break;case 80:return 130;break;case 81:return 134;break;case 82:return 309;break;case 83:return 263;break;case 84:return 291;break;case 85:return 233;break;case 86:return 229;break;case 87:return 86;break;case 88:return 114;break;case 89:return 242;break;case 90:return"INSERTED";break;case 91:return 137;break;case 92:return 91;break;case 93:return 113;break;case 94:return 276;break;case 95:return 184;break;case 96:return 115;break;case 97:return 206;break;case 98:return 144;break;case 99:return 311;break;case 100:return"MATCHED";break;case 101:return 84;break;case 102:return"MAX";break;case 103:return"MERGE";break;case 104:return"MIN";break;case 105:return"EXCEPT";break;case 106:return"MODIFY";break;case 107:return 112;break;case 108:return"NEXT";break;case 109:return 166;break;case 110:return 143;break;case 111:return 283;break;case 112:return 228;break;case 113:return 191;break;case 114:return 327;break;case 115:return 120;break;case 116:return 146;break;case 117:return"OPEN";break;case 118:return 227;break;case 119:return 138;break;case 120:return 104;break;case 121:return 174;break;case 122:return 177;break;case 123:return 90;break;case 124:return 15;break;case 125:return 275;break;case 126:return 336;break;case 127:return"PRIOR";break;case 128:return 14;break;case 129:return 87;break;case 130:return"REDUCE";break;case 131:return 279;break;case 132:return"RELATIVE";break;case 133:return 295;break;case 134:return 337;break;case 135:return"RESTORE";break;case 136:return 116;break;case 137:return 330;break;case 138:return 132;break;case 139:return 82;break;case 140:return 300;break;case 141:return 305;break;case 142:return 80;break;case 143:return 118;break;case 144:return 238;break;case 145:return 131;break;case 146:return 304;break;case 147:return 235;break;case 148:return"STORE";break;case 149:return"SUM";break;case 150:return 251;break;case 151:return 306;break;case 152:return 354;break;case 153:return 149;break;case 154:return 85;break;case 155:return 150;break;case 156:return 204;break;case 157:return 296;break;case 158:return 88;break;case 159:return"TRAN";break;case 160:return 329;break;case 161:return 188;break;case 162:return 342;break;case 163:return 135;break;case 164:return 78;break;case 165:return 237;break;case 166:return 303;break;case 167:return 122;break;case 168:return 81;break;case 169:return 244;break;case 170:return 308;break;case 171:return 203;break;case 172:return 124;break;case 173:return 333;break;case 174:return 59;break;case 175:return 329;break;case 176:return 151;break;case 177:return 151;break;case 178:return 213;break;case 179:return 208;break;case 180:return 209;break;case 181:return 154;break;case 182:return 210;break;case 183:return 211;break;case 184:return 223;break;case 185:return 220;break;case 186:return 222;break;case 187:return 219;break;case 188:return 215;break;case 189:return 214;break;case 190:return 217;break;case 191:return 221;break;case 192:return 216;break;case 193:return 218;break;case 194:return 221;break;case 195:return 64;break;case 196:return 65;break;case 197:return 192;break;case 198:return 318;break;case 199:return 320;break;case 200:return 322;break;case 201:return 106;break;case 202:return 61;break;case 203:return 234;break;case 204:return 195;break;case 205:return 9;break;case 206:return 194;break;case 207:return 196;break;case 208:return 212;break;case 209:return 4;break;case 210:return 8;break;case 211:return"INVALID";break}},rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:\/\*(.*?)\*\/)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AGGR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTOINCREMENT\b)/i,/^(?:AUTO_INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHARSET\b)/i,/^(?:CHECK\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE\b)/i,/^(?:DATABASES\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:END\b)/i,/^(?:ENGINE\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:GO\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:HELP\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INNER\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:SOURCE\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX\b)/i,/^(?:MERGE\b)/i,/^(?:MIN\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:RELATIVE\b)/i,/^(?:RENAME\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:SCHEMA\b)/i,/^(?:SCHEMAS\b)/i,/^(?:SELECT\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TD\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:TH\b)/i,/^(?:THEN\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:\^)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],inclusive:true}}};return lexer}();parser.lexer=lexer;function Parser(){this.yy={}}Parser.prototype=parser;parser.Parser=Parser;return new Parser}();if(typeof require!=="undefined"&&typeof exports!=="undefined"){exports.parser=parser;exports.Parser=parser.Parser;exports.parse=function(){return parser.parse.apply(parser,arguments)};exports.main=function commonjsMain(args){if(!args[1]){console.log("Usage: "+args[0]+" FILE");process.exit(1)}var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)};if(typeof module!=="undefined"&&require.main===module){exports.main(process.argv.slice(1))}}alasql.prettyflag=false;alasql.pretty=function(sql,flag){var pf=alasql.prettyflag;alasql.prettyflag=!flag;var s=alasql.parse(sql).toString();alasql.prettyflag=pf;return s};function K(s){if(alasql.prettyflag){return''+s.toUpperCase()+""}else{return s}}function P(s){if(alasql.prettyflag){return''+s+""}else{return s}}function L(s){if(alasql.prettyflag){return''+s+""}else{return s}}function N(s){if(alasql.prettyflag){return''+s+""}else{return s}}function S(s){if(alasql.prettyflag){return''+s+""}else{return s}}function NL(){if(alasql.prettyflag){return"
"}else{return" "}}function ID(){if(alasql.prettyflag){return"     "}else{return""}}var utils=alasql.utils={};function returnTrue(){return true}function returnUndefined(){}var escapeq=utils.escapeq=function(s){return s.replace(/\'/g,"\\'")};var escapeqq=utils.undoubleq=function(s){return s.replace(/(\')/g,"''")};var doubleq=utils.doubleq=function(s){return s.replace(/(\'\')/g,"\\'")};var doubleqq=utils.doubleqq=function(s){return s.replace(/\'/g,"'")};var cutbom=function(s){if(s[0]==String.fromCharCode(65279))s=s.substr(1);return s};var loadFile=utils.loadFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(!path){var buff="";process.stdin.setEncoding("utf8");process.stdin.on("readable",function(){var chunk=process.stdin.read();if(chunk!==null){buff+=chunk.toString()}});process.stdin.on("end",function(){success(cutbom(buff))})}else{if(asy){fs.readFile(path,function(err,data){if(err){throw err}success(cutbom(data.toString()))})}else{var data=fs.readFileSync(path);success(cutbom(data.toString()))}}}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.file(function(file){var fileReader=new FileReader;fileReader.onloadend=function(e){success(cutbom(this.result))};fileReader.readAsText(file)})})})}else{if(typeof path=="string"){if(path.substr(0,1)=="#"&&typeof document!="undefined"){var data=document.querySelector(path).textContent;success(data)}else{var xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){if(xhr.readyState===XMLHttpRequest.DONE){if(xhr.status===200){if(success)success(cutbom(xhr.responseText))}else{if(error)error(xhr)}}};xhr.open("GET",path,asy);xhr.send()}}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(cutbom(data))};reader.readAsText(files[0])}}};var loadBinaryFile=utils.loadBinaryFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(asy){fs.readFile(path,function(err,data){if(err){throw err}var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))})}else{var data=fs.readFileSync(path);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))}}else{if(typeof path=="string"){var xhr=new XMLHttpRequest;xhr.open("GET",path,asy);xhr.responseType="arraybuffer";xhr.onload=function(){var data=new Uint8Array(xhr.response);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))};xhr.send()}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(data)};reader.readAsBinaryString(files[0])}}};var removeFile=utils.removeFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.remove(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.remove(cb);if(cb)cb()},function(){if(cb)cb()})})}else{throw new Error("You can remove files only in Node.js and Apache Cordova")}};var deleteFile=utils.deleteFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.unlink(path,cb)}};var fileExists=utils.fileExists=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.exists(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){cb(true)},function(){cb(false)})})}else{throw new Error("You can use exists() only in Node.js or Apach Cordova")}};var saveFile=utils.saveFile=function(path,data,cb){if(!path){alasql.options.stdout=true;console.log(data);if(cb)cb()}else{if(typeof exports=="object"){var fs=require("fs");var data=fs.writeFileSync(path,data);if(cb)cb()}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:true},function(fileEntry){fileEntry.createWriter(function(fileWriter){fileWriter.onwriteend=function(){if(cb)cb()};fileWriter.write(data)})})})}else{var blob=new Blob([data],{type:"text/plain;charset=utf-8"});saveAs(blob,path);if(cb)cb()}}};var hash=utils.hash=function hash(str){var h=0;if(str.length==0)return h;for(var i=0;i=26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr;if(i>26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr}}return addr};var xlscn=utils.xlscn=function(s){var n=s.charCodeAt(0)-65;if(s.length>1){n=(n+1)*26+s.charCodeAt(1)-65;if(s.length>2){n=(n+1)*26+s.charCodeAt(2)-65}}return n};var domEmptyChildren=utils.domEmptyChildren=function(container){var len=container.childNodes.length;while(len--){container.removeChild(container.lastChild)}};alasql.utils.uncomment=function uncomment(str){str=("__"+str+"__").split("");var quote=false,quoteSign,blockComment=false,lineComment=false;for(var i=0,l=str.length;ialasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement}var res=alasql.res=statement(params,cb,scope);return res}else{alasql.precompile(ast.statements[0],alasql.useid,params);var res=alasql.res=ast.statements[0].execute(databaseid,params,cb,scope);return res}}else{if(cb){alasql.adrun(databaseid,ast,params,cb,scope)}else{return alasql.drun(databaseid,ast,params,cb,scope)}}};alasql.drun=function(databaseid,ast,params,cb,scope){var useid=alasql.useid;if(useid!=databaseid)alasql.use(databaseid);var res=[];for(var i=0,ilen=ast.statements.length;i=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) -}var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] -}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

"+alasql.pretty(sql)+"
"}if(res instanceof Array){if(res.length==0){s+="

[ ]

"}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

"}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
#";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
"}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
"}else{s+="

"+JSONtoString(res)+"

"}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+sql+"

");alasql.write('

'+err+"

")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

'+(Date.now()-tm)+" ms

")}catch(err){alasql.write("

"+olduseid+"> "+alasql.pretty(sql,false)+"

");alasql.write('

'+err+"

")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 54b05cd250..7cdd281461 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -26,7 +26,7 @@ gulp.task('js-merge-worker', function () { // .pipe(changed('./dist/')) .pipe(concat('alasql-worker.js')) // .pipe(uglify()) - .pipe(gulp.dest('./')) + .pipe(gulp.dest('./dist')) }); gulp.task('js-merge', function () { @@ -108,7 +108,7 @@ gulp.task('js-merge', function () { // .pipe(changed('./dist/')) .pipe(concat('alasql.js')) // .pipe(uglify()) - .pipe(gulp.dest('./')) + .pipe(gulp.dest('./dist')) }); @@ -123,22 +123,22 @@ gulp.task('jison-compile', function () { gulp.task('uglify', function () { return gulp.src('./alasql.js', {read: false}) .pipe(shell([ - 'uglifyjs alasql.js -o alasql.min.js', - 'uglifyjs alasql-worker.js -o alasql-worker.min.js', + 'uglifyjs dist/alasql.js -o dist/alasql.min.js', + 'uglifyjs dist/alasql-worker.js -o dist/alasql-worker.min.js', ])); }); gulp.task('copy-dist', function(){ - gulp.src(['./alasql.js','./alasql.min.js','./alasql.js.map', - './alasql-worker.js','./alasql-worker.min.js','./alasql-worker.js.map']) - .pipe(gulp.dest('dist')); + gulp.src(['./dist/alasql.js','./alasql.js.map']) + .pipe(gulp.dest('./')); }); gulp.task('copy-dist-org', function(){ - gulp.src(['./alasql.min.js','./alasql-worker.min.js']) + gulp.src(['./dist/alasql.min.js','./dist/alasql-worker.min.js']) .pipe(gulp.dest('./console/')); }); +// Additional task to update alasql.org/console directory gulp.task('copy-console-org', function(){ gulp.src(['./console/*']) .pipe(gulp.dest('../alasql-org/console/')); @@ -174,12 +174,12 @@ gulp.task('default', ['js-merge' /*, 'jison-compile', 'jison-lex-compile' */], f gulp.watch('./src/*.js',function(){ gulp.run('js-merge'); }); gulp.watch('./src/99worker*.js',function(){ gulp.run('js-merge-worker'); }); gulp.watch('./src/*.jison',function(){ gulp.run('jison-compile'); }); - gulp.watch('./alasql.js',function(){ gulp.run('uglify'); }); - gulp.watch('./alasql.min.js',function(){ + gulp.watch('./dist/alasql.js',function(){ gulp.run('uglify'); }); + gulp.watch('./dist/alasql.min.js',function(){ gulp.run('copy-dist'); gulp.run('copy-dist-org'); }); - gulp.watch('./alasql-worker.js',function(){ + gulp.watch('./dist/alasql-worker.js',function(){ gulp.run('copy-dist'); gulp.run('copy-dist-org'); }); diff --git a/index.js b/index.js deleted file mode 100644 index c0689cd65b..0000000000 --- a/index.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = require('./alasql.js'); - -//var alasql = require('./alasql.js'); - -//for(var key in alasql) { -// exports[key] = alasql[key] -//} - diff --git a/medals.csv b/medals.csv deleted file mode 100644 index c36bf367d1..0000000000 --- a/medals.csv +++ /dev/null @@ -1,1873 +0,0 @@ -Athlete,Age,Country,Year,Closing Ceremony Date,Sport,Gold Medals,Silver Medals,Bronze Medals,Total Medals -Michael Phelps,23,United States,2008,39684,Swimming,8,0,0,8 -Natalie Coughlin,25,United States,2008,39684,Swimming,1,2,3,6 -Nastia Liukin,18,United States,2008,39684,Gymnastics,1,3,1,5 -Kirsty Coventry,24,Zimbabwe,2008,39684,Swimming,1,3,0,4 -Libby Lenton-Trickett,23,Australia,2008,39684,Swimming,2,1,1,4 -Ryan Lochte,24,United States,2008,39684,Swimming,2,0,2,4 -Shawn Johnson,16,United States,2008,39684,Gymnastics,1,3,0,4 -Alain Bernard,25,France,2008,39684,Swimming,1,1,1,3 -László Cseh Jr.,22,Hungary,2008,39684,Swimming,0,3,0,3 -Matt Grevers,23,United States,2008,39684,Swimming,2,1,0,3 -Margaret Hoelzer,25,United States,2008,39684,Swimming,0,2,1,3 -Katie Hoff,19,United States,2008,39684,Swimming,0,1,2,3 -Leisel Jones,22,Australia,2008,39684,Swimming,2,1,0,3 -Kosuke Kitajima,25,Japan,2008,39684,Swimming,2,0,1,3 -Andrew Lauterstein,21,Australia,2008,39684,Swimming,0,1,2,3 -Jason Lezak,32,United States,2008,39684,Swimming,2,0,1,3 -Pang Jiaying,23,China,2008,39684,Swimming,0,1,2,3 -Aaron Peirsol,25,United States,2008,39684,Swimming,2,1,0,3 -Steph Rice,20,Australia,2008,39684,Swimming,3,0,0,3 -Jess Schipper,21,Australia,2008,39684,Swimming,1,0,2,3 -Rebecca Soni,21,United States,2008,39684,Swimming,1,2,0,3 -Eamon Sullivan,22,Australia,2008,39684,Swimming,0,2,1,3 -Dara Torres,41,United States,2008,39684,Swimming,0,3,0,3 -Cheng Fei,20,China,2008,39684,Gymnastics,1,0,2,3 -Yang Wei,28,China,2008,39684,Gymnastics,2,1,0,3 -Yang Yilin,15,China,2008,39684,Gymnastics,1,0,2,3 -Zou Kai,20,China,2008,39684,Gymnastics,3,0,0,3 -Chris Hoy,32,Great Britain,2008,39684,Cycling,3,0,0,3 -Usain Bolt,21,Jamaica,2008,39684,Athletics,3,0,0,3 -Guo Yue,20,China,2008,39684,Table Tennis,1,0,1,2 -Ma Lin,28,China,2008,39684,Table Tennis,2,0,0,2 -Wang Hao,24,China,2008,39684,Table Tennis,1,1,0,2 -Wang Liqin,30,China,2008,39684,Table Tennis,1,0,1,2 -Wang Nan,29,China,2008,39684,Table Tennis,1,1,0,2 -Zhang Yining,26,China,2008,39684,Table Tennis,2,0,0,2 -Anastasiya Davydova,25,Russia,2008,39684,Synchronized Swimming,2,0,0,2 -Andrea Fuentes,25,Spain,2008,39684,Synchronized Swimming,0,2,0,2 -Gemma Mengual,31,Spain,2008,39684,Synchronized Swimming,0,2,0,2 -Anastasiya Yermakova,25,Russia,2008,39684,Synchronized Swimming,2,0,0,2 -Becky Adlington,19,Great Britain,2008,39684,Swimming,2,0,0,2 -Leith Brodie,22,Australia,2008,39684,Swimming,0,0,2,2 -Cate Campbell,16,Australia,2008,39684,Swimming,0,0,2,2 -César Cielo Filho,21,Brazil,2008,39684,Swimming,1,0,1,2 -Hugues Duboscq,26,France,2008,39684,Swimming,0,0,2,2 -Felicity Galvez,23,Australia,2008,39684,Swimming,2,0,0,2 -Grant Hackett,28,Australia,2008,39684,Swimming,0,1,1,2 -Kara Lynn Joyce,22,United States,2008,39684,Swimming,0,2,0,2 -Amaury Leveaux,22,France,2008,39684,Swimming,0,2,0,2 -Christine Magnuson,22,United States,2008,39684,Swimming,0,2,0,2 -Patrick Murphy,24,Australia,2008,39684,Swimming,0,0,2,2 -Park Tae-Hwan,18,South Korea,2008,39684,Swimming,1,1,0,2 -Shayne Reese,25,Australia,2008,39684,Swimming,1,0,1,2 -Brenton Rickard,24,Australia,2008,39684,Swimming,0,2,0,2 -Mel Schlanger,21,Australia,2008,39684,Swimming,1,0,1,2 -Julia Smit,20,United States,2008,39684,Swimming,0,1,1,2 -Britta Steffen,24,Germany,2008,39684,Swimming,2,0,0,2 -Hayden Stoeckel,24,Australia,2008,39684,Swimming,0,1,1,2 -Matt Targett,22,Australia,2008,39684,Swimming,0,1,1,2 -Peter Vanderkaay,24,United States,2008,39684,Swimming,1,0,1,2 -Arkady Vyachanin,24,Russia,2008,39684,Swimming,0,0,2,2 -Garrett Weber-Gale,23,United States,2008,39684,Swimming,2,0,0,2 -Jin Jong-O,28,South Korea,2008,39684,Shooting,1,1,0,2 -Katerina Kurková-Emmons,24,Czech Republic,2008,39684,Shooting,1,1,0,2 -Georgeta Damian-Andrunache,32,Romania,2008,39684,Rowing,1,0,1,2 -Viorica Susanu,32,Romania,2008,39684,Rowing,1,0,1,2 -Chen Yibing,23,China,2008,39684,Gymnastics,2,0,0,2 -Anton Golotsutskov,23,Russia,2008,39684,Gymnastics,0,0,2,2 -He Kexin,16,China,2008,39684,Gymnastics,2,0,0,2 -Jonathan Horton,22,United States,2008,39684,Gymnastics,0,1,1,2 -Sandra Izbasa,18,Romania,2008,39684,Gymnastics,1,0,1,2 -Li Xiaopeng,27,China,2008,39684,Gymnastics,2,0,0,2 -Kohei Uchimura,19,Japan,2008,39684,Gymnastics,0,2,0,2 -Xiao Qin,23,China,2008,39684,Gymnastics,2,0,0,2 -Stefano Carozzo,29,Italy,2008,39684,Fencing,0,0,2,2 -Margherita Granbassi,28,Italy,2008,39684,Fencing,0,0,2,2 -Sada Jacobson,25,United States,2008,39684,Fencing,0,1,1,2 -Fabrice Jeannet,27,France,2008,39684,Fencing,1,1,0,2 -Nicolas Lopez,27,France,2008,39684,Fencing,1,1,0,2 -Matteo Tagliariol,25,Italy,2008,39684,Fencing,1,0,1,2 -Valentina Vezzali,34,Italy,2008,39684,Fencing,1,0,1,2 -Becca Ward,18,United States,2008,39684,Fencing,0,0,2,2 -Mariel Zagunis,23,United States,2008,39684,Fencing,1,0,1,2 -Tina Cook,37,Great Britain,2008,39684,Equestrian,0,0,2,2 -Heike Kemmer,46,Germany,2008,39684,Equestrian,1,0,1,2 -Eric Lamaze,40,Canada,2008,39684,Equestrian,1,1,0,2 -Beezie Madden,44,United States,2008,39684,Equestrian,1,0,1,2 -Hinrich Romeike,45,Germany,2008,39684,Equestrian,2,0,0,2 -Anky van Grunsven,40,Netherlands,2008,39684,Equestrian,1,1,0,2 -Isabell Werth,39,Germany,2008,39684,Equestrian,1,1,0,2 -Chen Ruolin,15,China,2008,39684,Diving,2,0,0,2 -Gleb Galperin,25,Russia,2008,39684,Diving,0,0,2,2 -Guo Jingjing,26,China,2008,39684,Diving,2,0,0,2 -Yuliya Pakhalina,30,Russia,2008,39684,Diving,0,2,0,2 -Qin Kai,22,China,2008,39684,Diving,1,0,1,2 -Wang Xin,16,China,2008,39684,Diving,1,0,1,2 -Wu Minxia,22,China,2008,39684,Diving,1,0,1,2 -Mickaël Bourgain,28,France,2008,39684,Cycling,0,1,1,2 -Fabian Cancellara,27,Switzerland,2008,39684,Cycling,1,1,0,2 -Jason Kenny,20,Great Britain,2008,39684,Cycling,1,1,0,2 -Joan Llaneras,39,Spain,2008,39684,Cycling,1,1,0,2 -Hayden Roulston,27,New Zealand,2008,39684,Cycling,0,1,1,2 -Bradley Wiggins,28,Great Britain,2008,39684,Cycling,2,0,0,2 -Tim Brabants,31,Great Britain,2008,39684,Canoeing,1,0,1,2 -David Cal,25,Spain,2008,39684,Canoeing,0,2,0,2 -Natasa Douchev-Janics,26,Hungary,2008,39684,Canoeing,1,1,0,2 -Christian Gille,32,Germany,2008,39684,Canoeing,0,1,1,2 -Katalin Kovács,32,Hungary,2008,39684,Canoeing,1,1,0,2 -Vadim Makhnyov,28,Belarus,2008,39684,Canoeing,1,0,1,2 -Roman Petrushenko,27,Belarus,2008,39684,Canoeing,1,0,1,2 -Katrin Wagner-Augustin,30,Germany,2008,39684,Canoeing,1,0,1,2 -Ken Wallace,25,Australia,2008,39684,Canoeing,1,0,1,2 -Tomasz Wylenzek,25,Germany,2008,39684,Canoeing,0,1,1,2 -Lee Hyo-Jeong,27,South Korea,2008,39684,Badminton,1,1,0,2 -Yu Yang,22,China,2008,39684,Badminton,1,0,1,2 -Elvan Abeylegesse,25,Turkey,2008,39684,Athletics,0,2,0,2 -Kenenisa Bekele,26,Ethiopia,2008,39684,Athletics,2,0,0,2 -Kerron Clement,22,United States,2008,39684,Athletics,1,1,0,2 -Tirunesh Dibaba,23,Ethiopia,2008,39684,Athletics,2,0,0,2 -Walter Dix,22,United States,2008,39684,Athletics,0,0,2,2 -Allyson Felix,22,United States,2008,39684,Athletics,1,1,0,2 -Yuliya Gushchina,25,Russia,2008,39684,Athletics,1,1,0,2 -Tatyana Lebedeva,32,Russia,2008,39684,Athletics,0,2,0,2 -LaShawn Merritt,22,United States,2008,39684,Athletics,2,0,0,2 -David Neville,24,United States,2008,39684,Athletics,1,0,1,2 -Sanya Richards-Ross,23,United States,2008,39684,Athletics,1,0,1,2 -Kerron Stewart,24,Jamaica,2008,39684,Athletics,0,1,1,2 -Jared Tallent,23,Australia,2008,39684,Athletics,0,1,1,2 -Angelo Taylor,29,United States,2008,39684,Athletics,2,0,0,2 -Richard Thompson,23,Trinidad and Tobago,2008,39684,Athletics,0,2,0,2 -Jeremy Wariner,24,United States,2008,39684,Athletics,1,1,0,2 -Shericka Williams,22,Jamaica,2008,39684,Athletics,0,1,1,2 -Park Gyeong-Mo,32,South Korea,2008,39684,Archery,1,1,0,2 -Park Seong-Hyeon,25,South Korea,2008,39684,Archery,1,1,0,2 -Yun Ok-Hui,23,South Korea,2008,39684,Archery,1,0,1,2 -Zhang Juanjuan,27,China,2008,39684,Archery,1,1,0,2 -Yusuf Abdusalomov,30,Tajikistan,2008,39684,Wrestling,0,1,0,1 -Bakhtiyar Akhmedov,21,Russia,2008,39684,Wrestling,0,1,0,1 -Islam-Beka Albiyev,19,Russia,2008,39684,Wrestling,1,0,0,1 -Roman Amoyan,24,Armenia,2008,39684,Wrestling,0,0,1,1 -Nazmi Avluca,31,Turkey,2008,39684,Wrestling,0,0,1,1 -Khasan Baroyev,25,Russia,2008,39684,Wrestling,0,1,0,1 -Mavlet Batyrov,24,Russia,2008,39684,Wrestling,1,0,0,1 -Rövs?n Bayramov,21,Azerbaijan,2008,39684,Wrestling,0,1,0,1 -Kanat Begaliyev,24,Kyrgyzstan,2008,39684,Wrestling,0,1,0,1 -Henry Cejudo,21,United States,2008,39684,Wrestling,1,0,0,1 -Chang Yongxiang,24,China,2008,39684,Wrestling,0,1,0,1 -Taras Danko,28,Ukraine,2008,39684,Wrestling,0,0,1,1 -Mirko Englich,29,Germany,2008,39684,Wrestling,0,1,0,1 -Vasyl Fedoryshyn,27,Ukraine,2008,39684,Wrestling,0,1,0,1 -Zoltán Fodor,23,Hungary,2008,39684,Wrestling,0,1,0,1 -Murad Gaydarov,28,Belarus,2008,39684,Wrestling,0,0,1,1 -Giorgi Gogshelidze,28,Georgia,2008,39684,Wrestling,0,0,1,1 -Christophe Guénot,29,France,2008,39684,Wrestling,0,0,1,1 -Steeve Guénot,22,France,2008,39684,Wrestling,1,0,0,1 -Kyoko Hamaguchi,30,Japan,2008,39684,Wrestling,0,0,1,1 -Carol Huynh,27,Canada,2008,39684,Wrestling,1,0,0,1 -Chiharu Icho,26,Japan,2008,39684,Wrestling,0,1,0,1 -Kaori Icho,24,Japan,2008,39684,Wrestling,1,0,0,1 -Manuchar K'virk'elia,29,Georgia,2008,39684,Wrestling,1,0,0,1 -Alyona Kartashova,26,Russia,2008,39684,Wrestling,0,1,0,1 -Georgy Ketoyev,22,Russia,2008,39684,Wrestling,0,0,1,1 -Aslanbek Khushtov,28,Russia,2008,39684,Wrestling,1,0,0,1 -Besik Kudukhov,22,Russia,2008,39684,Wrestling,0,0,1,1 -Sushil Kumar,25,India,2008,39684,Wrestling,0,0,1,1 -Mijaín López,25,Cuba,2008,39684,Wrestling,1,0,0,1 -Aset Mambetov,26,Kazakhstan,2008,39684,Wrestling,0,0,1,1 -Nazyr Mankiyev,23,Russia,2008,39684,Wrestling,1,0,0,1 -Tomohiro Matsunaga,28,Japan,2008,39684,Wrestling,0,1,0,1 -Iryna Merleni-Mykulchyn,26,Ukraine,2008,39684,Wrestling,0,0,1,1 -Randi Miller,24,United States,2008,39684,Wrestling,0,0,1,1 -Revaz Mindorashvili,32,Georgia,2008,39684,Wrestling,1,0,0,1 -Andrea Minguzzi,26,Italy,2008,39684,Wrestling,1,0,0,1 -Mindaugas Mizgaitis,28,Lithuania,2008,39684,Wrestling,0,0,1,1 -Seyed Mohammadi,28,Iran,2008,39684,Wrestling,0,0,1,1 -Sharvani Muradov,23,Russia,2008,39684,Wrestling,1,0,0,1 -David Musulbes,36,Slovakia,2008,39684,Wrestling,0,0,1,1 -Marid Mutalimov,28,Kazakhstan,2008,39684,Wrestling,0,0,1,1 -Park Eun-Chul,27,South Korea,2008,39684,Wrestling,0,0,1,1 -Yury Patrikeyev,28,Armenia,2008,39684,Wrestling,0,0,1,1 -Xetaq Qazyumov,25,Azerbaijan,2008,39684,Wrestling,0,0,1,1 -Jackeline Rentería,22,Colombia,2008,39684,Wrestling,0,0,1,1 -Vitaliy R?himov,23,Azerbaijan,2008,39684,Wrestling,0,1,0,1 -Ramazan Sahin,25,Turkey,2008,39684,Wrestling,1,0,0,1 -Buvaisa Saytiyev,33,Russia,2008,39684,Wrestling,1,0,0,1 -Mikhail Semyonov,24,Belarus,2008,39684,Wrestling,0,0,1,1 -Yelena Shalygina,21,Kazakhstan,2008,39684,Wrestling,0,0,1,1 -Andriy Stadnik,26,Ukraine,2008,39684,Wrestling,0,1,0,1 -Mariya Stadnik,20,Azerbaijan,2008,39684,Wrestling,0,0,1,1 -Artur Taymazov,29,Uzbekistan,2008,39684,Wrestling,1,0,0,1 -Nurbakyt Tengizbayev,25,Kazakhstan,2008,39684,Wrestling,0,0,1,1 -Kiril Terziev,24,Bulgaria,2008,39684,Wrestling,0,0,1,1 -Soslan Tigiyev,24,Uzbekistan,2008,39684,Wrestling,0,1,0,1 -Taymuraz Tigiyev,26,Kazakhstan,2008,39684,Wrestling,0,1,0,1 -Otar Tushishvili,30,Georgia,2008,39684,Wrestling,0,0,1,1 -Ruslan Tyumenbayev,22,Kyrgyzstan,2008,39684,Wrestling,0,0,1,1 -Armen Vardanian,25,Ukraine,2008,39684,Wrestling,0,0,1,1 -Radoslav Velikov,24,Bulgaria,2008,39684,Wrestling,0,0,1,1 -Tonya Verbeek,31,Canada,2008,39684,Wrestling,0,0,1,1 -Wang Jiao,20,China,2008,39684,Wrestling,1,0,0,1 -Adam Wheeler,27,United States,2008,39684,Wrestling,0,0,1,1 -Agnieszka Wieszczek,25,Poland,2008,39684,Wrestling,0,0,1,1 -Xu Li,18,China,2008,39684,Wrestling,0,1,0,1 -Yavor Yanakiev,23,Bulgaria,2008,39684,Wrestling,0,0,1,1 -Saori Yoshida,25,Japan,2008,39684,Wrestling,1,0,0,1 -Kenichi Yumoto,23,Japan,2008,39684,Wrestling,0,0,1,1 -Stanka Zlateva,25,Bulgaria,2008,39684,Wrestling,0,1,0,1 -Khadzhimurat Akkayev,23,Russia,2008,39684,Weightlifting,0,0,1,1 -Andrey Aryamnov,20,Belarus,2008,39684,Weightlifting,1,0,0,1 -Cao Lei,24,China,2008,39684,Weightlifting,1,0,0,1 -Chen Wei-Ling,26,Chinese Taipei,2008,39684,Weightlifting,0,0,1,1 -Chen Xiexia,25,China,2008,39684,Weightlifting,1,0,0,1 -Chen Yanqing,29,China,2008,39684,Weightlifting,1,0,0,1 -Yevgeny Chigishev,29,Russia,2008,39684,Weightlifting,0,1,0,1 -Vencelas Dabaya,27,France,2008,39684,Weightlifting,0,1,0,1 -Gevorg Davtyan,25,Armenia,2008,39684,Weightlifting,0,0,1,1 -Nataliya Davydova,23,Ukraine,2008,39684,Weightlifting,0,0,1,1 -Mariya Grabovetskaya,21,Kazakhstan,2008,39684,Weightlifting,0,0,1,1 -Hoàng Anh Tu?n,23,Vietnam,2008,39684,Weightlifting,0,1,0,1 -Ilya Ilyin,20,Kazakhstan,2008,39684,Weightlifting,1,0,0,1 -Eko Irawan,19,Indonesia,2008,39684,Weightlifting,0,0,1,1 -Jang Mi-Ran,24,South Korea,2008,39684,Weightlifting,1,0,0,1 -Prapawadee Jaroenrattanatarakoon,24,Thailand,2008,39684,Weightlifting,1,0,0,1 -Dmitry Klokov,25,Russia,2008,39684,Weightlifting,0,1,0,1 -Olha Korobka,22,Ukraine,2008,39684,Weightlifting,0,1,0,1 -Szymon Kolecki,26,Poland,2008,39684,Weightlifting,0,1,0,1 -Dmitry Lapikov,26,Russia,2008,39684,Weightlifting,0,0,1,1 -Li Hongli,27,China,2008,39684,Weightlifting,0,1,0,1 -Liao Hui,20,China,2008,39684,Weightlifting,1,0,0,1 -Liu Chunhong,25,China,2008,39684,Weightlifting,1,0,0,1 -Long Qingquan,17,China,2008,39684,Weightlifting,1,0,0,1 -Lu Ying-Chi,23,Chinese Taipei,2008,39684,Weightlifting,0,0,1,1 -Lu Yong,22,China,2008,39684,Weightlifting,1,0,0,1 -Tigran G. Martirosyan,20,Armenia,2008,39684,Weightlifting,0,0,1,1 -Tigran V. Martirosyan,25,Armenia,2008,39684,Weightlifting,0,0,1,1 -Irina Nekrasova,20,Kazakhstan,2008,39684,Weightlifting,0,1,0,1 -Anastasiya Novikova,26,Belarus,2008,39684,Weightlifting,0,0,1,1 -O Jong-Ae,24,North Korea,2008,39684,Weightlifting,0,0,1,1 -Sibel Özkan,20,Turkey,2008,39684,Weightlifting,0,1,0,1 -Pak Hyon-Suk,23,North Korea,2008,39684,Weightlifting,1,0,0,1 -Andrey Rybakov,26,Belarus,2008,39684,Weightlifting,0,1,0,1 -Sa Jae-Hyeok,23,South Korea,2008,39684,Weightlifting,1,0,0,1 -Diego Fernando Salazar,27,Colombia,2008,39684,Weightlifting,0,1,0,1 -Viktors Šcerbatihs,33,Latvia,2008,39684,Weightlifting,0,0,1,1 -Marina Shainova,22,Russia,2008,39684,Weightlifting,0,1,0,1 -Oksana Slivenko,21,Russia,2008,39684,Weightlifting,0,1,0,1 -Matthias Steiner,25,Germany,2008,39684,Weightlifting,1,0,0,1 -Triyatno,20,Indonesia,2008,39684,Weightlifting,0,0,1,1 -Alla Vazhenina,25,Kazakhstan,2008,39684,Weightlifting,0,1,0,1 -Nadezhda Yevstyukhina,20,Russia,2008,39684,Weightlifting,0,0,1,1 -Yoon Jin-Hee,22,South Korea,2008,39684,Weightlifting,0,1,0,1 -Zhang Xiangxiang,25,China,2008,39684,Weightlifting,1,0,0,1 -Betsey Armstrong,25,United States,2008,39684,Waterpolo,0,1,0,1 -Tony Azevedo,26,United States,2008,39684,Waterpolo,0,1,0,1 -Ryan Bailey,32,United States,2008,39684,Waterpolo,0,1,0,1 -Gemma Beadsworth,21,Australia,2008,39684,Waterpolo,0,0,1,1 -Layne Beaubien,32,United States,2008,39684,Waterpolo,0,1,0,1 -Tibor Benedek,36,Hungary,2008,39684,Waterpolo,1,0,0,1 -Péter Biros,32,Hungary,2008,39684,Waterpolo,1,0,0,1 -Brandon Brooks,27,United States,2008,39684,Waterpolo,0,1,0,1 -Mieke Cabout,22,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Patty Cardenas,23,United States,2008,39684,Waterpolo,0,1,0,1 -Aleksandar Ciric,30,Serbia,2008,39684,Waterpolo,0,0,1,1 -Kami Craig,21,United States,2008,39684,Waterpolo,0,1,0,1 -Nikita Cuffe,28,Australia,2008,39684,Waterpolo,0,0,1,1 -Daniëlle de Bruijn,30,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Filip Filipovic,21,Serbia,2008,39684,Waterpolo,0,0,1,1 -Suzie Fraser,19,Australia,2008,39684,Waterpolo,0,0,1,1 -István Gergely,31,Hungary,2008,39684,Waterpolo,1,0,0,1 -Živko Gocic,25,Serbia,2008,39684,Waterpolo,0,0,1,1 -Taniele Gofers,23,Australia,2008,39684,Waterpolo,0,0,1,1 -Natalie Golda,26,United States,2008,39684,Waterpolo,0,1,0,1 -Alison Gregorka,23,United States,2008,39684,Waterpolo,0,1,0,1 -Rianne Guichelaar,24,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Kate Gynther,26,Australia,2008,39684,Waterpolo,0,0,1,1 -Biurakn Hakhverdian,22,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Brittany Hayes,23,United States,2008,39684,Waterpolo,0,1,0,1 -Amy Hetzel,25,Australia,2008,39684,Waterpolo,0,0,1,1 -Jaime Hipp,26,United States,2008,39684,Waterpolo,0,1,0,1 -Norbert Hosnyánszky,24,Hungary,2008,39684,Waterpolo,1,0,0,1 -Peter Hudnut,28,United States,2008,39684,Waterpolo,0,1,0,1 -Tim Hutten,23,United States,2008,39684,Waterpolo,0,1,0,1 -Tamás Kásás,32,Hungary,2008,39684,Waterpolo,1,0,0,1 -Gábor Kis,25,Hungary,2008,39684,Waterpolo,1,0,0,1 -Gergo Kiss,30,Hungary,2008,39684,Waterpolo,1,0,0,1 -Noeki Klein,25,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Bronwen Knox,22,Australia,2008,39684,Waterpolo,0,0,1,1 -Emma Knox,30,Australia,2008,39684,Waterpolo,0,0,1,1 -Simone Koot,27,Netherlands,2008,39684,Waterpolo,1,0,0,1 -J. W. Krumpholz,20,United States,2008,39684,Waterpolo,0,1,0,1 -Norbert Madaras,28,Hungary,2008,39684,Waterpolo,1,0,0,1 -Alicia McCormack,25,Australia,2008,39684,Waterpolo,0,0,1,1 -Rick Merlo,26,United States,2008,39684,Waterpolo,0,1,0,1 -Tamás Molnár,33,Hungary,2008,39684,Waterpolo,1,0,0,1 -Merrill Moses,30,United States,2008,39684,Waterpolo,0,1,0,1 -Branko Pekovic,29,Serbia,2008,39684,Waterpolo,0,0,1,1 -Heather Petri,30,United States,2008,39684,Waterpolo,0,1,0,1 -Duško Pijetlovic,23,Serbia,2008,39684,Waterpolo,0,0,1,1 -Jeff Powers,28,United States,2008,39684,Waterpolo,0,1,0,1 -Andrija Prlainovic,21,Serbia,2008,39684,Waterpolo,0,0,1,1 -Nikola Raden,23,Serbia,2008,39684,Waterpolo,0,0,1,1 -Bec Rippon,29,Australia,2008,39684,Waterpolo,0,0,1,1 -Mel Rippon,27,Australia,2008,39684,Waterpolo,0,0,1,1 -Jenna Santoromito,21,Australia,2008,39684,Waterpolo,0,0,1,1 -Mia Santoromito,23,Australia,2008,39684,Waterpolo,0,0,1,1 -Aleksandar Šapic,30,Serbia,2008,39684,Waterpolo,0,0,1,1 -Dejan Savic,33,Serbia,2008,39684,Waterpolo,0,0,1,1 -Denis Šefik,31,Serbia,2008,39684,Waterpolo,0,0,1,1 -Alette Sijbring,26,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Yasemin Smit,23,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Jesse Smith,25,United States,2008,39684,Waterpolo,0,1,0,1 -Slobodan Soro,29,Serbia,2008,39684,Waterpolo,0,0,1,1 -Jessica Steffens,21,United States,2008,39684,Waterpolo,0,1,0,1 -Zoltán Szécsi,30,Hungary,2008,39684,Waterpolo,1,0,0,1 -Vanja Udovicic,25,Serbia,2008,39684,Waterpolo,0,0,1,1 -Iefke van Belkum,22,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Gillian van den Berg,36,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Marieke van den Ham,25,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Ilse van der Meijden,19,Netherlands,2008,39684,Waterpolo,1,0,0,1 -Moriah Van Norman,24,United States,2008,39684,Waterpolo,0,1,0,1 -Peter Varellas,23,United States,2008,39684,Waterpolo,0,1,0,1 -Dániel Varga,24,Hungary,2008,39684,Waterpolo,1,0,0,1 -Dénes Varga,21,Hungary,2008,39684,Waterpolo,1,0,0,1 -Tamás Varga,33,Hungary,2008,39684,Waterpolo,1,0,0,1 -Brenda Villa,28,United States,2008,39684,Waterpolo,0,1,0,1 -Vlada Vujasinovic,34,Serbia,2008,39684,Waterpolo,0,0,1,1 -Lauren Wenger,24,United States,2008,39684,Waterpolo,0,1,0,1 -Elsie Windes,23,United States,2008,39684,Waterpolo,0,1,0,1 -Adam Wright,31,United States,2008,39684,Waterpolo,0,1,0,1 -Robyn Ah Mow-Santos,32,United States,2008,39684,Volleyball,0,1,0,1 -Anderson,34,Brazil,2008,39684,Volleyball,0,1,0,1 -Lloy Ball,36,United States,2008,39684,Volleyball,1,0,0,1 -Yury Berezhko,24,Russia,2008,39684,Volleyball,0,0,1,1 -Lindsey Berg,28,United States,2008,39684,Volleyball,0,1,0,1 -Heather Bown,29,United States,2008,39684,Volleyball,0,1,0,1 -Bruninho,22,Brazil,2008,39684,Volleyball,0,1,0,1 -Carol,31,Brazil,2008,39684,Volleyball,1,0,0,1 -Dante,27,Brazil,2008,39684,Volleyball,0,1,0,1 -Nicole Davis,26,United States,2008,39684,Volleyball,0,1,0,1 -Escadinha,32,Brazil,2008,39684,Volleyball,0,1,0,1 -Fabi,28,Brazil,2008,39684,Volleyball,1,0,0,1 -Fabiana,23,Brazil,2008,39684,Volleyball,1,0,0,1 -Feng Kun,29,China,2008,39684,Volleyball,0,0,1,1 -Fofão,38,Brazil,2008,39684,Volleyball,1,0,0,1 -Gabe Gardner,32,United States,2008,39684,Volleyball,1,0,0,1 -Giba,31,Brazil,2008,39684,Volleyball,0,1,0,1 -Kim Glass,23,United States,2008,39684,Volleyball,0,1,0,1 -Sergey Grankin,23,Russia,2008,39684,Volleyball,0,0,1,1 -Gustavo,32,Brazil,2008,39684,Volleyball,0,1,0,1 -Tayyiba Haneef-Park,29,United States,2008,39684,Volleyball,0,1,0,1 -Kevin Hansen,26,United States,2008,39684,Volleyball,1,0,0,1 -André Heller,32,Brazil,2008,39684,Volleyball,0,1,0,1 -Tom Hoff,35,United States,2008,39684,Volleyball,1,0,0,1 -Pereira de Carvalho Endres Jaque,24,Brazil,2008,39684,Volleyball,1,0,0,1 -Jennifer Joines,25,United States,2008,39684,Volleyball,0,1,0,1 -Vadim Khamuttskikh,38,Russia,2008,39684,Volleyball,0,0,1,1 -Aleksandr Korneyev,27,Russia,2008,39684,Volleyball,0,0,1,1 -Aleksandr Kosaryev,30,Russia,2008,39684,Volleyball,0,0,1,1 -Aleksey Kuleshov,29,Russia,2008,39684,Volleyball,0,0,1,1 -Rich Lambourne,33,United States,2008,39684,Volleyball,1,0,0,1 -David Lee,26,United States,2008,39684,Volleyball,1,0,0,1 -Li Juan,27,China,2008,39684,Volleyball,0,0,1,1 -Liu Yanan,27,China,2008,39684,Volleyball,0,0,1,1 -Ma Yunwen,21,China,2008,39684,Volleyball,0,0,1,1 -Marcelinho,33,Brazil,2008,39684,Volleyball,0,1,0,1 -Mari,24,Brazil,2008,39684,Volleyball,1,0,0,1 -Maksim Mikhaylov,20,Russia,2008,39684,Volleyball,0,0,1,1 -Ryan Millar,30,United States,2008,39684,Volleyball,1,0,0,1 -Murilo,27,Brazil,2008,39684,Volleyball,0,1,0,1 -André Nascimento,29,Brazil,2008,39684,Volleyball,0,1,0,1 -Ogonna Nnamani,25,United States,2008,39684,Volleyball,0,1,0,1 -Aleksey Ostapenko,22,Russia,2008,39684,Volleyball,0,0,1,1 -Paula,26,Brazil,2008,39684,Volleyball,1,0,0,1 -Semyon Poltavsky,27,Russia,2008,39684,Volleyball,0,0,1,1 -Reid Priddy,30,United States,2008,39684,Volleyball,1,0,0,1 -Rodrigão,29,Brazil,2008,39684,Volleyball,0,1,0,1 -Sean Rooney,25,United States,2008,39684,Volleyball,1,0,0,1 -Riley Salmon,32,United States,2008,39684,Volleyball,1,0,0,1 -Samuel,24,Brazil,2008,39684,Volleyball,0,1,0,1 -Sassá,25,Brazil,2008,39684,Volleyball,1,0,0,1 -Danielle Scott-Arruda,35,United States,2008,39684,Volleyball,0,1,0,1 -Sheilla,25,Brazil,2008,39684,Volleyball,1,0,0,1 -Clay Stanley,30,United States,2008,39684,Volleyball,1,0,0,1 -Stacy Sykora,31,United States,2008,39684,Volleyball,0,1,0,1 -Sergey Tetyukhin,32,Russia,2008,39684,Volleyball,0,0,1,1 -Thaísa,21,Brazil,2008,39684,Volleyball,1,0,0,1 -Logan Tom,27,United States,2008,39684,Volleyball,0,1,0,1 -Scott Touzinsky,26,United States,2008,39684,Volleyball,1,0,0,1 -Valeskinha,32,Brazil,2008,39684,Volleyball,1,0,0,1 -Aleksey Verbov,26,Russia,2008,39684,Volleyball,0,0,1,1 -Aleksandr Volkov,23,Russia,2008,39684,Volleyball,0,0,1,1 -Walewska,29,Brazil,2008,39684,Volleyball,1,0,0,1 -Wang Yimei,20,China,2008,39684,Volleyball,0,0,1,1 -Wei Qiuyue,19,China,2008,39684,Volleyball,0,0,1,1 -Kim Willoughby,27,United States,2008,39684,Volleyball,0,1,0,1 -Xu Yunli,21,China,2008,39684,Volleyball,0,0,1,1 -Xue Ming,21,China,2008,39684,Volleyball,0,0,1,1 -Yang Hao,28,China,2008,39684,Volleyball,0,0,1,1 -Zhang Na,28,China,2008,39684,Volleyball,0,0,1,1 -Zhao Ruirui,26,China,2008,39684,Volleyball,0,0,1,1 -Zhou Suhong,29,China,2008,39684,Volleyball,0,0,1,1 -Timo Boll,27,Germany,2008,39684,Table Tennis,0,1,0,1 -Dang Ye-Seo,27,South Korea,2008,39684,Table Tennis,0,0,1,1 -Feng Tian Wei,21,Singapore,2008,39684,Table Tennis,0,1,0,1 -Kim Gyeong-A,31,South Korea,2008,39684,Table Tennis,0,0,1,1 -Li Jia Wei,27,Singapore,2008,39684,Table Tennis,0,1,0,1 -O Sang-Eun,31,South Korea,2008,39684,Table Tennis,0,0,1,1 -Dmitrij Ovtcharov,19,Germany,2008,39684,Table Tennis,0,1,0,1 -Park Mi-Yeong,26,South Korea,2008,39684,Table Tennis,0,0,1,1 -Christian Süß,23,Germany,2008,39684,Table Tennis,0,1,0,1 -Wang Jue Gu,28,Singapore,2008,39684,Table Tennis,0,1,0,1 -Yoon Jae-Young,25,South Korea,2008,39684,Table Tennis,0,0,1,1 -Yu Seung-Min,26,South Korea,2008,39684,Table Tennis,0,0,1,1 -Bevan Docherty,31,New Zealand,2008,39684,Triathlon,0,0,1,1 -Vanessa Fernandes,22,Portugal,2008,39684,Triathlon,0,1,0,1 -Jan Frodeno,27,Germany,2008,39684,Triathlon,1,0,0,1 -Emma Moffatt,23,Australia,2008,39684,Triathlon,0,0,1,1 -Emma Snowsill,27,Australia,2008,39684,Triathlon,1,0,0,1 -Simon Whitfield,33,Canada,2008,39684,Triathlon,0,1,0,1 -Jason Burnett,21,Canada,2008,39684,Trampoline,0,1,0,1 -Karen Cockburn,28,Canada,2008,39684,Trampoline,0,1,0,1 -Dong Dong,19,China,2008,39684,Trampoline,0,0,1,1 -He Wenna,19,China,2008,39684,Trampoline,1,0,0,1 -Yekaterina Khilko,26,Uzbekistan,2008,39684,Trampoline,0,0,1,1 -Lu Chunlong,19,China,2008,39684,Trampoline,1,0,0,1 -Arman Chilmanov,24,Kazakhstan,2008,39684,Taekwondo,0,0,1,1 -Chu Mu-Yen,26,Chinese Taipei,2008,39684,Taekwondo,0,0,1,1 -Chika Chukwumerije,24,Nigeria,2008,39684,Taekwondo,0,0,1,1 -Dalia Contreras,24,Venezuela,2008,39684,Taekwondo,0,0,1,1 -Gwladys Epangue,25,France,2008,39684,Taekwondo,0,0,1,1 -María Espinoza,20,Mexico,2008,39684,Taekwondo,1,0,0,1 -Natália Falavigna,24,Brazil,2008,39684,Taekwondo,0,0,1,1 -Hwang Gyeong-Seon,22,South Korea,2008,39684,Taekwondo,1,0,0,1 -Im Su-Jeong,22,South Korea,2008,39684,Taekwondo,1,0,0,1 -Ja Dong-Min,21,South Korea,2008,39684,Taekwondo,1,0,0,1 -Diana Lopez,24,United States,2008,39684,Taekwondo,0,0,1,1 -Mark Lopez,26,United States,2008,39684,Taekwondo,0,1,0,1 -Steven Lopez,29,United States,2008,39684,Taekwondo,0,0,1,1 -Yulis Mercedes,28,Dominican Republic,2008,39684,Taekwondo,0,1,0,1 -Daynellis Montejo,23,Cuba,2008,39684,Taekwondo,0,0,1,1 -Alexandros Nikolaidis,28,Greece,2008,39684,Taekwondo,0,1,0,1 -Rohullah Nikpai,21,Afghanistan,2008,39684,Taekwondo,0,0,1,1 -Guillermo Pérez,28,Mexico,2008,39684,Taekwondo,1,0,0,1 -Buttree Puedpong,17,Thailand,2008,39684,Taekwondo,0,1,0,1 -Hadi Saei,32,Iran,2008,39684,Taekwondo,1,0,0,1 -Sandra Šaric,24,Croatia,2008,39684,Taekwondo,0,0,1,1 -Mauro Sarmiento,25,Italy,2008,39684,Taekwondo,0,1,0,1 -Karine Sergerie,23,Canada,2008,39684,Taekwondo,0,1,0,1 -Nina Solheim,29,Norway,2008,39684,Taekwondo,0,1,0,1 -Son Tae-Jin,20,South Korea,2008,39684,Taekwondo,1,0,0,1 -Sarah Stevenson,25,Great Britain,2008,39684,Taekwondo,0,0,1,1 -Sung Yu-Chi,26,Chinese Taipei,2008,39684,Taekwondo,0,0,1,1 -Azize Tanrikulu,22,Turkey,2008,39684,Taekwondo,0,1,0,1 -Servet Tazegül,19,Turkey,2008,39684,Taekwondo,0,0,1,1 -Wu Jingyu,21,China,2008,39684,Taekwondo,1,0,0,1 -Zhu Guo,23,China,2008,39684,Taekwondo,0,0,1,1 -Martina Zubcic,19,Croatia,2008,39684,Taekwondo,0,0,1,1 -Simon Aspelin,34,Sweden,2008,39684,Tennis,0,1,0,1 -Bob Bryan,30,United States,2008,39684,Tennis,0,0,1,1 -Mike Bryan,30,United States,2008,39684,Tennis,0,0,1,1 -Yelena Dementyeva,26,Russia,2008,39684,Tennis,1,0,0,1 -Roger Federer,27,Switzerland,2008,39684,Tennis,1,0,0,1 -Fernando González,28,Chile,2008,39684,Tennis,0,1,0,1 -Thomas Johansson,33,Sweden,2008,39684,Tennis,0,1,0,1 -Anabel Medina,26,Spain,2008,39684,Tennis,0,1,0,1 -Rafael Nadal,22,Spain,2008,39684,Tennis,1,0,0,1 -Vivi Ruano,34,Spain,2008,39684,Tennis,0,1,0,1 -Dinara Safina,22,Russia,2008,39684,Tennis,0,1,0,1 -Stanislas Wawrinka,23,Switzerland,2008,39684,Tennis,1,0,0,1 -Serena Williams,26,United States,2008,39684,Tennis,1,0,0,1 -Venus Williams,28,United States,2008,39684,Tennis,1,0,0,1 -Yan Zi,23,China,2008,39684,Tennis,0,0,1,1 -Zheng Jie,25,China,2008,39684,Tennis,0,0,1,1 -Vera Zvonaryova,23,Russia,2008,39684,Tennis,0,0,1,1 -Novak Ðokovic,21,Serbia,2008,39684,Tennis,0,0,1,1 -Alba Cabello,22,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Raquel Corral,27,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Mariya Gromova,24,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Gu Beibei,27,China,2008,39684,Synchronized Swimming,0,0,1,1 -Saho Harada,25,Japan,2008,39684,Synchronized Swimming,0,0,1,1 -Thais Henríquez,25,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Huang Xuechen,18,China,2008,39684,Synchronized Swimming,0,0,1,1 -Nataliya Ishchenko,22,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Jiang Tingting,21,China,2008,39684,Synchronized Swimming,0,0,1,1 -Jiang Wenwen,21,China,2008,39684,Synchronized Swimming,0,0,1,1 -Elvira Khasyanova,27,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Olga Kuzhela,22,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Liu Ou,21,China,2008,39684,Synchronized Swimming,0,0,1,1 -Laura López,20,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Luo Xi,20,China,2008,39684,Synchronized Swimming,0,0,1,1 -Yelena Ovchinnikova,26,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Irina Rodríguez,30,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Svetlana Romashina,18,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Anna Shorina,25,Russia,2008,39684,Synchronized Swimming,1,0,0,1 -Sun Qiuting,22,China,2008,39684,Synchronized Swimming,0,0,1,1 -Emiko Suzuki,26,Japan,2008,39684,Synchronized Swimming,0,0,1,1 -Paola Tirados,28,Spain,2008,39684,Synchronized Swimming,0,1,0,1 -Wang Na,24,China,2008,39684,Synchronized Swimming,0,0,1,1 -Zhang Xiaohuan,28,China,2008,39684,Synchronized Swimming,0,0,1,1 -Nathan Adrian,19,United States,2008,39684,Swimming,1,0,0,1 -Angie Bainbridge,18,Australia,2008,39684,Swimming,1,0,0,1 -Bronte Barratt,19,Australia,2008,39684,Swimming,1,0,0,1 -Ricky Berens,20,United States,2008,39684,Swimming,1,0,0,1 -Fréd Bousquet,27,France,2008,39684,Swimming,0,1,0,1 -Elaine Breeden,19,United States,2008,39684,Swimming,0,1,0,1 -Grant Brits,21,Australia,2008,39684,Swimming,0,0,1,1 -Caroline Burckle,22,United States,2008,39684,Swimming,0,0,1,1 -Ashley Callus,29,Australia,2008,39684,Swimming,0,0,1,1 -Milorad Cavic,24,Serbia,2008,39684,Swimming,0,1,0,1 -Ryan Cochrane,19,Canada,2008,39684,Swimming,0,0,1,1 -Ian Crocker,25,United States,2008,39684,Swimming,1,0,0,1 -Lara Davenport,24,Australia,2008,39684,Swimming,1,0,0,1 -Dave Davies,23,Great Britain,2008,39684,Swimming,0,1,0,1 -Inge Dekker,22,Netherlands,2008,39684,Swimming,1,0,0,1 -Ash Delaney,22,Australia,2008,39684,Swimming,0,1,0,1 -Nick Ffrost,21,Australia,2008,39684,Swimming,0,0,1,1 -Alessia Filippi,21,Italy,2008,39684,Swimming,0,1,0,1 -Lotte Friis,20,Denmark,2008,39684,Swimming,0,0,1,1 -Takuro Fujii,23,Japan,2008,39684,Swimming,0,0,1,1 -Mark Gangloff,26,United States,2008,39684,Swimming,1,0,0,1 -Fabien Gilot,24,France,2008,39684,Swimming,0,1,0,1 -Brendan Hansen,27,United States,2008,39684,Swimming,1,0,0,1 -Femke Heemskerk,20,Netherlands,2008,39684,Swimming,1,0,0,1 -Lara Ilchenko,19,Russia,2008,39684,Swimming,1,0,0,1 -Sara Isakovic,20,Slovenia,2008,39684,Swimming,0,1,0,1 -Dan Izotov,16,Russia,2008,39684,Swimming,0,1,0,1 -Jo Jackson,21,Great Britain,2008,39684,Swimming,0,0,1,1 -Larsen Jensen,22,United States,2008,39684,Swimming,0,0,1,1 -Jiao Liuyang,18,China,2008,39684,Swimming,0,1,0,1 -Cullen Jones,24,United States,2008,39684,Swimming,1,0,0,1 -Mirna Jukic,22,Austria,2008,39684,Swimming,0,0,1,1 -Klete Keller,26,United States,2008,39684,Swimming,1,0,0,1 -Ranomi Kromowidjojo,17,Netherlands,2008,39684,Swimming,1,0,0,1 -Yevgeny Lagunov,22,Russia,2008,39684,Swimming,0,1,0,1 -Liu Zige,19,China,2008,39684,Swimming,1,0,0,1 -Nikita Lobintsev,19,Russia,2008,39684,Swimming,0,1,0,1 -Thomas Lurz,28,Germany,2008,39684,Swimming,0,0,1,1 -Linda MacKenzie,24,Australia,2008,39684,Swimming,1,0,0,1 -Grégory Mallet,24,France,2008,39684,Swimming,0,1,0,1 -Christine Marshall,22,United States,2008,39684,Swimming,0,0,1,1 -Takeshi Matsuda,24,Japan,2008,39684,Swimming,0,0,1,1 -Oussama Mellouli,24,Tunisia,2008,39684,Swimming,1,0,0,1 -Alice Mills,22,Australia,2008,39684,Swimming,0,0,1,1 -Junichi Miyashita,24,Japan,2008,39684,Swimming,0,0,1,1 -Reiko Nakamura,26,Japan,2008,39684,Swimming,0,0,1,1 -Sara Nordenstam,25,Norway,2008,39684,Swimming,0,0,1,1 -Lacey Nymeyer,22,United States,2008,39684,Swimming,0,1,0,1 -Alexander Dale Oen,23,Norway,2008,39684,Swimming,0,1,0,1 -Kirk Palmer,21,Australia,2008,39684,Swimming,0,0,1,1 -Kylie Palmer,18,Australia,2008,39684,Swimming,1,0,0,1 -Cassie Patten,21,Great Britain,2008,39684,Swimming,0,0,1,1 -Keri-Anne Payne,20,Great Britain,2008,39684,Swimming,0,1,0,1 -Federica Pellegrini,20,Italy,2008,39684,Swimming,1,0,0,1 -Adam Pine,32,Australia,2008,39684,Swimming,0,1,0,1 -Mikhail Polishchuk,19,Russia,2008,39684,Swimming,0,1,0,1 -Megan Quann-Jendrick,24,United States,2008,39684,Swimming,0,1,0,1 -Hisayoshi Sato,21,Japan,2008,39684,Swimming,0,0,1,1 -Allison Schmitt,18,United States,2008,39684,Swimming,0,0,1,1 -Hinkelien Schreuder,24,Netherlands,2008,39684,Swimming,1,0,0,1 -Emily Seebohm,16,Australia,2008,39684,Swimming,1,0,0,1 -Emily Silver,22,United States,2008,39684,Swimming,0,1,0,1 -Christian Sprenger,22,Australia,2008,39684,Swimming,0,1,0,1 -Boris Steimetz,21,France,2008,39684,Swimming,0,1,0,1 -Aleksandr Sukhorukov,20,Russia,2008,39684,Swimming,0,1,0,1 -Sun Ye,19,China,2008,39684,Swimming,0,0,1,1 -Tan Miao,21,China,2008,39684,Swimming,0,1,0,1 -Tang Jingzhi,21,China,2008,39684,Swimming,0,1,0,1 -Maarten van der Weijden,27,Netherlands,2008,39684,Swimming,1,0,0,1 -Manon van Rooijen,26,Netherlands,2008,39684,Swimming,1,0,0,1 -Kim Vandenberg,24,United States,2008,39684,Swimming,0,0,1,1 -Marleen Veldhuis,29,Netherlands,2008,39684,Swimming,1,0,0,1 -Erik Vendt,27,United States,2008,39684,Swimming,1,0,0,1 -Dave Walters,20,United States,2008,39684,Swimming,1,0,0,1 -Tarnee White,27,Australia,2008,39684,Swimming,1,0,0,1 -Ben Wildman-Tobriner,23,United States,2008,39684,Swimming,1,0,0,1 -Xu Tianlongzi,17,China,2008,39684,Swimming,0,0,1,1 -Yang Yu,23,China,2008,39684,Swimming,0,1,0,1 -Zhang Lin,21,China,2008,39684,Swimming,0,1,0,1 -Zhao Jing,17,China,2008,39684,Swimming,0,0,1,1 -Zhou Yafei,24,China,2008,39684,Swimming,0,0,1,1 -Zhu Qianwei,17,China,2008,39684,Swimming,0,1,0,1 -Monica Abbott,23,United States,2008,39684,Softball,0,1,0,1 -Sandy Allen-Lewis,29,Australia,2008,39684,Softball,0,0,1,1 -Laura Berg,33,United States,2008,39684,Softball,0,1,0,1 -Jodie Bowering,26,Australia,2008,39684,Softball,0,0,1,1 -Crystl Bustos,30,United States,2008,39684,Softball,0,1,0,1 -Kylie Cronk,24,Australia,2008,39684,Softball,0,0,1,1 -Andrea Duran,24,United States,2008,39684,Softball,0,1,0,1 -Naho Emoto,22,Japan,2008,39684,Softball,1,0,0,1 -Jennie Finch,27,United States,2008,39684,Softball,0,1,0,1 -Tairia Flowers,27,United States,2008,39684,Softball,0,1,0,1 -Motoko Fujimoto,27,Japan,2008,39684,Softball,1,0,0,1 -Vicky Galindo,24,United States,2008,39684,Softball,0,1,0,1 -Kelly Hardie,38,Australia,2008,39684,Softball,0,0,1,1 -Tanya Harding,36,Australia,2008,39684,Softball,0,0,1,1 -Megu Hirose,27,Japan,2008,39684,Softball,1,0,0,1 -Emi Inui,24,Japan,2008,39684,Softball,1,0,0,1 -Sachiko Ito,32,Japan,2008,39684,Softball,1,0,0,1 -Lovie Jung,28,United States,2008,39684,Softball,0,1,0,1 -Ayumi Karino,23,Japan,2008,39684,Softball,1,0,0,1 -Kelly Kretschman,28,United States,2008,39684,Softball,0,1,0,1 -Lauren Lappin,24,United States,2008,39684,Softball,0,1,0,1 -Caitlin Lowe,23,United States,2008,39684,Softball,0,1,0,1 -Satoko Mabuchi,26,Japan,2008,39684,Softball,1,0,0,1 -Jessica Mendoza,27,United States,2008,39684,Softball,0,1,0,1 -Yukiyo Mine,20,Japan,2008,39684,Softball,1,0,0,1 -Masumi Mishina,26,Japan,2008,39684,Softball,1,0,0,1 -Simmone Morrow,31,Australia,2008,39684,Softball,0,0,1,1 -Tracey Mosley,34,Australia,2008,39684,Softball,0,0,1,1 -Rei Nishiyama,24,Japan,2008,39684,Softball,1,0,0,1 -Stacey Nuveman,30,United States,2008,39684,Softball,0,1,0,1 -Cat Osterman,25,United States,2008,39684,Softball,0,1,0,1 -Stacey Porter,26,Australia,2008,39684,Softball,0,0,1,1 -Melanie Roche,37,Australia,2008,39684,Softball,0,0,1,1 -Hiroko Sakai,29,Japan,2008,39684,Softball,1,0,0,1 -Rie Sato,27,Japan,2008,39684,Softball,1,0,0,1 -Justine Smethurst,21,Australia,2008,39684,Softball,0,0,1,1 -Mika Someya,25,Japan,2008,39684,Softball,1,0,0,1 -Danielle Stewart,27,Australia,2008,39684,Softball,0,0,1,1 -Natalie Titcume,32,Australia,2008,39684,Softball,0,0,1,1 -Yukiko Ueno,26,Japan,2008,39684,Softball,1,0,0,1 -Natalie Ward,32,Australia,2008,39684,Softball,0,0,1,1 -Natasha Watley,26,United States,2008,39684,Softball,0,1,0,1 -Belinda Wright,27,Australia,2008,39684,Softball,0,0,1,1 -Kerry Wyborn,30,Australia,2008,39684,Softball,0,0,1,1 -Eri Yamada,24,Japan,2008,39684,Softball,1,0,0,1 -Artur Aivazian,35,Ukraine,2008,39684,Shooting,1,0,0,1 -Aleksey Alipov,33,Russia,2008,39684,Shooting,0,0,1,1 -Abhinav Bindra,25,India,2008,39684,Shooting,1,0,0,1 -Christine Brinker-Wenzel,27,Germany,2008,39684,Shooting,0,0,1,1 -Tore Brovold,38,Norway,2008,39684,Shooting,0,1,0,1 -Chiara Cainero,30,Italy,2008,39684,Shooting,1,0,0,1 -Chen Ying,30,China,2008,39684,Shooting,1,0,0,1 -Corey Cogdell,21,United States,2008,39684,Shooting,0,0,1,1 -Eglis Yaima Cruz,28,Cuba,2008,39684,Shooting,0,0,1,1 -Francesco D'Aniello,39,Italy,2008,39684,Shooting,0,1,0,1 -Rajmond Debevec,45,Slovenia,2008,39684,Shooting,0,0,1,1 -Munkhbayar Dorjsuren,39,Germany,2008,39684,Shooting,0,0,1,1 -Du Li,26,China,2008,39684,Shooting,1,0,0,1 -Glenn Eller,26,United States,2008,39684,Shooting,1,0,0,1 -Matt Emmons,27,United States,2008,39684,Shooting,0,1,0,1 -Lyubov Galkina,35,Russia,2008,39684,Shooting,0,1,0,1 -Guo Wenjun,24,China,2008,39684,Shooting,1,0,0,1 -Henri Häkkinen,28,Finland,2008,39684,Shooting,0,0,1,1 -Vincent Hancock,19,United States,2008,39684,Shooting,1,0,0,1 -Hu Binyuan,30,China,2008,39684,Shooting,0,0,1,1 -Vladimir Isakov,38,Russia,2008,39684,Shooting,0,0,1,1 -David Kostelecký,33,Czech Republic,2008,39684,Shooting,1,0,0,1 -Satu Mäkelä-Nummela,37,Finland,2008,39684,Shooting,1,0,0,1 -Otryadyn Gündegmaa,30,Mongolia,2008,39684,Shooting,0,1,0,1 -Nataliya Paderina,32,Russia,2008,39684,Shooting,0,1,0,1 -Pang Wei,22,China,2008,39684,Shooting,1,0,0,1 -Snježana Pejcic,26,Croatia,2008,39684,Shooting,0,0,1,1 -Giovanni Pellielo,38,Italy,2008,39684,Shooting,0,1,0,1 -Oleksandr Petriv,34,Ukraine,2008,39684,Shooting,1,0,0,1 -Warren Potent,46,Australia,2008,39684,Shooting,0,0,1,1 -Qiu Jian,33,China,2008,39684,Shooting,1,0,0,1 -Christian Reitz,21,Germany,2008,39684,Shooting,0,0,1,1 -Kim Rhode,29,United States,2008,39684,Shooting,0,1,0,1 -Nino Salukvadze,39,Georgia,2008,39684,Shooting,0,0,1,1 -Ralf Schumann,46,Germany,2008,39684,Shooting,0,1,0,1 -Zuzana Štefeceková,24,Slovakia,2008,39684,Shooting,0,1,0,1 -Yuriy Sukhorukov,40,Ukraine,2008,39684,Shooting,0,1,0,1 -Tan Zongliang,36,China,2008,39684,Shooting,0,1,0,1 -Anthony Terras,23,France,2008,39684,Shooting,0,0,1,1 -Jason Turner,33,United States,2008,39684,Shooting,0,0,1,1 -Zhu Qinan,23,China,2008,39684,Shooting,0,1,0,1 -Ben Ainslie,31,Great Britain,2008,39684,Sailing,1,0,0,1 -Glenn Ashby,30,Australia,2008,39684,Sailing,0,1,0,1 -Tom Ashley,24,New Zealand,2008,39684,Sailing,1,0,0,1 -Sarah Ayton,28,Great Britain,2008,39684,Sailing,1,0,0,1 -Olivier Bausset,26,France,2008,39684,Sailing,0,0,1,1 -Sofia Bekatorou,30,Greece,2008,39684,Sailing,0,0,1,1 -Lobke Berkhout,27,Netherlands,2008,39684,Sailing,0,1,0,1 -Annemieke Bes,30,Netherlands,2008,39684,Sailing,0,1,0,1 -Julien Bontemps,29,France,2008,39684,Sailing,0,1,0,1 -Marcelien Bos-de Koning,30,Netherlands,2008,39684,Sailing,0,1,0,1 -Darren Bundock,37,Australia,2008,39684,Sailing,0,1,0,1 -Nicolas Charbonnier,27,France,2008,39684,Sailing,0,0,1,1 -Fernando Echavarri,36,Spain,2008,39684,Sailing,1,0,0,1 -Anders Ekström,27,Sweden,2008,39684,Sailing,0,0,1,1 -Carlos Espínola,36,Argentina,2008,39684,Sailing,0,0,1,1 -Xavier Fernández,31,Spain,2008,39684,Sailing,0,1,0,1 -Guillaume Florent,34,France,2008,39684,Sailing,0,0,1,1 -Joe Glanfield,29,Great Britain,2008,39684,Sailing,0,1,0,1 -Paul Goodison,30,Great Britain,2008,39684,Sailing,1,0,0,1 -Martin Kirketerp,36,Denmark,2008,39684,Sailing,1,0,0,1 -Virginia Kravarioti,24,Greece,2008,39684,Sailing,0,0,1,1 -Santiago Lange,46,Argentina,2008,39684,Sailing,0,0,1,1 -Fredrik Lööf,38,Sweden,2008,39684,Sailing,0,0,1,1 -Iker Martínez,31,Spain,2008,39684,Sailing,0,1,0,1 -Mandy Mulder,21,Netherlands,2008,39684,Sailing,0,1,0,1 -Fernanda Oliveira,27,Brazil,2008,39684,Sailing,0,0,1,1 -Malcolm Page,36,Australia,2008,39684,Sailing,1,0,0,1 -Sofia Papadopoulou,24,Greece,2008,39684,Sailing,0,0,1,1 -Tessa Parkinson,21,Australia,2008,39684,Sailing,1,0,0,1 -Antón Paz,32,Spain,2008,39684,Sailing,1,0,0,1 -Hannes Peckolt,25,Germany,2008,39684,Sailing,0,0,1,1 -Jan Peter Peckolt,27,Germany,2008,39684,Sailing,0,0,1,1 -Iain Percy,32,Great Britain,2008,39684,Sailing,1,0,0,1 -Bruno Prada,37,Brazil,2008,39684,Sailing,0,1,0,1 -Zach Railey,24,United States,2008,39684,Sailing,0,1,0,1 -Elise Rechichi,22,Australia,2008,39684,Sailing,1,0,0,1 -Nick Rogers,31,Great Britain,2008,39684,Sailing,0,1,0,1 -Diego Romero,33,Italy,2008,39684,Sailing,0,0,1,1 -Robert Scheidt,35,Brazil,2008,39684,Sailing,0,1,0,1 -Alessandra Sensini,38,Italy,2008,39684,Sailing,0,1,0,1 -Bryony Shaw,25,Great Britain,2008,39684,Sailing,0,0,1,1 -Andrew Simpson,31,Great Britain,2008,39684,Sailing,1,0,0,1 -Isabel Swan,24,Brazil,2008,39684,Sailing,0,0,1,1 -Anna Tunnicliffe,25,United States,2008,39684,Sailing,1,0,0,1 -Gintare Volungeviciute-Scheidt,25,Lithuania,2008,39684,Sailing,0,1,0,1 -Jonas Warrer,29,Denmark,2008,39684,Sailing,1,0,0,1 -Sarah Webb,31,Great Britain,2008,39684,Sailing,1,0,0,1 -Nathan Wilmot,28,Australia,2008,39684,Sailing,1,0,0,1 -Pippa Wilson,22,Great Britain,2008,39684,Sailing,1,0,0,1 -Merel Witteveen,23,Netherlands,2008,39684,Sailing,0,1,0,1 -Xu Lijia,20,China,2008,39684,Sailing,0,0,1,1 -Yin Jian,29,China,2008,39684,Sailing,1,0,0,1 -Vasilij Žbogar,32,Slovenia,2008,39684,Sailing,0,1,0,1 -Shahar Zubari,21,Israel,2008,39684,Sailing,0,0,1,1 -Luca Agamennoni,28,Italy,2008,39684,Rowing,0,1,0,1 -Wyatt Allen,29,United States,2008,39684,Rowing,0,0,1,1 -Mads Andersen,30,Denmark,2008,39684,Rowing,1,0,0,1 -Julien Bahain,22,France,2008,39684,Rowing,0,0,1,1 -Eniko Barabas-Mironcic,22,Romania,2008,39684,Rowing,0,0,1,1 -Jon Beare,34,Canada,2008,39684,Rowing,0,0,1,1 -Anna Bebington-Watkins,25,Great Britain,2008,39684,Rowing,0,0,1,1 -Milosz Bernatajtys,26,Poland,2008,39684,Rowing,0,1,0,1 -Cédric Berrest,23,France,2008,39684,Rowing,0,0,1,1 -Yuliya Bichik,25,Belarus,2008,39684,Rowing,0,0,1,1 -Kathrin Boron,38,Germany,2008,39684,Rowing,0,0,1,1 -Micah Boyd,26,United States,2008,39684,Rowing,0,0,1,1 -Iain Brambell,34,Canada,2008,39684,Rowing,0,0,1,1 -Scott Brennan,25,Australia,2008,39684,Rowing,1,0,0,1 -George Bridgewater,25,New Zealand,2008,39684,Rowing,0,0,1,1 -Andrew Byrnes,25,Canada,2008,39684,Rowing,1,0,0,1 -Erin Cafaro,25,United States,2008,39684,Rowing,1,0,0,1 -Dave Calder,30,Canada,2008,39684,Rowing,0,1,0,1 -Tracy Cameron,33,Canada,2008,39684,Rowing,0,0,1,1 -Germain Chardin,25,France,2008,39684,Rowing,0,0,1,1 -Jonathan Coeffic,27,France,2008,39684,Rowing,0,0,1,1 -Steven Coppola,24,United States,2008,39684,Rowing,0,0,1,1 -David Crawshay,28,Australia,2008,39684,Rowing,1,0,0,1 -Caryn Davies,26,United States,2008,39684,Rowing,1,0,0,1 -Annemiek de Haan,27,Netherlands,2008,39684,Rowing,0,1,0,1 -Femke Dekker,29,Netherlands,2008,39684,Rowing,0,1,0,1 -Julien Després,25,France,2008,39684,Rowing,0,0,1,1 -Mahé Drysdale,29,New Zealand,2008,39684,Rowing,0,0,1,1 -Rumyana Dzhadzharova-Neykova,35,Bulgaria,2008,39684,Rowing,1,0,0,1 -Eskild Ebbesen,36,Denmark,2008,39684,Rowing,1,0,0,1 -Thomas Ebert,35,Denmark,2008,39684,Rowing,1,0,0,1 -Ric Egington,29,Great Britain,2008,39684,Rowing,0,1,0,1 -Tõnu Endrekson,29,Estonia,2008,39684,Rowing,0,1,0,1 -Caroline Evers-Swindell,29,New Zealand,2008,39684,Rowing,1,0,0,1 -Georgina Evers-Swindell,29,New Zealand,2008,39684,Rowing,1,0,0,1 -Debbie Flood,28,Great Britain,2008,39684,Rowing,0,1,0,1 -Rodica Florea-Serban,25,Romania,2008,39684,Rowing,0,0,1,1 -Susan Francia,25,United States,2008,39684,Rowing,1,0,0,1 -Scott Frandsen,28,Canada,2008,39684,Rowing,0,1,0,1 -Duncan Free,35,Australia,2008,39684,Rowing,1,0,0,1 -Rossano Galtarossa,36,Italy,2008,39684,Rowing,0,1,0,1 -Gao Yulan,24,China,2008,39684,Rowing,0,1,0,1 -Nataliya Gelakh,30,Belarus,2008,39684,Rowing,0,0,1,1 -Elena Georgescu,44,Romania,2008,39684,Rowing,0,0,1,1 -Drew Ginn,33,Australia,2008,39684,Rowing,1,0,0,1 -Anna Goodale,25,United States,2008,39684,Rowing,1,0,0,1 -Katherine Grainger,32,Great Britain,2008,39684,Rowing,0,1,0,1 -Michelle Guerette,27,United States,2008,39684,Rowing,0,1,0,1 -Kyle Hamilton,30,Canada,2008,39684,Rowing,1,0,0,1 -Alastair Heathcote,30,Great Britain,2008,39684,Rowing,0,1,0,1 -Francis Hegerty,25,Australia,2008,39684,Rowing,0,1,0,1 -Beau Hoopman,27,United States,2008,39684,Rowing,0,0,1,1 -Frances Houghton,27,Great Britain,2008,39684,Rowing,0,1,0,1 -Malcolm Howard,25,Canada,2008,39684,Rowing,1,0,0,1 -Mark Hunter,30,Great Britain,2008,39684,Rowing,1,0,0,1 -Christiane Huth,27,Germany,2008,39684,Rowing,0,1,0,1 -Doina Ignat,39,Romania,2008,39684,Rowing,0,0,1,1 -Josh Inman,28,United States,2008,39684,Rowing,0,0,1,1 -Jüri Jaanson,42,Estonia,2008,39684,Rowing,0,1,0,1 -Tom James,24,Great Britain,2008,39684,Rowing,1,0,0,1 -Michal Jelinski,28,Poland,2008,39684,Rowing,1,0,0,1 -Jin Ziwei,22,China,2008,39684,Rowing,1,0,0,1 -Morten Jørgensen,23,Denmark,2008,39684,Rowing,1,0,0,1 -Yekaterina Khodatovich-Karsten,36,Belarus,2008,39684,Rowing,0,0,1,1 -Nienke Kingma,26,Netherlands,2008,39684,Rowing,0,1,0,1 -Melanie Kok,24,Canada,2008,39684,Rowing,0,0,1,1 -Marek Kolbowicz,37,Poland,2008,39684,Rowing,1,0,0,1 -Adam Korol,33,Poland,2008,39684,Rowing,1,0,0,1 -Adam Kreek,27,Canada,2008,39684,Rowing,1,0,0,1 -Matt Langridge,25,Great Britain,2008,39684,Rowing,0,1,0,1 -Elise Laverick,33,Great Britain,2008,39684,Rowing,0,0,1,1 -Mike Lewis,27,Canada,2008,39684,Rowing,0,0,1,1 -Kevin Light,29,Canada,2008,39684,Rowing,1,0,0,1 -Caroline Lind,25,United States,2008,39684,Rowing,1,0,0,1 -Elle Logan,20,United States,2008,39684,Rowing,1,0,0,1 -Tom Lucy,20,Great Britain,2008,39684,Rowing,0,1,0,1 -Manuela Lutze,34,Germany,2008,39684,Rowing,0,0,1,1 -James Marburg,25,Australia,2008,39684,Rowing,0,1,0,1 -Marcus McElhenney,27,United States,2008,39684,Rowing,0,0,1,1 -Maxi McKenzie-McHarg,28,Australia,2008,39684,Rowing,0,1,0,1 -Anna Mickelson-Cummins,28,United States,2008,39684,Rowing,1,0,0,1 -Dorian Mortelette,24,France,2008,39684,Rowing,0,0,1,1 -Dimitris Mougios,26,Greece,2008,39684,Rowing,0,1,0,1 -Acer Nethercott,30,Great Britain,2008,39684,Rowing,0,1,0,1 -Minna Nieminen,31,Finland,2008,39684,Rowing,0,1,0,1 -Britta Oppelt,30,Germany,2008,39684,Rowing,0,0,1,1 -Ioana Papuc-Rotaru,24,Romania,2008,39684,Rowing,0,0,1,1 -Liam Parsons,31,Canada,2008,39684,Rowing,0,0,1,1 -Alex Partridge,27,Great Britain,2008,39684,Rowing,0,1,0,1 -Bartlomiej Pawelczak,26,Poland,2008,39684,Rowing,0,1,0,1 -Lukasz Pawlowski,25,Poland,2008,39684,Rowing,0,1,0,1 -Pierre-Jean Peltier,24,France,2008,39684,Rowing,0,0,1,1 -Constanta Pipota-Burcica,37,Romania,2008,39684,Rowing,0,0,1,1 -Vasilios Polymeros,32,Greece,2008,39684,Rowing,0,1,0,1 -Brian Price,32,Canada,2008,39684,Rowing,1,0,0,1 -Zac Purchase,22,Great Britain,2008,39684,Rowing,1,0,0,1 -Rasmus Quist,28,Denmark,2008,39684,Rowing,0,0,1,1 -Simone Raineri,31,Italy,2008,39684,Rowing,0,1,0,1 -Pawel Randa,29,Poland,2008,39684,Rowing,0,1,0,1 -Mads Rasmussen,26,Denmark,2008,39684,Rowing,0,0,1,1 -Pete Reed,27,Great Britain,2008,39684,Rowing,1,0,0,1 -Roline Repelaer van Driel,24,Netherlands,2008,39684,Rowing,0,1,0,1 -Benjamin Rondeau,24,France,2008,39684,Rowing,0,0,1,1 -Stephen Rowbotham,26,Great Britain,2008,39684,Rowing,0,0,1,1 -Ben Rutledge,27,Canada,2008,39684,Rowing,1,0,0,1 -Matt Ryan,24,Australia,2008,39684,Rowing,0,1,0,1 -Stephanie Schiller,22,Germany,2008,39684,Rowing,0,0,1,1 -Matt Schnobrich,29,United States,2008,39684,Rowing,0,0,1,1 -Lindsay Schoop,26,United States,2008,39684,Rowing,1,0,0,1 -Dominic Seiterle,32,Canada,2008,39684,Rowing,1,0,0,1 -Sarah Siegelaar,26,Netherlands,2008,39684,Rowing,0,1,0,1 -Colin Smith,24,Great Britain,2008,39684,Rowing,0,1,0,1 -Marlies Smulders,26,Netherlands,2008,39684,Rowing,0,1,0,1 -Tom Stallard,29,Great Britain,2008,39684,Rowing,0,1,0,1 -Sanna Stén,31,Finland,2008,39684,Rowing,0,1,0,1 -Simona Strimbeschi-Musat,26,Romania,2008,39684,Rowing,0,0,1,1 -Ondrej Synek,25,Czech Republic,2008,39684,Rowing,0,1,0,1 -Tang Bin,22,China,2008,39684,Rowing,1,0,0,1 -Helen Tanger,29,Netherlands,2008,39684,Rowing,0,1,0,1 -Annekatrin Thiele,23,Germany,2008,39684,Rowing,0,1,0,1 -Andrew Triggs Hodge,29,Great Britain,2008,39684,Rowing,1,0,0,1 -Olaf Tufte,32,Norway,2008,39684,Rowing,1,0,0,1 -Nathan Twaddle,31,New Zealand,2008,39684,Rowing,0,0,1,1 -Kirsten van der Kolk,32,Netherlands,2008,39684,Rowing,1,0,0,1 -Marit van Eupen,38,Netherlands,2008,39684,Rowing,1,0,0,1 -Annemarieke van Rumpt,28,Netherlands,2008,39684,Rowing,0,1,0,1 -Simone Venier,23,Italy,2008,39684,Rowing,0,1,0,1 -Annie Vernon,25,Great Britain,2008,39684,Rowing,0,1,0,1 -Bryan Volpenhein,31,United States,2008,39684,Rowing,0,0,1,1 -Daniel Walsh,29,United States,2008,39684,Rowing,0,0,1,1 -Konrad Wasielewski,23,Poland,2008,39684,Rowing,1,0,0,1 -Matt Wells,28,Great Britain,2008,39684,Rowing,0,0,1,1 -Josh West,31,Great Britain,2008,39684,Rowing,0,1,0,1 -Jake Wetzel,31,Canada,2008,39684,Rowing,1,0,0,1 -Mary Whipple,28,United States,2008,39684,Rowing,1,0,0,1 -Steve Williams,32,Great Britain,2008,39684,Rowing,1,0,0,1 -Ester Workel,33,Netherlands,2008,39684,Rowing,0,1,0,1 -Wu You,24,China,2008,39684,Rowing,0,1,0,1 -Xi Aihua,26,China,2008,39684,Rowing,1,0,0,1 -Zhang Yangyang,19,China,2008,39684,Rowing,1,0,0,1 -Margarita Aliychuk,18,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Alesya Babushkina,19,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Hanna Bezsonova,24,Ukraine,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Cai Tongtong,18,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Chou Tao,20,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Anna Gavrilenko,18,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Tatyana Gorbunova,18,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Anastasiya Ivankova,16,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Yevgeniya Kanayeva,18,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Lu Yuanyang,25,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Zina Lunina,19,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Glafira Martinovich,19,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Yelena Posevina,22,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Kseniya Sankovich,18,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Darya Shkurikhina,17,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Sui Jianshuang,19,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Sun Dan,21,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Alina Tumilovich,18,Belarus,2008,39684,Rhythmic Gymnastics,0,0,1,1 -Zhang Shuo,24,China,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Inna Zhukova,21,Belarus,2008,39684,Rhythmic Gymnastics,0,1,0,1 -Nataliya Zuyeva,19,Russia,2008,39684,Rhythmic Gymnastics,1,0,0,1 -Heather Fell,25,Great Britain,2008,39684,Modern Pentathlon,0,1,0,1 -Edvinas Krungolcas,35,Lithuania,2008,39684,Modern Pentathlon,0,1,0,1 -Andrey Moiseyev,29,Russia,2008,39684,Modern Pentathlon,1,0,0,1 -Lena Schöneborn,22,Germany,2008,39684,Modern Pentathlon,1,0,0,1 -Viktoriya Tereshchuk,26,Ukraine,2008,39684,Modern Pentathlon,0,0,1,1 -Andrejus Zadneprovskis,33,Lithuania,2008,39684,Modern Pentathlon,0,0,1,1 -An Kum-Ae,28,North Korea,2008,39684,Judo,0,1,0,1 -Yordanis Arencibia,28,Cuba,2008,39684,Judo,0,0,1,1 -Sergei Aschwanden,32,Switzerland,2008,39684,Judo,0,0,1,1 -Amar Benikhlef,26,Algeria,2008,39684,Judo,0,1,0,1 -Yanet Bermoy,21,Cuba,2008,39684,Judo,0,1,0,1 -Ole Bischof,28,Germany,2008,39684,Judo,1,0,0,1 -Rasul Bokiyev,25,Tajikistan,2008,39684,Judo,0,0,1,1 -Edith Bosch,28,Netherlands,2008,39684,Judo,0,0,1,1 -Oscar Braison,23,Cuba,2008,39684,Judo,0,0,1,1 -Tiago Camilo,26,Brazil,2008,39684,Judo,0,0,1,1 -Yalennis Castillo,22,Cuba,2008,39684,Judo,0,1,0,1 -Choi Min-Ho,27,South Korea,2008,39684,Judo,1,0,0,1 -Benjamin Darbelet,27,France,2008,39684,Judo,0,1,0,1 -Lucie Décosse,27,France,2008,39684,Judo,0,1,0,1 -Alina Dumitru,25,Romania,2008,39684,Judo,1,0,0,1 -Deborah Gravenstijn,33,Netherlands,2008,39684,Judo,0,1,0,1 -Henk Grol,23,Netherlands,2008,39684,Judo,0,0,1,1 -Leandro Guilheiro,25,Brazil,2008,39684,Judo,0,0,1,1 -Soraya Haddad,23,Algeria,2008,39684,Judo,0,0,1,1 -Anaisis Hernández,26,Cuba,2008,39684,Judo,0,1,0,1 -Roman Hontiuk,24,Ukraine,2008,39684,Judo,0,0,1,1 -Ruben Houkes,29,Netherlands,2008,39684,Judo,0,0,1,1 -Satoshi Ishii,21,Japan,2008,39684,Judo,1,0,0,1 -Jeong Gyeong-Mi,23,South Korea,2008,39684,Judo,0,0,1,1 -Kim Jae-Beom,23,South Korea,2008,39684,Judo,0,1,0,1 -Mövlud Mir?liyev,34,Azerbaijan,2008,39684,Judo,0,0,1,1 -Hesham Misbah,26,Egypt,2008,39684,Judo,0,0,1,1 -Elnur M?mm?dli,20,Azerbaijan,2008,39684,Judo,1,0,0,1 -Naidangiin Tüvshinbayar,24,Mongolia,2008,39684,Judo,1,0,0,1 -Misato Nakamura,19,Japan,2008,39684,Judo,0,0,1,1 -Idalys Ortíz,18,Cuba,2008,39684,Judo,0,0,1,1 -Ludwig Paischer,26,Austria,2008,39684,Judo,0,1,0,1 -Pak Chol-Min,25,North Korea,2008,39684,Judo,0,0,1,1 -Paula Pareto,22,Argentina,2008,39684,Judo,0,0,1,1 -Lucija Polavder,23,Slovenia,2008,39684,Judo,0,0,1,1 -Stéphanie Possamai,28,France,2008,39684,Judo,0,0,1,1 -Ketleyn Quadros,20,Brazil,2008,39684,Judo,0,0,1,1 -Giulia Quintavalle,25,Italy,2008,39684,Judo,1,0,0,1 -Teddy Riner,19,France,2008,39684,Judo,0,0,1,1 -Ronda Rousey,21,United States,2008,39684,Judo,0,0,1,1 -Rishod Sobirov,21,Uzbekistan,2008,39684,Judo,0,0,1,1 -Ryoko Tamura-Tani,32,Japan,2008,39684,Judo,0,0,1,1 -Abdullo Tangriyev,27,Uzbekistan,2008,39684,Judo,0,1,0,1 -Ayumi Tanimoto,27,Japan,2008,39684,Judo,1,0,0,1 -Tong Wen,25,China,2008,39684,Judo,1,0,0,1 -Irakli Tsirekidze,26,Georgia,2008,39684,Judo,1,0,0,1 -Maki Tsukada,26,Japan,2008,39684,Judo,0,1,0,1 -Masato Uchishiba,30,Japan,2008,39684,Judo,1,0,0,1 -Masae Ueno,29,Japan,2008,39684,Judo,1,0,0,1 -Wang Gi-Chun,19,South Korea,2008,39684,Judo,0,1,0,1 -Elisabeth Willeboordse,29,Netherlands,2008,39684,Judo,0,0,1,1 -Won Ok-Im,21,North Korea,2008,39684,Judo,0,0,1,1 -Xian Dongmei,32,China,2008,39684,Judo,1,0,0,1 -Xu Yan,26,China,2008,39684,Judo,0,0,1,1 -Yang Xiuli,24,China,2008,39684,Judo,1,0,0,1 -Askhat Zhitkeyev,27,Kazakhstan,2008,39684,Judo,0,1,0,1 -Des Abbott,21,Australia,2008,39684,Hockey,0,0,1,1 -Marilyn Agliotti,29,Netherlands,2008,39684,Hockey,1,0,0,1 -Magdalena Aicega,34,Argentina,2008,39684,Hockey,0,0,1,1 -David Alegre,23,Spain,2008,39684,Hockey,0,1,0,1 -Ramón Alegre,27,Spain,2008,39684,Hockey,0,1,0,1 -Pol Amat,30,Spain,2008,39684,Hockey,0,1,0,1 -Eduard Arbós,25,Spain,2008,39684,Hockey,0,1,0,1 -Lucha Aymar,31,Argentina,2008,39684,Hockey,0,0,1,1 -Noel Barrionuevo,24,Argentina,2008,39684,Hockey,0,0,1,1 -Sebastian Biederlack,26,Germany,2008,39684,Hockey,1,0,0,1 -Minke Booij,31,Netherlands,2008,39684,Hockey,1,0,0,1 -Travis Brooks,28,Australia,2008,39684,Hockey,0,0,1,1 -Kiel Brown,24,Australia,2008,39684,Hockey,0,0,1,1 -Claudia Burkart,28,Argentina,2008,39684,Hockey,0,0,1,1 -Chen Qiuqi,28,China,2008,39684,Hockey,0,1,0,1 -Chen Zhaoxia,33,China,2008,39684,Hockey,0,1,0,1 -Cheng Hui,35,China,2008,39684,Hockey,0,1,0,1 -Quico Cortés,25,Spain,2008,39684,Hockey,0,1,0,1 -Eva de Goede,19,Netherlands,2008,39684,Hockey,1,0,0,1 -Lisanne de Roever,29,Netherlands,2008,39684,Hockey,1,0,0,1 -Liam De Young,26,Australia,2008,39684,Hockey,0,0,1,1 -Wieke Dijkstra,24,Netherlands,2008,39684,Hockey,1,0,0,1 -Luke Doerner,28,Australia,2008,39684,Hockey,0,0,1,1 -Jamie Dwyer,29,Australia,2008,39684,Hockey,0,0,1,1 -Sergi Enrique,20,Spain,2008,39684,Hockey,0,1,0,1 -Alex Fábregas,27,Spain,2008,39684,Hockey,0,1,0,1 -Kiko Fábregas,30,Spain,2008,39684,Hockey,0,1,0,1 -Juan Fernández,23,Spain,2008,39684,Hockey,0,1,0,1 -Santi Freixa,25,Spain,2008,39684,Hockey,0,1,0,1 -Fu Baorong,30,China,2008,39684,Hockey,0,1,0,1 -Moritz Fürste,23,Germany,2008,39684,Hockey,1,0,0,1 -Gao Lihua,28,China,2008,39684,Hockey,0,1,0,1 -Sole García,27,Argentina,2008,39684,Hockey,0,0,1,1 -Rodrigo Garza,28,Spain,2008,39684,Hockey,0,1,0,1 -Bevan George,31,Australia,2008,39684,Hockey,0,0,1,1 -Maartje Goderie,24,Netherlands,2008,39684,Hockey,1,0,0,1 -Mariana González,32,Argentina,2008,39684,Hockey,0,0,1,1 -David Guest,26,Australia,2008,39684,Hockey,0,0,1,1 -Alejandra Gulla,31,Argentina,2008,39684,Hockey,0,0,1,1 -Rob Hammond,27,Australia,2008,39684,Hockey,0,0,1,1 -Tobias Hauke,20,Germany,2008,39684,Hockey,1,0,0,1 -Maripi Hernández,31,Argentina,2008,39684,Hockey,0,0,1,1 -Ellen Hoog,22,Netherlands,2008,39684,Hockey,1,0,0,1 -Huang Junxia,32,China,2008,39684,Hockey,0,1,0,1 -Gisi Kañevsky,23,Argentina,2008,39684,Hockey,0,0,1,1 -Fergus Kavanagh,23,Australia,2008,39684,Hockey,0,0,1,1 -Florian Keller,26,Germany,2008,39684,Hockey,1,0,0,1 -Mark Knowles,23,Australia,2008,39684,Hockey,0,0,1,1 -Oliver Korn,24,Germany,2008,39684,Hockey,1,0,0,1 -Stephen Lambert,28,Australia,2008,39684,Hockey,0,0,1,1 -Li Hongxia,21,China,2008,39684,Hockey,0,1,0,1 -Li Shuang,30,China,2008,39684,Hockey,0,1,0,1 -Rosario Luchetti,24,Argentina,2008,39684,Hockey,0,0,1,1 -Ma Yibo,28,China,2008,39684,Hockey,0,1,0,1 -Mechi Margalot,33,Argentina,2008,39684,Hockey,0,0,1,1 -Eli Matheson,25,Australia,2008,39684,Hockey,0,0,1,1 -Niklas Meinert,27,Germany,2008,39684,Hockey,1,0,0,1 -Jan-Marco Montag,24,Germany,2008,39684,Hockey,1,0,0,1 -Fátima Moreira de Melo,30,Netherlands,2008,39684,Hockey,1,0,0,1 -Eefke Mulder,30,Netherlands,2008,39684,Hockey,1,0,0,1 -Max Müller,21,Germany,2008,39684,Hockey,1,0,0,1 -Carlos Nevado,25,Germany,2008,39684,Hockey,1,0,0,1 -Eddie Ockenden,21,Australia,2008,39684,Hockey,0,0,1,1 -Roc Oliva,19,Spain,2008,39684,Hockey,0,1,0,1 -Pan Fengzhen,23,China,2008,39684,Hockey,0,1,0,1 -Maartje Paumen,22,Netherlands,2008,39684,Hockey,1,0,0,1 -Sophie Polkamp,24,Netherlands,2008,39684,Hockey,1,0,0,1 -Carla Rebecchi,23,Argentina,2008,39684,Hockey,0,0,1,1 -Ren Ye,22,China,2008,39684,Hockey,0,1,0,1 -Xavier Ribas,32,Spain,2008,39684,Hockey,0,1,0,1 -Mariana Rossi,29,Argentina,2008,39684,Hockey,0,0,1,1 -Mariné Russo,28,Argentina,2008,39684,Hockey,0,0,1,1 -Albert Sala,27,Spain,2008,39684,Hockey,0,1,0,1 -Janneke Schopman,31,Netherlands,2008,39684,Hockey,1,0,0,1 -Grant Schubert,28,Australia,2008,39684,Hockey,0,0,1,1 -Minke Smabers,29,Netherlands,2008,39684,Hockey,1,0,0,1 -Andrew Smith,29,Australia,2008,39684,Hockey,0,0,1,1 -Víctor Sojo,24,Spain,2008,39684,Hockey,0,1,0,1 -Song Qingling,22,China,2008,39684,Hockey,0,1,0,1 -Belén Succi,22,Argentina,2008,39684,Hockey,0,0,1,1 -Tang Chunling,32,China,2008,39684,Hockey,0,1,0,1 -Eddie Tubau,27,Spain,2008,39684,Hockey,0,1,0,1 -Naomi van As,25,Netherlands,2008,39684,Hockey,1,0,0,1 -Miek van Geenhuizen,26,Netherlands,2008,39684,Hockey,1,0,0,1 -Paola Vukojicic,33,Argentina,2008,39684,Hockey,0,0,1,1 -Max Weinhold,26,Germany,2008,39684,Hockey,1,0,0,1 -Tibor Weißenborn,27,Germany,2008,39684,Hockey,1,0,0,1 -Matt Wells,30,Australia,2008,39684,Hockey,0,0,1,1 -Lidewij Welten,18,Netherlands,2008,39684,Hockey,1,0,0,1 -Benjamin Weß,23,Germany,2008,39684,Hockey,1,0,0,1 -Timo Weß,26,Germany,2008,39684,Hockey,1,0,0,1 -Philip Witte,24,Germany,2008,39684,Hockey,1,0,0,1 -Matthias Witthaus,26,Germany,2008,39684,Hockey,1,0,0,1 -Christopher Zeller,23,Germany,2008,39684,Hockey,1,0,0,1 -Philipp Zeller,25,Germany,2008,39684,Hockey,1,0,0,1 -Zhang Yimeng,24,China,2008,39684,Hockey,0,1,0,1 -Zhao Yudiao,19,China,2008,39684,Hockey,0,1,0,1 -Zhou Wanfeng,28,China,2008,39684,Hockey,0,1,0,1 -Ragnhild Aamodt,27,Norway,2008,39684,Handball,1,0,0,1 -Luc Abalo,23,France,2008,39684,Handball,1,0,0,1 -Joël Abati,37,France,2008,39684,Handball,1,0,0,1 -An Jeong-Hwa,27,South Korea,2008,39684,Handball,0,0,1,1 -Yekaterina Andryushina,22,Russia,2008,39684,Handball,0,1,0,1 -Sturla Ásgeirsson,28,Iceland,2008,39684,Handball,0,1,0,1 -Arnór Atlason,24,Iceland,2008,39684,Handball,0,1,0,1 -Bae Min-Hee,20,South Korea,2008,39684,Handball,0,0,1,1 -David Barrufet,38,Spain,2008,39684,Handball,0,0,1,1 -Jon Belaustegui,29,Spain,2008,39684,Handball,0,0,1,1 -Inna Bliznova,21,Russia,2008,39684,Handball,0,1,0,1 -Karoline Dyhre Breivang,28,Norway,2008,39684,Handball,1,0,0,1 -Cédric Burdet,33,France,2008,39684,Handball,1,0,0,1 -Choi Im-Jeong,27,South Korea,2008,39684,Handball,0,0,1,1 -David Davis,31,Spain,2008,39684,Handball,0,0,1,1 -Didier Dinart,31,France,2008,39684,Handball,1,0,0,1 -Yelena Dmitriyeva,25,Russia,2008,39684,Handball,0,1,0,1 -Alberto Entrerríos,31,Spain,2008,39684,Handball,0,0,1,1 -Raúl Entrerríos,27,Spain,2008,39684,Handball,0,0,1,1 -Jérôme Fernandez,31,France,2008,39684,Handball,1,0,0,1 -Marit Malm Frafjord,22,Norway,2008,39684,Handball,1,0,0,1 -Rubén Garabaya,29,Spain,2008,39684,Handball,0,0,1,1 -Juan García,30,Spain,2008,39684,Handball,0,0,1,1 -Logi Geirsson,25,Iceland,2008,39684,Handball,0,1,0,1 -Bertrand Gille,30,France,2008,39684,Handball,1,0,0,1 -Guillaume Gille,32,France,2008,39684,Handball,1,0,0,1 -Olivier Girault,35,France,2008,39684,Handball,1,0,0,1 -Kari Aalvik Grimsbø,23,Norway,2008,39684,Handball,1,0,0,1 -Michaël Guigou,26,France,2008,39684,Handball,1,0,0,1 -Róbert Gunnarsson,28,Iceland,2008,39684,Handball,0,1,0,1 -Björgvin Gustavsson,23,Iceland,2008,39684,Handball,0,1,0,1 -Snorri Guðjónsson,26,Iceland,2008,39684,Handball,0,1,0,1 -Hreiðar Guðmundsson,27,Iceland,2008,39684,Handball,0,1,0,1 -Ásgeir Örn Hallgrímsson,24,Iceland,2008,39684,Handball,0,1,0,1 -Gro Hammerseng,28,Norway,2008,39684,Handball,1,0,0,1 -Katrine Lunde Haraldsen,28,Norway,2008,39684,Handball,1,0,0,1 -Heo Sun-Yeong,32,South Korea,2008,39684,Handball,0,0,1,1 -José Javier Hombrados,36,Spain,2008,39684,Handball,0,0,1,1 -Hong Jeong-Ho,34,South Korea,2008,39684,Handball,0,0,1,1 -Ingimundur Ingimundarson,28,Iceland,2008,39684,Handball,0,1,0,1 -Sverre Jakobsson,31,Iceland,2008,39684,Handball,0,1,0,1 -Kari Mette Johansen,29,Norway,2008,39684,Handball,1,0,0,1 -Nikola Karabatic,24,France,2008,39684,Handball,1,0,0,1 -Daouda Karaboué,32,France,2008,39684,Handball,1,0,0,1 -Anna Kareyeva,31,Russia,2008,39684,Handball,0,1,0,1 -Christophe Kempé,33,France,2008,39684,Handball,1,0,0,1 -Kim Cha-Yeon,27,South Korea,2008,39684,Handball,0,0,1,1 -Kim Nam-Sun,27,South Korea,2008,39684,Handball,0,0,1,1 -Kim On-A,19,South Korea,2008,39684,Handball,0,0,1,1 -Tonje Larsen,33,Norway,2008,39684,Handball,1,0,0,1 -Lee Min-Hui,28,South Korea,2008,39684,Handball,0,0,1,1 -Demetrio Lozano,32,Spain,2008,39684,Handball,0,0,1,1 -Kristine Lunde-Borgersen,28,Norway,2008,39684,Handball,1,0,0,1 -Cristian Malmagro,25,Spain,2008,39684,Handball,0,0,1,1 -Yekaterina Marennikova,26,Russia,2008,39684,Handball,0,1,0,1 -Mun Pil-Hui,25,South Korea,2008,39684,Handball,0,0,1,1 -Daniel Narcisse,28,France,2008,39684,Handball,1,0,0,1 -Katja Nyberg,28,Norway,2008,39684,Handball,1,0,0,1 -Tonje Nøstvold,23,Norway,2008,39684,Handball,1,0,0,1 -Oh Seong-Ok,35,South Korea,2008,39684,Handball,0,0,1,1 -Oh Yeong-Ran,35,South Korea,2008,39684,Handball,0,0,1,1 -Thierry Omeyer,31,France,2008,39684,Handball,1,0,0,1 -Park Jeong-Hui,33,South Korea,2008,39684,Handball,0,0,1,1 -Cédric Paty,27,France,2008,39684,Handball,1,0,0,1 -Alexander Petersson,28,Iceland,2008,39684,Handball,0,1,0,1 -Irina Poltoratskaya,29,Russia,2008,39684,Handball,0,1,0,1 -Yelena Polyonova,24,Russia,2008,39684,Handball,0,1,0,1 -Lyudmila Postnova,23,Russia,2008,39684,Handball,0,1,0,1 -Carlos Prieto,28,Spain,2008,39684,Handball,0,0,1,1 -Linn-Kristin Riegelhuth Koren,24,Norway,2008,39684,Handball,1,0,0,1 -Albert Rocas,26,Spain,2008,39684,Handball,0,0,1,1 -Oksana Romenskaya,32,Russia,2008,39684,Handball,0,1,0,1 -Iker Romero,28,Spain,2008,39684,Handball,0,0,1,1 -Nataliya Shipilova,28,Russia,2008,39684,Handball,0,1,0,1 -Mariya Sidorova,28,Russia,2008,39684,Handball,0,1,0,1 -Guðjón Valur Sigurðsson,29,Iceland,2008,39684,Handball,0,1,0,1 -Sigfús Sigurðsson,33,Iceland,2008,39684,Handball,0,1,0,1 -Gøril Snorroeggen,23,Norway,2008,39684,Handball,1,0,0,1 -Song Hai-Rim,23,South Korea,2008,39684,Handball,0,0,1,1 -Ólafur Stefánsson,35,Iceland,2008,39684,Handball,0,1,0,1 -Inna Suslina,29,Russia,2008,39684,Handball,0,1,0,1 -Else-Marthe Sørlie Lybekk,29,Norway,2008,39684,Handball,1,0,0,1 -Víctor Tomás,23,Spain,2008,39684,Handball,0,0,1,1 -Emiliya Turey,23,Russia,2008,39684,Handball,0,1,0,1 -Yana Uskova,22,Russia,2008,39684,Handball,0,1,0,1 -Andreea Acatrinei,16,Romania,2008,39684,Gymnastics,0,0,1,1 -Sasha Artemev,22,United States,2008,39684,Gymnastics,0,0,1,1 -Raj Bhavsar,27,United States,2008,39684,Gymnastics,0,0,1,1 -Leszek Blanik,31,Poland,2008,39684,Gymnastics,1,0,0,1 -Thomas Bouhail,22,France,2008,39684,Gymnastics,0,1,0,1 -Benoît Caranobe,28,France,2008,39684,Gymnastics,0,0,1,1 -Oksana Chusovitina,33,Germany,2008,39684,Gymnastics,0,1,0,1 -Gervasio Deferr,27,Spain,2008,39684,Gymnastics,0,1,0,1 -Deng Linlin,16,China,2008,39684,Gymnastics,1,0,0,1 -Gabriela Dragoi,15,Romania,2008,39684,Gymnastics,0,0,1,1 -Anton Fokin,25,Uzbekistan,2008,39684,Gymnastics,0,0,1,1 -Andreea Grigore,17,Romania,2008,39684,Gymnastics,0,0,1,1 -Joey Hagerty,26,United States,2008,39684,Gymnastics,0,0,1,1 -Fabian Hambüchen,20,Germany,2008,39684,Gymnastics,0,0,1,1 -Hong Un-Jong,19,North Korea,2008,39684,Gymnastics,1,0,0,1 -Huang Xu,29,China,2008,39684,Gymnastics,1,0,0,1 -Jiang Yuyuan,16,China,2008,39684,Gymnastics,1,0,0,1 -Takehiro Kashima,28,Japan,2008,39684,Gymnastics,0,1,0,1 -Li Shanshan,16,China,2008,39684,Gymnastics,1,0,0,1 -Chellsie Memmel,20,United States,2008,39684,Gymnastics,0,1,0,1 -Takuya Nakase,25,Japan,2008,39684,Gymnastics,0,1,0,1 -Steliana Nistor,18,Romania,2008,39684,Gymnastics,0,0,1,1 -Makoto Okiguchi,22,Japan,2008,39684,Gymnastics,0,1,0,1 -Samantha Peszek,16,United States,2008,39684,Gymnastics,0,1,0,1 -Alicia Sacramone,20,United States,2008,39684,Gymnastics,0,1,0,1 -Koki Sakamoto,21,Japan,2008,39684,Gymnastics,0,1,0,1 -Bridget Sloan,16,United States,2008,39684,Gymnastics,0,1,0,1 -Louis Smith,19,Great Britain,2008,39684,Gymnastics,0,0,1,1 -Justin Spring,24,United States,2008,39684,Gymnastics,0,0,1,1 -Ana Tamârjan,17,Romania,2008,39684,Gymnastics,0,0,1,1 -Kevin Tan,26,United States,2008,39684,Gymnastics,0,0,1,1 -Hiroyuki Tomita,27,Japan,2008,39684,Gymnastics,0,1,0,1 -Filip Ude,22,Croatia,2008,39684,Gymnastics,0,1,0,1 -Oleksandr Vorobiov,23,Ukraine,2008,39684,Gymnastics,0,0,1,1 -Yu Won-Cheol,24,South Korea,2008,39684,Gymnastics,0,1,0,1 -Lautaro Acosta,20,Argentina,2008,39684,Football,1,0,0,1 -Olubayo Adefemi,22,Nigeria,2008,39684,Football,0,1,0,1 -Dele Adeleye,19,Nigeria,2008,39684,Football,0,1,0,1 -Sergio Agüero,20,Argentina,2008,39684,Football,1,0,0,1 -Femi Ajilore,23,Nigeria,2008,39684,Football,0,1,0,1 -Alexandre Pato,18,Brazil,2008,39684,Football,0,0,1,1 -Efe Ambrose,19,Nigeria,2008,39684,Football,0,1,0,1 -Ânderson,20,Brazil,2008,39684,Football,0,0,1,1 -Andréia,30,Brazil,2008,39684,Football,0,1,0,1 -Nadine Angerer,29,Germany,2008,39684,Football,0,0,1,1 -Victor Anichebe,20,Nigeria,2008,39684,Football,0,1,0,1 -Onyekachi Apam,21,Nigeria,2008,39684,Football,0,1,0,1 -Lira Bajramaj,20,Germany,2008,39684,Football,0,0,1,1 -Éver Banega,20,Argentina,2008,39684,Football,1,0,0,1 -Bárbara,20,Brazil,2008,39684,Football,0,1,0,1 -Melanie Behringer,22,Germany,2008,39684,Football,0,0,1,1 -Shannon Boxx,31,United States,2008,39684,Football,1,0,0,1 -Breno,18,Brazil,2008,39684,Football,0,0,1,1 -Linda Bresonik,24,Germany,2008,39684,Football,0,0,1,1 -Rachel Buehler,22,United States,2008,39684,Football,1,0,0,1 -Diego Buonanotte,20,Argentina,2008,39684,Football,1,0,0,1 -Lori Chalupny,24,United States,2008,39684,Football,1,0,0,1 -Lauren Cheney,20,United States,2008,39684,Football,1,0,0,1 -Stephanie Cox,22,United States,2008,39684,Football,1,0,0,1 -Cristiane,23,Brazil,2008,39684,Football,0,1,0,1 -Daniela,24,Brazil,2008,39684,Football,0,1,0,1 -Ángel Di María,20,Argentina,2008,39684,Football,1,0,0,1 -Diego,23,Brazil,2008,39684,Football,0,0,1,1 -Emmanuel Ekpo,20,Nigeria,2008,39684,Football,0,1,0,1 -Érika,20,Brazil,2008,39684,Football,0,1,0,1 -Ester,25,Brazil,2008,39684,Football,0,1,0,1 -Fabiana,19,Brazil,2008,39684,Football,0,1,0,1 -Federico Fazio,21,Argentina,2008,39684,Football,1,0,0,1 -Formiga,30,Brazil,2008,39684,Football,0,1,0,1 -Francielle,18,Brazil,2008,39684,Football,0,1,0,1 -Fernando Gago,22,Argentina,2008,39684,Football,1,0,0,1 -Ezequiel Garay,21,Argentina,2008,39684,Football,1,0,0,1 -Kerstin Garefrekes,28,Germany,2008,39684,Football,0,0,1,1 -Tobin Heath,20,United States,2008,39684,Football,1,0,0,1 -Hernanes,23,Brazil,2008,39684,Football,0,0,1,1 -Ariane Hingst,29,Germany,2008,39684,Football,0,0,1,1 -Angela Hucles,30,United States,2008,39684,Football,1,0,0,1 -Ilsinho,22,Brazil,2008,39684,Football,0,0,1,1 -Promise Isaac,20,Nigeria,2008,39684,Football,0,1,0,1 -Monday James,21,Nigeria,2008,39684,Football,0,1,0,1 -Jô,21,Brazil,2008,39684,Football,0,0,1,1 -Tasha Kai,25,United States,2008,39684,Football,1,0,0,1 -Sani Kaita,22,Nigeria,2008,39684,Football,0,1,0,1 -Kóki,22,Brazil,2008,39684,Football,0,1,0,1 -Annike Krahn,23,Germany,2008,39684,Football,0,0,1,1 -Simone Laudehr,22,Germany,2008,39684,Football,0,0,1,1 -Ezequiel Lavezzi,23,Argentina,2008,39684,Football,1,0,0,1 -Renate Lingor,32,Germany,2008,39684,Football,0,0,1,1 -Carli Lloyd,26,United States,2008,39684,Football,1,0,0,1 -Lucas,21,Brazil,2008,39684,Football,0,0,1,1 -Marcelo,20,Brazil,2008,39684,Football,0,0,1,1 -Marta,22,Brazil,2008,39684,Football,0,1,0,1 -Javier Mascherano,24,Argentina,2008,39684,Football,1,0,0,1 -Maurine,22,Brazil,2008,39684,Football,0,1,0,1 -Maycon,31,Brazil,2008,39684,Football,0,1,0,1 -Lionel Messi,21,Argentina,2008,39684,Football,1,0,0,1 -Anja Mittag,23,Germany,2008,39684,Football,0,0,1,1 -Heather Mitts,30,United States,2008,39684,Football,1,0,0,1 -Fabián Monzón,21,Argentina,2008,39684,Football,1,0,0,1 -Thiago Neves,23,Brazil,2008,39684,Football,0,0,1,1 -Heather O'Reilly,23,United States,2008,39684,Football,1,0,0,1 -Victor Obinna,21,Nigeria,2008,39684,Football,0,1,0,1 -Peter Odemwingie,27,Nigeria,2008,39684,Football,0,1,0,1 -Chinedu Ogbuke,22,Nigeria,2008,39684,Football,0,1,0,1 -Chibuzor Okonkwo,19,Nigeria,2008,39684,Football,0,1,0,1 -Solomon Okoronkwo,21,Nigeria,2008,39684,Football,0,1,0,1 -Célia Okoyino da Mbabi,20,Germany,2008,39684,Football,0,0,1,1 -Nicolás Pareja,24,Argentina,2008,39684,Football,1,0,0,1 -Christie Pearce-Rampone,33,United States,2008,39684,Football,1,0,0,1 -Babett Peter,20,Germany,2008,39684,Football,0,0,1,1 -Conny Pohlers,29,Germany,2008,39684,Football,0,0,1,1 -Pretinha,33,Brazil,2008,39684,Football,0,1,0,1 -Birgit Prinz,30,Germany,2008,39684,Football,0,0,1,1 -Rafinha,22,Brazil,2008,39684,Football,0,0,1,1 -Ramires,21,Brazil,2008,39684,Football,0,0,1,1 -Renan,23,Brazil,2008,39684,Football,0,0,1,1 -Juan Riquelme,30,Argentina,2008,39684,Football,1,0,0,1 -Amy Rodriguez,21,United States,2008,39684,Football,1,0,0,1 -Sergio Romero,21,Argentina,2008,39684,Football,1,0,0,1 -Ronaldinho,28,Brazil,2008,39684,Football,0,0,1,1 -Andréia Rosa,24,Brazil,2008,39684,Football,0,1,0,1 -Rosana,26,Brazil,2008,39684,Football,0,1,0,1 -Alex Silva,23,Brazil,2008,39684,Football,0,0,1,1 -Thiago Silva,23,Brazil,2008,39684,Football,0,0,1,1 -Simone,27,Brazil,2008,39684,Football,0,1,0,1 -Sandra Smisek,31,Germany,2008,39684,Football,0,0,1,1 -Rafael Sóbis,23,Brazil,2008,39684,Football,0,0,1,1 -Kate Sobrero-Markgraf,31,United States,2008,39684,Football,1,0,0,1 -Hope Solo,27,United States,2008,39684,Football,1,0,0,1 -José Sosa,23,Argentina,2008,39684,Football,1,0,0,1 -Kerstin Stegemann,30,Germany,2008,39684,Football,0,0,1,1 -Tânia Maranhão,33,Brazil,2008,39684,Football,0,1,0,1 -Lindsay Tarpley,24,United States,2008,39684,Football,1,0,0,1 -Óscar Ustari,22,Argentina,2008,39684,Football,1,0,0,1 -Ambruse Vanzekin,22,Nigeria,2008,39684,Football,0,1,0,1 -Aly Wagner,27,United States,2008,39684,Football,1,0,0,1 -Pablo Zabaleta,23,Argentina,2008,39684,Football,1,0,0,1 -José Luis Abajo,30,Spain,2008,39684,Fencing,0,0,1,1 -Robert Andrzejuk,33,Poland,2008,39684,Fencing,0,1,0,1 -Bao Yingying,24,China,2008,39684,Fencing,0,1,0,1 -Svetlana Boyko,36,Russia,2008,39684,Fencing,1,0,0,1 -Ana Brânza,23,Romania,2008,39684,Fencing,0,1,0,1 -Diego Confalonieri,29,Italy,2008,39684,Fencing,0,0,1,1 -Mihai Covaliu,30,Romania,2008,39684,Fencing,0,0,1,1 -Emily Cross,21,United States,2008,39684,Fencing,0,1,0,1 -Britta Heidemann,25,Germany,2008,39684,Fencing,1,0,0,1 -Huang Haiyang,22,China,2008,39684,Fencing,0,1,0,1 -Jérôme Jeannet,31,France,2008,39684,Fencing,1,0,0,1 -Olha Kharlan,17,Ukraine,2008,39684,Fencing,1,0,0,1 -Olena Khomrova,21,Ukraine,2008,39684,Fencing,1,0,0,1 -Benjamin Kleibrink,23,Germany,2008,39684,Fencing,1,0,0,1 -Yevgeniya Lamonova,25,Russia,2008,39684,Fencing,1,0,0,1 -Aldo Montano,29,Italy,2008,39684,Fencing,0,0,1,1 -Tim Morehouse,30,United States,2008,39684,Fencing,0,1,0,1 -Tomasz Motyka,27,Poland,2008,39684,Fencing,0,1,0,1 -Nam Hyeon-Hui,26,South Korea,2008,39684,Fencing,0,1,0,1 -Ildikó Nébaldné Mincza,38,Hungary,2008,39684,Fencing,0,0,1,1 -Ni Hong,22,China,2008,39684,Fencing,0,1,0,1 -Viktoriya Nikishina,23,Russia,2008,39684,Fencing,1,0,0,1 -Diego Occhiuzzi,27,Italy,2008,39684,Fencing,0,0,1,1 -Yuki Ota,22,Japan,2008,39684,Fencing,0,1,0,1 -Gianpiero Pastore,32,Italy,2008,39684,Fencing,0,0,1,1 -Julien Pillet,30,France,2008,39684,Fencing,1,0,0,1 -Halyna Pundyk,20,Ukraine,2008,39684,Fencing,1,0,0,1 -Ulrich Robeiri,25,France,2008,39684,Fencing,1,0,0,1 -Jason Rogers,25,United States,2008,39684,Fencing,0,1,0,1 -Alfredo Rota,33,Italy,2008,39684,Fencing,0,0,1,1 -Ilaria Salvatori,29,Italy,2008,39684,Fencing,0,0,1,1 -Boris Sanson,27,France,2008,39684,Fencing,1,0,0,1 -Salvatore Sanzo,32,Italy,2008,39684,Fencing,0,0,1,1 -Aida Shanayeva,22,Russia,2008,39684,Fencing,1,0,0,1 -Erinn Smart,28,United States,2008,39684,Fencing,0,1,0,1 -Keeth Smart,30,United States,2008,39684,Fencing,0,1,0,1 -Tan Xue,24,China,2008,39684,Fencing,0,1,0,1 -Luigi Tarantino,35,Italy,2008,39684,Fencing,0,0,1,1 -Hanna Thompson,24,United States,2008,39684,Fencing,0,1,0,1 -Giovanna Trillini,38,Italy,2008,39684,Fencing,0,0,1,1 -Adam Wiercioch,27,Poland,2008,39684,Fencing,0,1,0,1 -James Williams,22,United States,2008,39684,Fencing,0,1,0,1 -Radoslaw Zawrotniak,26,Poland,2008,39684,Fencing,0,1,0,1 -Zhong Man,25,China,2008,39684,Fencing,1,0,0,1 -Olha Zhovnir,19,Ukraine,2008,39684,Fencing,1,0,0,1 -Rolf-Göran Bengtsson,46,Sweden,2008,39684,Equestrian,0,1,0,1 -Nadine Capellmann,43,Germany,2008,39684,Equestrian,1,0,0,1 -Mac Cone,55,Canada,2008,39684,Equestrian,0,1,0,1 -Andreas Dibowski,42,Germany,2008,39684,Equestrian,1,0,0,1 -Daisy Dick,36,Great Britain,2008,39684,Equestrian,0,0,1,1 -William Fox-Pitt,39,Great Britain,2008,39684,Equestrian,0,0,1,1 -Clayton Fredericks,40,Australia,2008,39684,Equestrian,0,1,0,1 -Lucinda Fredericks,42,Australia,2008,39684,Equestrian,0,1,0,1 -Steve Guerdat,26,Switzerland,2008,39684,Equestrian,0,0,1,1 -Andreas Helgstrand,30,Denmark,2008,39684,Equestrian,0,0,1,1 -Jill Henselwood,45,Canada,2008,39684,Equestrian,0,1,0,1 -Sharon Hunt,30,Great Britain,2008,39684,Equestrian,0,0,1,1 -Anne Jensen-van Olst,46,Denmark,2008,39684,Equestrian,0,0,1,1 -Sonja Johnson,40,Australia,2008,39684,Equestrian,0,1,0,1 -Megan Jones,31,Australia,2008,39684,Equestrian,0,1,0,1 -Ingrid Klimke,40,Germany,2008,39684,Equestrian,1,0,0,1 -Laura Kraut,42,United States,2008,39684,Equestrian,1,0,0,1 -Christina Liebherr,29,Switzerland,2008,39684,Equestrian,0,0,1,1 -Gina Miles,34,United States,2008,39684,Equestrian,0,1,0,1 -Ian Millar,61,Canada,2008,39684,Equestrian,0,1,0,1 -Hans Peter Minderhoud,34,Netherlands,2008,39684,Equestrian,0,1,0,1 -Frank Ostholt,32,Germany,2008,39684,Equestrian,1,0,0,1 -Shane Rose,35,Australia,2008,39684,Equestrian,0,1,0,1 -Imke Schellekens-Bartels,31,Netherlands,2008,39684,Equestrian,0,1,0,1 -Niklaus Schurtenberger,40,Switzerland,2008,39684,Equestrian,0,0,1,1 -Pius Schwizer,46,Switzerland,2008,39684,Equestrian,0,0,1,1 -Will Simpson,49,United States,2008,39684,Equestrian,1,0,0,1 -Peter Thomsen,47,Germany,2008,39684,Equestrian,1,0,0,1 -Mary Thomson-King,47,Great Britain,2008,39684,Equestrian,0,0,1,1 -McLain Ward,32,United States,2008,39684,Equestrian,1,0,0,1 -Nathalie zu Sayn-Wittgenstein,33,Denmark,2008,39684,Equestrian,0,0,1,1 -Bree Cole,25,Australia,2008,39684,Diving,0,1,0,1 -Alexandre Despatie,23,Canada,2008,39684,Diving,0,1,0,1 -Dmitry Dobroskok,24,Russia,2008,39684,Diving,0,0,1,1 -Paola Espinosa,22,Mexico,2008,39684,Diving,0,0,1,1 -Heike Fischer,25,Germany,2008,39684,Diving,0,0,1,1 -Patrick Hausding,19,Germany,2008,39684,Diving,0,1,0,1 -He Chong,21,China,2008,39684,Diving,1,0,0,1 -Emilie Heymans,26,Canada,2008,39684,Diving,0,1,0,1 -Huo Liang,18,China,2008,39684,Diving,1,0,0,1 -Sascha Klein,22,Germany,2008,39684,Diving,0,1,0,1 -Ditte Kotzian,29,Germany,2008,39684,Diving,0,0,1,1 -Yury Kunakov,18,Russia,2008,39684,Diving,0,1,0,1 -Illia Kvasha,20,Ukraine,2008,39684,Diving,0,0,1,1 -Lin Yue,17,China,2008,39684,Diving,1,0,0,1 -Matt Mitcham,20,Australia,2008,39684,Diving,1,0,0,1 -Tatiana Ortíz,24,Mexico,2008,39684,Diving,0,0,1,1 -Anastasia Pozdnyakova,22,Russia,2008,39684,Diving,0,1,0,1 -Oleksiy Pryhorov,21,Ukraine,2008,39684,Diving,0,0,1,1 -Dmitry Sautin,34,Russia,2008,39684,Diving,0,1,0,1 -Wang Feng,29,China,2008,39684,Diving,1,0,0,1 -Melissa Wu,16,Australia,2008,39684,Diving,0,1,0,1 -Zhou Luxin,20,China,2008,39684,Diving,0,1,0,1 -Julien Absalon,28,France,2008,39684,Cycling,1,0,0,1 -Kristin Armstrong,35,United States,2008,39684,Cycling,1,0,0,1 -Grégory Baugé,23,France,2008,39684,Cycling,0,1,0,1 -Sam Bewley,21,New Zealand,2008,39684,Cycling,0,0,1,1 -Steven Burke,20,Great Britain,2008,39684,Cycling,0,0,1,1 -Anne-Caroline Chausson,30,France,2008,39684,Cycling,1,0,0,1 -Michael Færk Christensen,22,Denmark,2008,39684,Cycling,0,1,0,1 -Ed Clancy,23,Great Britain,2008,39684,Cycling,1,0,0,1 -Nicole Cooke,25,Great Britain,2008,39684,Cycling,1,0,0,1 -Juan Esteban Curuchet,43,Argentina,2008,39684,Cycling,1,0,0,1 -Mike Day,23,United States,2008,39684,Cycling,0,1,0,1 -Ross Edgar,25,Great Britain,2008,39684,Cycling,0,1,0,1 -René Enders,21,Germany,2008,39684,Cycling,0,0,1,1 -Yoanka González,32,Cuba,2008,39684,Cycling,0,1,0,1 -Westley Gough,20,New Zealand,2008,39684,Cycling,0,0,1,1 -Tania Guderzo,23,Italy,2008,39684,Cycling,0,0,1,1 -Guo Shuang,22,China,2008,39684,Cycling,0,0,1,1 -Wendy Houvenaghel,33,Great Britain,2008,39684,Cycling,0,1,0,1 -Mikhail Ignatyev,23,Russia,2008,39684,Cycling,0,0,1,1 -Emma Johansson,24,Sweden,2008,39684,Cycling,0,1,0,1 -Casper Jørgensen,22,Denmark,2008,39684,Cycling,0,1,0,1 -Irina Kalentyeva,30,Russia,2008,39684,Cycling,0,0,1,1 -Lesia Kalytovska,20,Ukraine,2008,39684,Cycling,0,0,1,1 -Jill Kintner,26,United States,2008,39684,Cycling,0,0,1,1 -Roger Kluge,22,Germany,2008,39684,Cycling,0,1,0,1 -Aleksandr Kolobnev,27,Russia,2008,39684,Cycling,0,0,1,1 -Gustav Larsson,27,Sweden,2008,39684,Cycling,0,1,0,1 -Laëtitia Le Corguillé,22,France,2008,39684,Cycling,0,1,0,1 -Levi Leipheimer,34,United States,2008,39684,Cycling,0,0,1,1 -Maximilian Levy,21,Germany,2008,39684,Cycling,0,0,1,1 -Jens-Erik Madsen,27,Denmark,2008,39684,Cycling,0,1,0,1 -Paul Manning,33,Great Britain,2008,39684,Cycling,1,0,0,1 -Aleksey Markov,29,Russia,2008,39684,Cycling,0,0,1,1 -Anna Meares,24,Australia,2008,39684,Cycling,0,1,0,1 -Michael Mørkøv,23,Denmark,2008,39684,Cycling,0,1,0,1 -Kiyofumi Nagai,25,Japan,2008,39684,Cycling,0,0,1,1 -Chris Newton,34,Great Britain,2008,39684,Cycling,0,0,1,1 -Stefan Nimke,30,Germany,2008,39684,Cycling,0,0,1,1 -Leire Olaberria,31,Spain,2008,39684,Cycling,0,0,1,1 -Vicki Pendleton,27,Great Britain,2008,39684,Cycling,1,0,0,1 -Jean-Christophe Péraud,31,France,2008,39684,Cycling,0,1,0,1 -Walter Pérez,35,Argentina,2008,39684,Cycling,1,0,0,1 -Emma Pooley,25,Great Britain,2008,39684,Cycling,0,1,0,1 -Alex Rasmussen,24,Denmark,2008,39684,Cycling,0,1,0,1 -Donny Robinson,25,United States,2008,39684,Cycling,0,0,1,1 -Rebecca Romero,28,Great Britain,2008,39684,Cycling,1,0,0,1 -Marc Ryan,25,New Zealand,2008,39684,Cycling,0,0,1,1 -Samuel Sánchez,30,Spain,2008,39684,Cycling,1,0,0,1 -Nino Schurter,22,Switzerland,2008,39684,Cycling,0,0,1,1 -Jesse Sergent,20,New Zealand,2008,39684,Cycling,0,0,1,1 -Kévin Sireau,21,France,2008,39684,Cycling,0,1,0,1 -Sabine Spitz,36,Germany,2008,39684,Cycling,1,0,0,1 -Jamie Staff,35,Great Britain,2008,39684,Cycling,1,0,0,1 -Maris Štrombergs,21,Latvia,2008,39684,Cycling,1,0,0,1 -Toni Tauler,34,Spain,2008,39684,Cycling,0,1,0,1 -Geraint Thomas,22,Great Britain,2008,39684,Cycling,1,0,0,1 -Karin Thürig,36,Switzerland,2008,39684,Cycling,0,0,1,1 -Arnaud Tournant,30,France,2008,39684,Cycling,0,1,0,1 -Marianne Vos,21,Netherlands,2008,39684,Cycling,1,0,0,1 -Maja Wloszczowska,24,Poland,2008,39684,Cycling,0,1,0,1 -Aleksey Abalmasov,28,Belarus,2008,39684,Canoeing,1,0,0,1 -Lutz Altepost,26,Germany,2008,39684,Canoeing,0,0,1,1 -Rob Bell,30,Australia,2008,39684,Canoeing,0,0,1,1 -Aleksandr Bogdanovich,26,Belarus,2008,39684,Canoeing,1,0,0,1 -Andrey Bogdanovich,20,Belarus,2008,39684,Canoeing,1,0,0,1 -Benjamin Boukpeti,27,Togo,2008,39684,Canoeing,0,0,1,1 -Norman Bröckl,21,Germany,2008,39684,Canoeing,0,0,1,1 -Yuriy Cheban,22,Ukraine,2008,39684,Canoeing,0,0,1,1 -Saúl Craviotto,23,Spain,2008,39684,Canoeing,1,0,0,1 -Hannah Davis,23,Australia,2008,39684,Canoeing,0,0,1,1 -Marie Delattre,27,France,2008,39684,Canoeing,0,0,1,1 -Torsten Eckbrett,24,Germany,2008,39684,Canoeing,0,0,1,1 -Andrea Facchin,29,Italy,2008,39684,Canoeing,0,0,1,1 -Fanny Fischer,21,Germany,2008,39684,Canoeing,1,0,0,1 -David Florence,26,Great Britain,2008,39684,Canoeing,0,1,0,1 -Lyndsie Fogarty,24,Australia,2008,39684,Canoeing,0,0,1,1 -Björn Goldschmidt,28,Germany,2008,39684,Canoeing,0,0,1,1 -Alexander Grimm,21,Germany,2008,39684,Canoeing,1,0,0,1 -Thomas Hall,26,Canada,2008,39684,Canoeing,0,0,1,1 -Pavol Hochschorner,28,Slovakia,2008,39684,Canoeing,1,0,0,1 -Peter Hochschorner,28,Slovakia,2008,39684,Canoeing,1,0,0,1 -Martin Hollstein,21,Germany,2008,39684,Canoeing,1,0,0,1 -Josefa Idem-Guerrini,43,Italy,2008,39684,Canoeing,0,1,0,1 -Andreas Ihle,29,Germany,2008,39684,Canoeing,1,0,0,1 -Elena Kaliská,36,Slovakia,2008,39684,Canoeing,1,0,0,1 -Tamás Kiss,21,Hungary,2008,39684,Canoeing,0,0,1,1 -Kim Knudsen,30,Denmark,2008,39684,Canoeing,0,1,0,1 -Aleksandr Kostoglod,34,Russia,2008,39684,Canoeing,0,1,0,1 -Danuta Kozák,21,Hungary,2008,39684,Canoeing,0,1,0,1 -György Kozmann,30,Hungary,2008,39684,Canoeing,0,0,1,1 -Mikhail Kuznetsov,23,Russia,2008,39684,Canoeing,0,0,1,1 -Dmitry Larionov,22,Russia,2008,39684,Canoeing,0,0,1,1 -Eirik Verås Larsen,32,Norway,2008,39684,Canoeing,0,1,0,1 -Jacqui Lawrence,26,Australia,2008,39684,Canoeing,0,1,0,1 -Fabien Lefèvre,26,France,2008,39684,Canoeing,0,1,0,1 -Artur Litvinchuk,20,Belarus,2008,39684,Canoeing,1,0,0,1 -Michal Martikán,29,Slovakia,2008,39684,Canoeing,1,0,0,1 -Chantal Meek,29,Australia,2008,39684,Canoeing,0,0,1,1 -Meng Guanliang,31,China,2008,39684,Canoeing,1,0,0,1 -Beata Mikolajczyk,22,Poland,2008,39684,Canoeing,0,1,0,1 -Violetta Oblinger-Peters,30,Austria,2008,39684,Canoeing,0,0,1,1 -Lisa Oldenhof,28,Australia,2008,39684,Canoeing,0,0,1,1 -Maksim Opalev,29,Russia,2008,39684,Canoeing,1,0,0,1 -Inna Osypenko-Radomska,25,Ukraine,2008,39684,Canoeing,1,0,0,1 -Aneta Pastuszka-Konieczna,30,Poland,2008,39684,Canoeing,0,1,0,1 -Carlos Pérez,29,Spain,2008,39684,Canoeing,1,0,0,1 -René Poulsen,19,Denmark,2008,39684,Canoeing,0,1,0,1 -Ronald Rauhe,26,Germany,2008,39684,Canoeing,0,1,0,1 -Nicole Reinhardt,22,Germany,2008,39684,Canoeing,1,0,0,1 -Michal Riszdorfer,31,Slovakia,2008,39684,Canoeing,0,1,0,1 -Richard Riszdorfer,27,Slovakia,2008,39684,Canoeing,0,1,0,1 -Antonio Scaduto,30,Italy,2008,39684,Canoeing,0,0,1,1 -Ondrej Štepánek,28,Czech Republic,2008,39684,Canoeing,0,1,0,1 -Gabriella Szabó,22,Hungary,2008,39684,Canoeing,0,1,0,1 -Juraj Tarr,29,Slovakia,2008,39684,Canoeing,0,1,0,1 -Sergey Ulegin,30,Russia,2008,39684,Canoeing,0,1,0,1 -Attila Vajda,25,Hungary,2008,39684,Canoeing,1,0,0,1 -Adam Van Koeverden,26,Canada,2008,39684,Canoeing,0,1,0,1 -Anne-Laure Viard,27,France,2008,39684,Canoeing,0,0,1,1 -Erik Vlcek,26,Slovakia,2008,39684,Canoeing,0,1,0,1 -Jaroslav Volf,28,Czech Republic,2008,39684,Canoeing,0,1,0,1 -Conny Wassmuth,25,Germany,2008,39684,Canoeing,1,0,0,1 -Tim Wieskötter,29,Germany,2008,39684,Canoeing,0,1,0,1 -Yang Wenjun,24,China,2008,39684,Canoeing,1,0,0,1 -Brett Anderson,20,United States,2008,39684,Baseball,0,0,1,1 -Jake Arrieta,22,United States,2008,39684,Baseball,0,0,1,1 -Brian Barden,27,United States,2008,39684,Baseball,0,0,1,1 -Alexei Bell,24,Cuba,2008,39684,Baseball,0,1,0,1 -Bong Jung-Keun,28,South Korea,2008,39684,Baseball,1,0,0,1 -Matt Brown,26,United States,2008,39684,Baseball,0,0,1,1 -Trevor Cahill,20,United States,2008,39684,Baseball,0,0,1,1 -Frederich Cepeda,28,Cuba,2008,39684,Baseball,0,1,0,1 -Jeremy Cummings,31,United States,2008,39684,Baseball,0,0,1,1 -Alfredo Despaigne,22,Cuba,2008,39684,Baseball,0,1,0,1 -Jason Donald,23,United States,2008,39684,Baseball,0,0,1,1 -Brian Duensing,25,United States,2008,39684,Baseball,0,0,1,1 -Giorvis Duvergel,28,Cuba,2008,39684,Baseball,0,1,0,1 -Michel Enríquez,29,Cuba,2008,39684,Baseball,0,1,0,1 -Dexter Fowler,22,United States,2008,39684,Baseball,0,0,1,1 -John Gall,30,United States,2008,39684,Baseball,0,0,1,1 -Gang Min-Ho,22,South Korea,2008,39684,Baseball,1,0,0,1 -Go Yeong-Min,24,South Korea,2008,39684,Baseball,1,0,0,1 -Norberto González,28,Cuba,2008,39684,Baseball,0,1,0,1 -Yulieski Gourriel,24,Cuba,2008,39684,Baseball,0,1,0,1 -Gwon Hyeok,24,South Korea,2008,39684,Baseball,1,0,0,1 -Han Gi-Ju,21,South Korea,2008,39684,Baseball,1,0,0,1 -Mike Hessman,30,United States,2008,39684,Baseball,0,0,1,1 -Jang Won-Sam,25,South Korea,2008,39684,Baseball,1,0,0,1 -Jeong Dae-Hyeon,29,South Korea,2008,39684,Baseball,1,0,0,1 -Jeong Geun-U,25,South Korea,2008,39684,Baseball,1,0,0,1 -Kevin Jepsen,24,United States,2008,39684,Baseball,0,0,1,1 -Jin Gab-Yong,34,South Korea,2008,39684,Baseball,1,0,0,1 -Kim Dong-Ju,32,South Korea,2008,39684,Baseball,1,0,0,1 -Kim Gwang-Hyeon,20,South Korea,2008,39684,Baseball,1,0,0,1 -Kim Hyeon-Su,20,South Korea,2008,39684,Baseball,1,0,0,1 -Kim Min-Jae,35,South Korea,2008,39684,Baseball,1,0,0,1 -Brandon Knight,32,United States,2008,39684,Baseball,0,0,1,1 -Mike Koplove,31,United States,2008,39684,Baseball,0,0,1,1 -Miguel La Hera,23,Cuba,2008,39684,Baseball,0,1,0,1 -Matt LaPorta,23,United States,2008,39684,Baseball,0,0,1,1 -Pedro Luis Lazo,35,Cuba,2008,39684,Baseball,0,1,0,1 -Lee Dae-Ho,26,South Korea,2008,39684,Baseball,1,0,0,1 -Lee Jin-Yeong,28,South Korea,2008,39684,Baseball,1,0,0,1 -Lee Jong-Uk,28,South Korea,2008,39684,Baseball,1,0,0,1 -Lee Seung-Yeop,31,South Korea,2008,39684,Baseball,1,0,0,1 -Lee Taek-Geun,28,South Korea,2008,39684,Baseball,1,0,0,1 -Lee Yong-Gyu,22,South Korea,2008,39684,Baseball,1,0,0,1 -Lou Marson,22,United States,2008,39684,Baseball,0,0,1,1 -Jonder Martínez,30,Cuba,2008,39684,Baseball,0,1,0,1 -Alexander Mayeta,31,Cuba,2008,39684,Baseball,0,1,0,1 -Rolando Meriño,37,Cuba,2008,39684,Baseball,0,1,0,1 -Luis Miguel Navas,28,Cuba,2008,39684,Baseball,0,1,0,1 -Blaine Neal,30,United States,2008,39684,Baseball,0,0,1,1 -Jayson Nix,25,United States,2008,39684,Baseball,0,0,1,1 -O Seung-Hwan,26,South Korea,2008,39684,Baseball,1,0,0,1 -Vicyohandri Odelín,28,Cuba,2008,39684,Baseball,0,1,0,1 -Héctor Olivera Jr.,23,Cuba,2008,39684,Baseball,0,1,0,1 -Adiel Palma,37,Cuba,2008,39684,Baseball,0,1,0,1 -Eduardo Paret,35,Cuba,2008,39684,Baseball,0,1,0,1 -Park Jin-Man,31,South Korea,2008,39684,Baseball,1,0,0,1 -Yadier Pedroso,22,Cuba,2008,39684,Baseball,0,1,0,1 -Ariel Pestano,34,Cuba,2008,39684,Baseball,0,1,0,1 -Luis Miguel Rodríguez,35,Cuba,2008,39684,Baseball,0,1,0,1 -Ryu Hyeon-Jin,21,South Korea,2008,39684,Baseball,1,0,0,1 -Elier Sánchez,21,Cuba,2008,39684,Baseball,0,1,0,1 -Eriel Sánchez,33,Cuba,2008,39684,Baseball,0,1,0,1 -Nate Schierholtz,24,United States,2008,39684,Baseball,0,0,1,1 -Song Seung-Jun,28,South Korea,2008,39684,Baseball,1,0,0,1 -Jeff Stevens,24,United States,2008,39684,Baseball,0,0,1,1 -Stephen Strasburg,20,United States,2008,39684,Baseball,0,0,1,1 -Taylor Teagarden,24,United States,2008,39684,Baseball,0,0,1,1 -Terry Tiffee,29,United States,2008,39684,Baseball,0,0,1,1 -Yoandri Urgellés,27,Cuba,2008,39684,Baseball,0,1,0,1 -Norge Luis Vera,37,Cuba,2008,39684,Baseball,0,1,0,1 -Casey Weathers,23,United States,2008,39684,Baseball,0,0,1,1 -Yoon Suk-Min,22,South Korea,2008,39684,Baseball,1,0,0,1 -Osmay Acosta,23,Cuba,2008,39684,Boxing,0,0,1,1 -Georgiy Balakshin,28,Russia,2008,39684,Boxing,0,0,1,1 -Carlos Banteux,21,Cuba,2008,39684,Boxing,0,1,0,1 -Paddy Barnes,21,Ireland,2008,39684,Boxing,0,0,1,1 -Manus Boonjumnong,28,Thailand,2008,39684,Boxing,0,1,0,1 -Roberto Cammarelle,28,Italy,2008,39684,Boxing,1,0,0,1 -Rakhim Chakhkiyev,25,Russia,2008,39684,Boxing,1,0,0,1 -Emilio Correa Jr.,22,Cuba,2008,39684,Boxing,0,1,0,1 -James DeGale,22,Great Britain,2008,39684,Boxing,1,0,0,1 -Félix Díaz,24,Dominican Republic,2008,39684,Boxing,1,0,0,1 -Khédafi Djelkhir,24,France,2008,39684,Boxing,0,1,0,1 -Kenny Egan,26,Ireland,2008,39684,Boxing,0,1,0,1 -Enkhbatyn Badar-Uugan,23,Mongolia,2008,39684,Boxing,1,0,0,1 -Vaeceslav Gojan,25,Moldova,2008,39684,Boxing,0,0,1,1 -Hanati Silamu,23,China,2008,39684,Boxing,0,0,1,1 -Yampier Hernández,23,Cuba,2008,39684,Boxing,0,0,1,1 -V'iacheslav Hlazkov,23,Ukraine,2008,39684,Boxing,0,0,1,1 -Roniel Iglesias,19,Cuba,2008,39684,Boxing,0,0,1,1 -Sahin Imranov,27,Azerbaijan,2008,39684,Boxing,0,0,1,1 -Hrachik Javakhyan,24,Armenia,2008,39684,Boxing,0,0,1,1 -Tony Jeffries,23,Great Britain,2008,39684,Boxing,0,0,1,1 -Somjit Jongjohor,33,Thailand,2008,39684,Boxing,1,0,0,1 -Bruno Julie,30,Mauritius,2008,39684,Boxing,0,0,1,1 -Yakup Kiliç,22,Turkey,2008,39684,Boxing,0,0,1,1 -Kim Jeong-Ju,26,South Korea,2008,39684,Boxing,0,0,1,1 -Andry Laffita,30,Cuba,2008,39684,Boxing,0,1,0,1 -Yankiel León,26,Cuba,2008,39684,Boxing,0,1,0,1 -Vasyl Lomachenko,20,Ukraine,2008,39684,Boxing,1,0,0,1 -Vincenzo Picardi,24,Italy,2008,39684,Boxing,0,0,1,1 -David Price,25,Great Britain,2008,39684,Boxing,0,0,1,1 -Pürevdorjin Serdamba,23,Mongolia,2008,39684,Boxing,0,1,0,1 -Clemente Russo,26,Italy,2008,39684,Boxing,0,1,0,1 -Bakhyt Sarsekbayev,26,Kazakhstan,2008,39684,Boxing,1,0,0,1 -Yerkebulan Shynaliyev,20,Kazakhstan,2008,39684,Boxing,0,0,1,1 -Vijender Singh,22,India,2008,39684,Boxing,0,0,1,1 -Daouda Sow,25,France,2008,39684,Boxing,0,1,0,1 -Darren Sutherland,26,Ireland,2008,39684,Boxing,0,0,1,1 -Aleksey Tishchenko,24,Russia,2008,39684,Boxing,1,0,0,1 -Yordenis Ugás,22,Cuba,2008,39684,Boxing,0,0,1,1 -Alexis Vastine,21,France,2008,39684,Boxing,0,0,1,1 -Deontay Wilder,22,United States,2008,39684,Boxing,0,0,1,1 -Zhang Xiaoping,26,China,2008,39684,Boxing,1,0,0,1 -Zhang Zhilei,25,China,2008,39684,Boxing,0,1,0,1 -Zou Shiming,27,China,2008,39684,Boxing,1,0,0,1 -Phil Dalhausser,28,United States,2008,39684,Beach Volleyball,1,0,0,1 -Emanuel,35,Brazil,2008,39684,Beach Volleyball,0,0,1,1 -Fábio,29,Brazil,2008,39684,Beach Volleyball,0,1,0,1 -Márcio,34,Brazil,2008,39684,Beach Volleyball,0,1,0,1 -Misty May-Treanor,31,United States,2008,39684,Beach Volleyball,1,0,0,1 -Ricardo,33,Brazil,2008,39684,Beach Volleyball,0,0,1,1 -Todd Rogers,34,United States,2008,39684,Beach Volleyball,1,0,0,1 -Tian Jia,27,China,2008,39684,Beach Volleyball,0,1,0,1 -Kerri Walsh,29,United States,2008,39684,Beach Volleyball,1,0,0,1 -Wang Jie,24,China,2008,39684,Beach Volleyball,0,1,0,1 -Xue Chen,19,China,2008,39684,Beach Volleyball,0,0,1,1 -Zhang Xi,23,China,2008,39684,Beach Volleyball,0,0,1,1 -Svetlana Abrosimova,28,Russia,2008,39684,Basketball,0,0,1,1 -Carmelo Anthony,24,United States,2008,39684,Basketball,1,0,0,1 -Seimone Augustus,24,United States,2008,39684,Basketball,1,0,0,1 -Suzy Batkovic,27,Australia,2008,39684,Basketball,0,1,0,1 -Tully Bevilaqua,36,Australia,2008,39684,Basketball,0,1,0,1 -Sue Bird,27,United States,2008,39684,Basketball,1,0,0,1 -Carlos Boozer,26,United States,2008,39684,Basketball,1,0,0,1 -Chris Bosh,24,United States,2008,39684,Basketball,1,0,0,1 -Kobe Bryant,29,United States,2008,39684,Basketball,1,0,0,1 -José Manuel Calderón,26,Spain,2008,39684,Basketball,0,1,0,1 -Tamika Catchings,29,United States,2008,39684,Basketball,1,0,0,1 -Rohanee Cox,27,Australia,2008,39684,Basketball,0,1,0,1 -Carlos Delfino,25,Argentina,2008,39684,Basketball,0,0,1,1 -Rudy Fernández,23,Spain,2008,39684,Basketball,0,1,0,1 -Sylvia Fowles,22,United States,2008,39684,Basketball,1,0,0,1 -Jorge Garbajosa,30,Spain,2008,39684,Basketball,0,1,0,1 -Marc Gasol,23,Spain,2008,39684,Basketball,0,1,0,1 -Pau Gasol,28,Spain,2008,39684,Basketball,0,1,0,1 -Manu Ginóbili,31,Argentina,2008,39684,Basketball,0,0,1,1 -Román González,30,Argentina,2008,39684,Basketball,0,0,1,1 -Hollie Grima,24,Australia,2008,39684,Basketball,0,1,0,1 -Juan Pedro Gutiérrez,24,Argentina,2008,39684,Basketball,0,0,1,1 -Leonardo Gutiérrez,30,Argentina,2008,39684,Basketball,0,0,1,1 -Becky Hammon,31,Russia,2008,39684,Basketball,0,0,1,1 -Kristi Harrower,33,Australia,2008,39684,Basketball,0,1,0,1 -Dwight Howard,22,United States,2008,39684,Basketball,1,0,0,1 -Lauren Jackson,27,Australia,2008,39684,Basketball,0,1,0,1 -LeBron James,23,United States,2008,39684,Basketball,1,0,0,1 -Carlos Jiménez,32,Spain,2008,39684,Basketball,0,1,0,1 -Federico Kammerichs,28,Argentina,2008,39684,Basketball,0,0,1,1 -Marina Karpunina,24,Russia,2008,39684,Basketball,0,0,1,1 -Jason Kidd,35,United States,2008,39684,Basketball,1,0,0,1 -Ilona Korstin,28,Russia,2008,39684,Basketball,0,0,1,1 -Marina Kuzina,23,Russia,2008,39684,Basketball,0,0,1,1 -Kara Lawson,27,United States,2008,39684,Basketball,1,0,0,1 -Lisa Leslie,36,United States,2008,39684,Basketball,1,0,0,1 -Yekaterina Lisina,20,Russia,2008,39684,Basketball,0,0,1,1 -Raúl López,28,Spain,2008,39684,Basketball,0,1,0,1 -DeLisha Milton-Jones,33,United States,2008,39684,Basketball,1,0,0,1 -Álex Mumbrú,29,Spain,2008,39684,Basketball,0,1,0,1 -Juan Carlos Navarro,28,Spain,2008,39684,Basketball,0,1,0,1 -Andrés Nocioni,28,Argentina,2008,39684,Basketball,0,0,1,1 -Fabricio Oberto,35,Argentina,2008,39684,Basketball,0,0,1,1 -Irina Osipova,27,Russia,2008,39684,Basketball,0,0,1,1 -Candace Parker,22,United States,2008,39684,Basketball,1,0,0,1 -Chris Paul,23,United States,2008,39684,Basketball,1,0,0,1 -Erin Phillips,23,Australia,2008,39684,Basketball,0,1,0,1 -Cappie Pondexter,25,United States,2008,39684,Basketball,1,0,0,1 -Antonio Porta,24,Argentina,2008,39684,Basketball,0,0,1,1 -Pablo Prigioni,31,Argentina,2008,39684,Basketball,0,0,1,1 -Tayshaun Prince,28,United States,2008,39684,Basketball,1,0,0,1 -Paolo Quinteros,29,Argentina,2008,39684,Basketball,0,0,1,1 -Oksana Rakhmatulina,31,Russia,2008,39684,Basketball,0,0,1,1 -Emma Randall,23,Australia,2008,39684,Basketball,0,1,0,1 -Michael Redd,28,United States,2008,39684,Basketball,1,0,0,1 -Felipe Reyes,28,Spain,2008,39684,Basketball,0,1,0,1 -Berni Rodríguez,28,Spain,2008,39684,Basketball,0,1,0,1 -Ricky Rubio,17,Spain,2008,39684,Basketball,0,1,0,1 -Luis Scola,28,Argentina,2008,39684,Basketball,0,0,1,1 -Jenni Screen,26,Australia,2008,39684,Basketball,0,1,0,1 -Tatyana Shchyegoleva,26,Russia,2008,39684,Basketball,0,0,1,1 -Katie Smith,34,United States,2008,39684,Basketball,1,0,0,1 -Belinda Snell,27,Australia,2008,39684,Basketball,0,1,0,1 -Irina Sokolovskaya,25,Russia,2008,39684,Basketball,0,0,1,1 -Mariya Stepanova,29,Russia,2008,39684,Basketball,0,0,1,1 -Laura Summerton-Hodges,24,Australia,2008,39684,Basketball,0,1,0,1 -Diana Taurasi,26,United States,2008,39684,Basketball,1,0,0,1 -Penny Taylor,27,Australia,2008,39684,Basketball,0,1,0,1 -Tina Thompson,33,United States,2008,39684,Basketball,1,0,0,1 -Nataliya Vodopyanova,27,Russia,2008,39684,Basketball,0,0,1,1 -Dwyane Wade Jr.,26,United States,2008,39684,Basketball,1,0,0,1 -Deron Williams,24,United States,2008,39684,Basketball,1,0,0,1 -Cai Yun,28,China,2008,39684,Badminton,0,1,0,1 -Chen Jin,22,China,2008,39684,Badminton,0,0,1,1 -Du Jing,24,China,2008,39684,Badminton,1,0,0,1 -Fu Haifeng,24,China,2008,39684,Badminton,0,1,0,1 -He Hanbin,22,China,2008,39684,Badminton,0,0,1,1 -Hwang Ji-Man,24,South Korea,2008,39684,Badminton,0,0,1,1 -Markis Kido,24,Indonesia,2008,39684,Badminton,1,0,0,1 -Lee Chong Wei,25,Malaysia,2008,39684,Badminton,0,1,0,1 -Lee Gyeong-Won,28,South Korea,2008,39684,Badminton,0,1,0,1 -Lee Jae-Jin,25,South Korea,2008,39684,Badminton,0,0,1,1 -Lee Yong-Dae,19,South Korea,2008,39684,Badminton,1,0,0,1 -Lin Dan,24,China,2008,39684,Badminton,1,0,0,1 -Lilyana Natsir,22,Indonesia,2008,39684,Badminton,0,1,0,1 -Hendra Setiawan,23,Indonesia,2008,39684,Badminton,1,0,0,1 -Wei Yili,26,China,2008,39684,Badminton,0,0,1,1 -Nova Widianto,30,Indonesia,2008,39684,Badminton,0,1,0,1 -Xie Xingfan,27,China,2008,39684,Badminton,0,1,0,1 -Maria Yulianti,23,Indonesia,2008,39684,Badminton,0,0,1,1 -Zhang Ning,33,China,2008,39684,Badminton,1,0,0,1 -Zhang Yawen,23,China,2008,39684,Badminton,0,0,1,1 -Mariya Abakumova,22,Russia,2008,39684,Athletics,0,1,0,1 -Valerie Adams-Vili,23,New Zealand,2008,39684,Athletics,1,0,0,1 -Virgilijus Alekna,36,Lithuania,2008,39684,Athletics,0,0,1,1 -Denis Alekseyev,20,Russia,2008,39684,Athletics,0,0,1,1 -Olena Antonova,36,Ukraine,2008,39684,Athletics,0,0,1,1 -Aaron Armstrong,30,Trinidad and Tobago,2008,39684,Athletics,0,1,0,1 -Nobuharu Asahara,36,Japan,2008,39684,Athletics,0,0,1,1 -Mehdi Baala,29,France,2008,39684,Athletics,0,0,1,1 -Dretti Bain,22,Bahamas,2008,39684,Athletics,0,1,0,1 -Yarelis Barrios,25,Cuba,2008,39684,Athletics,0,1,0,1 -Hasna Benhassi,30,Morocco,2008,39684,Athletics,0,0,1,1 -Keston Bledman,20,Trinidad and Tobago,2008,39684,Athletics,0,1,0,1 -Valeriy Borchin,21,Russia,2008,39684,Athletics,1,0,0,1 -Olivia Borlée,22,Belgium,2008,39684,Athletics,0,1,0,1 -Chris Brown,29,Bahamas,2008,39684,Athletics,0,1,0,1 -Stephanie Brown-Trafton,28,United States,2008,39684,Athletics,1,0,0,1 -Wilfred Bungei,28,Kenya,2008,39684,Athletics,1,0,0,1 -Marc Burns,25,Trinidad and Tobago,2008,39684,Athletics,0,1,0,1 -Emmanuel Callender,24,Trinidad and Tobago,2008,39684,Athletics,0,1,0,1 -Ibrahim Camejo,26,Cuba,2008,39684,Athletics,0,0,1,1 -Veronica Campbell-Brown,26,Jamaica,2008,39684,Athletics,1,0,0,1 -Christian Cantwell,27,United States,2008,39684,Athletics,0,1,0,1 -Nesta Carter,22,Jamaica,2008,39684,Athletics,1,0,0,1 -Yuliya Chermoshanskaya,22,Russia,2008,39684,Athletics,1,0,0,1 -Tatyana Chernova,20,Russia,2008,39684,Athletics,0,0,1,1 -Anna Chicherova,26,Russia,2008,39684,Athletics,0,0,1,1 -Bryan Clay,28,United States,2008,39684,Athletics,1,0,0,1 -Shawn Crawford,30,United States,2008,39684,Athletics,0,1,0,1 -Tasha Danvers,30,Great Britain,2008,39684,Athletics,0,0,1,1 -Meseret Defar,24,Ethiopia,2008,39684,Athletics,0,0,1,1 -Pigi Devetzi,32,Greece,2008,39684,Athletics,0,0,1,1 -Vadim Devyatovsky,31,Belarus,2008,39684,Athletics,0,1,0,1 -Constantina Dita-Tomescu,38,Romania,2008,39684,Athletics,1,0,0,1 -Nataliya Dobrynska,26,Ukraine,2008,39684,Athletics,1,0,0,1 -Maksim Dyldin,21,Russia,2008,39684,Athletics,0,0,1,1 -Nelson Évora,24,Portugal,2008,39684,Athletics,1,0,0,1 -Aleksandra Fedoriva,19,Russia,2008,39684,Athletics,1,0,0,1 -Svetlana Feofanova,28,Russia,2008,39684,Athletics,0,0,1,1 -Tatyana Firova,25,Russia,2008,39684,Athletics,0,1,0,1 -Shalane Flanagan,27,United States,2008,39684,Athletics,0,0,1,1 -Hyleas Fountain,27,United States,2008,39684,Athletics,0,1,0,1 -Shelly-Ann Fraser-Pryce,21,Jamaica,2008,39684,Athletics,1,0,0,1 -Michael Frater,25,Jamaica,2008,39684,Athletics,1,0,0,1 -Vladislav Frolov,28,Russia,2008,39684,Athletics,0,0,1,1 -Kim Gevaert,30,Belgium,2008,39684,Athletics,0,1,0,1 -Jaouad Gharib,36,Morocco,2008,39684,Athletics,0,1,0,1 -Dawn Harper,24,United States,2008,39684,Athletics,1,0,0,1 -Natasha Hastings,22,United States,2008,39684,Athletics,1,0,0,1 -Tia Hellebaut,30,Belgium,2008,39684,Athletics,1,0,0,1 -Monique Henderson,25,United States,2008,39684,Athletics,1,0,0,1 -Steve Hooker,26,Australia,2008,39684,Athletics,1,0,0,1 -Franca Idoko,23,Nigeria,2008,39684,Athletics,0,0,1,1 -Phillips Idowu,29,Great Britain,2008,39684,Athletics,0,1,0,1 -Yelena Isinbayeva,26,Russia,2008,39684,Athletics,1,0,0,1 -Ismail Ahmed Ismail,23,Sudan,2008,39684,Athletics,0,1,0,1 -Halimat Ismaila,24,Nigeria,2008,39684,Athletics,0,0,1,1 -Bershawn Jackson,25,United States,2008,39684,Athletics,0,0,1,1 -Pamela Jelimo,18,Kenya,2008,39684,Athletics,1,0,0,1 -Eunice Jepkorir,26,Kenya,2008,39684,Athletics,0,1,0,1 -Janeth Jepkosgei,24,Kenya,2008,39684,Athletics,0,1,0,1 -Sheena Johnson-Tosta,25,United States,2008,39684,Athletics,0,1,0,1 -Olga Kaniskina,23,Russia,2008,39684,Athletics,1,0,0,1 -Gerd Kanter,29,Estonia,2008,39684,Athletics,1,0,0,1 -Anastasiya Kapachinskaya,28,Russia,2008,39684,Athletics,0,1,0,1 -Tsegaye Kebede,21,Ethiopia,2008,39684,Athletics,0,0,1,1 -Gloria Kemasoude,28,Nigeria,2008,39684,Athletics,0,0,1,1 -Nataliya Khoronenko-Mikhnevich,26,Belarus,2008,39684,Athletics,0,1,0,1 -Eliud Kipchoge,23,Kenya,2008,39684,Athletics,0,1,0,1 -Asbel Kiprop,19,Kenya,2008,39684,Athletics,1,0,0,1 -Brimin Kipruto,23,Kenya,2008,39684,Athletics,1,0,0,1 -Micah Kogo,22,Kenya,2008,39684,Athletics,0,0,1,1 -Anton Kokorin,21,Russia,2008,39684,Athletics,0,0,1,1 -Ainars Kovals,26,Latvia,2008,39684,Athletics,0,1,0,1 -Primož Kozmus,28,Slovenia,2008,39684,Athletics,1,0,0,1 -Andrey Kravchenko,22,Belarus,2008,39684,Athletics,0,1,0,1 -Nancy Langat,26,Kenya,2008,39684,Athletics,1,0,0,1 -Iryna Lishchynska,32,Ukraine,2008,39684,Athletics,0,1,0,1 -Lyudmila Litvinova,23,Russia,2008,39684,Athletics,0,1,0,1 -Shereefa Lloyd,25,Jamaica,2008,39684,Athletics,0,0,1,1 -Priscilla Lopes-Schliep,25,Canada,2008,39684,Athletics,0,0,1,1 -Yevgeniy Lukyanenko,23,Russia,2008,39684,Athletics,0,1,0,1 -Maurren Maggi,32,Brazil,2008,39684,Athletics,1,0,0,1 -Tomasz Majewski,26,Poland,2008,39684,Athletics,1,0,0,1 -Hanna Mariën,26,Belgium,2008,39684,Athletics,0,1,0,1 -Germaine Mason,25,Great Britain,2008,39684,Athletics,0,1,0,1 -Richard Mateelong,24,Kenya,2008,39684,Athletics,0,0,1,1 -Michael Mathieu,24,Bahamas,2008,39684,Athletics,0,1,0,1 -Piotr Malachowski,25,Poland,2008,39684,Athletics,0,1,0,1 -Françoise Mbango,32,Cameroon,2008,39684,Athletics,1,0,0,1 -Sally McLellan-Pearson,21,Australia,2008,39684,Athletics,0,1,0,1 -Mahiedine Mekhissi-Benabbad,23,France,2008,39684,Athletics,0,1,0,1 -Oksana Menkova,26,Belarus,2008,39684,Athletics,1,0,0,1 -Yelena Migunova,24,Russia,2008,39684,Athletics,0,1,0,1 -Andrey Mikhnevich,32,Belarus,2008,39684,Athletics,0,0,1,1 -Ramon Miller,21,Bahamas,2008,39684,Athletics,0,1,0,1 -Godfrey Khotso Mokoena,23,South Africa,2008,39684,Athletics,0,1,0,1 -Avard Moncur,29,Bahamas,2008,39684,Athletics,0,1,0,1 -Yipsi Moreno,27,Cuba,2008,39684,Athletics,0,1,0,1 -Catherine Ndereba,36,Kenya,2008,39684,Athletics,0,1,0,1 -Denis Nizhegorodov,28,Russia,2008,39684,Athletics,0,0,1,1 -Christina Obergföll,26,Germany,2008,39684,Athletics,0,0,1,1 -Christine Ohuruogu,24,Great Britain,2008,39684,Athletics,1,0,0,1 -Blessing Okagbare,19,Nigeria,2008,39684,Athletics,0,0,1,1 -David Oliver,26,United States,2008,39684,Athletics,0,0,1,1 -Damola Osayomi,22,Nigeria,2008,39684,Athletics,0,0,1,1 -Agnes Osazuwa,19,Nigeria,2008,39684,Athletics,0,0,1,1 -Nadezhda Ostapchuk,27,Belarus,2008,39684,Athletics,0,0,1,1 -Élodie Ouédraogo,27,Belgium,2008,39684,Athletics,0,1,0,1 -David Payne,26,United States,2008,39684,Athletics,0,1,0,1 -Jefferson Pérez,34,Ecuador,2008,39684,Athletics,0,1,0,1 -Tero Pitkämäki,25,Finland,2008,39684,Athletics,0,0,1,1 -Yevgeniya Polyakova,25,Russia,2008,39684,Athletics,1,0,0,1 -Asafa Powell,25,Jamaica,2008,39684,Athletics,1,0,0,1 -Elisa Rigaudo,28,Italy,2008,39684,Athletics,0,0,1,1 -Dayron Robles,21,Cuba,2008,39684,Athletics,1,0,0,1 -Yaroslav Rybakov,27,Russia,2008,39684,Athletics,0,0,1,1 -Irving Saladino,25,Panama,2008,39684,Athletics,1,0,0,1 -Gulnara Samitova-Galkina,30,Russia,2008,39684,Athletics,1,0,0,1 -Leevan Sands,27,Bahamas,2008,39684,Athletics,0,0,1,1 -Alex Schwazer,23,Italy,2008,39684,Athletics,1,0,0,1 -Sileshi Sihine,25,Ethiopia,2008,39684,Athletics,0,1,0,1 -Andrey Silnov,23,Russia,2008,39684,Athletics,1,0,0,1 -Sherone Simpson,24,Jamaica,2008,39684,Athletics,0,1,0,1 -Edwin Soi,22,Kenya,2008,39684,Athletics,0,0,1,1 -Barbora Špotáková,27,Czech Republic,2008,39684,Athletics,1,0,0,1 -Jenn Stuczynski-Suhr,26,United States,2008,39684,Athletics,0,1,0,1 -Leonel Suárez,20,Cuba,2008,39684,Athletics,0,0,1,1 -Shingo Suetsugu,28,Japan,2008,39684,Athletics,0,0,1,1 -Shinji Takahira,24,Japan,2008,39684,Athletics,0,0,1,1 -Dwight Thomas,27,Jamaica,2008,39684,Athletics,1,0,0,1 -Andreas Thorkildsen,26,Norway,2008,39684,Athletics,1,0,0,1 -Ivan Tikhon,32,Belarus,2008,39684,Athletics,0,0,1,1 -Nataliya Tobias,27,Ukraine,2008,39684,Athletics,0,0,1,1 -Naoki Tsukahara,23,Japan,2008,39684,Athletics,0,0,1,1 -Kjersti Tysse-Plätzer,36,Norway,2008,39684,Athletics,0,1,0,1 -Tatyana Veshkurova,26,Russia,2008,39684,Athletics,0,1,0,1 -Blanka Vlašic,24,Croatia,2008,39684,Athletics,0,1,0,1 -Yekaterina Volkova,30,Russia,2008,39684,Athletics,0,0,1,1 -Melaine Walker,25,Jamaica,2008,39684,Athletics,1,0,0,1 -Sammy Wanjiru,21,Kenya,2008,39684,Athletics,1,0,0,1 -Rosemarie Whyte,21,Jamaica,2008,39684,Athletics,0,0,1,1 -Bobby-Gaye Wilkins,19,Jamaica,2008,39684,Athletics,0,0,1,1 -Andrae Williams,25,Bahamas,2008,39684,Athletics,0,1,0,1 -Novlene Williams-Mills,26,Jamaica,2008,39684,Athletics,0,0,1,1 -Nick Willis,25,New Zealand,2008,39684,Athletics,0,1,0,1 -Mary Wineberg,28,United States,2008,39684,Athletics,1,0,0,1 -Regi Witherspoon,23,United States,2008,39684,Athletics,1,0,0,1 -Alfred Kirwa Yego,21,Kenya,2008,39684,Athletics,0,0,1,1 -Denys Yurchenko,30,Ukraine,2008,39684,Athletics,0,0,1,1 -Zhang Wenxiu,32,China,2008,39684,Athletics,0,0,1,1 -Zhou Chunxiu,29,China,2008,39684,Athletics,0,0,1,1 -Virginie Arnold,28,France,2008,39684,Archery,0,0,1,1 -Bair Badyonov,32,Russia,2008,39684,Archery,0,0,1,1 -Chen Ling,21,China,2008,39684,Archery,0,1,0,1 -Ilario Di Buò,51,Italy,2008,39684,Archery,0,1,0,1 -Sophie Dodémont,34,France,2008,39684,Archery,0,0,1,1 -Marco Galiazzo,25,Italy,2008,39684,Archery,0,1,0,1 -Guo Dan,22,China,2008,39684,Archery,0,1,0,1 -Im Dong-Hyeon,23,South Korea,2008,39684,Archery,1,0,0,1 -Jiang Lin,26,China,2008,39684,Archery,0,0,1,1 -Joo Hyun-Jung,26,South Korea,2008,39684,Archery,1,0,0,1 -Lee Chang-Hwan,26,South Korea,2008,39684,Archery,1,0,0,1 -Li Wenquan,22,China,2008,39684,Archery,0,0,1,1 -Mauro Nespoli,20,Italy,2008,39684,Archery,0,1,0,1 -Viktor Ruban,27,Ukraine,2008,39684,Archery,1,0,0,1 -Bérengère Schuh,24,France,2008,39684,Archery,0,0,1,1 -Xue Haifeng,28,China,2008,39684,Archery,0,0,1,1 diff --git a/medals.xlsx b/medals.xlsx deleted file mode 100644 index d6a95d6a2e31cdfcc99597050d719b351acdcd18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547298 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

)k6cFpmhKSTvgk*11Ny3&UaoWF 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%0DmXROufV>m%3zCF-4Irg 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

  • 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

    i?q-Rf}Qa3Ey>#B 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

    vEnz)frWMv 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

    Q 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%0DCY$-N2JY1UWl(wbb*l~cp_8rV zN=y3MVhBy_G~hZ%VwrqN=|I`+4j1ak_v%N~U?kI2V>-qJ%%~RhEz1ITOgNQl#i#>H zd!ik5u@U>+6v>-h$NJJ*Clh@2)o84iW?R#NW5J#eSX-dwnOSid=zohv$2ORK^e$W* z`0s={Y}@Q6T-}9StesUdN1AKsrxSiTH3G`mxD*&VYW1zcILdwI{1ggh+EwgV#sZV9?d9lCdR zR6S%P?=Oqq(E4@FfV5w8w-`)6#}r37pqW)bndR4)PCBFkF%Spj9NtBs_rbwabPm3O z_0~nZ_nRo6-R8p69Zv%QqV;=n^|wDpx@<7gCDx$c5$tEDQ8Vec+8`u_%Z-Et+iQTL$zjp{j|L@XuGGC&2 z8rGhcFM7vKJBqHnI0A3DeUI+gdbvv{??nmaIN$i>!4C6_{yhqB0jy~9Eb_}KmSUcWuUST+ov4?EqekDHd$lsZ&a9K@?(I+4kv7HkwhyIYn zYj!`)a%^PLjOeutF$viYP)&(3Nv7?WK?F0M!7*=;x>U<#h<$LN$gN!rxa z2^{%a>DR)p2uvECBm9v5jwPW5x0&+#ho)&JGs@ zBU1R980^)(Hrz}tFJ*|R{sQrH*-Tq;DU0U~*3N!u>t=|IVPf@U^l~=-l{M<-Cul|w64hp)cEW4fo z@62X^m`lup^x@9$`!SZK@5e7&9-{<~YswH`uW_!t?mc=PtTHD~xa1IxG(^ujE<4M& z(XBGkJ*or1W2oo!@V099Y;rxSmilj{vX8LIQ<2wpqGypMIP+uE4^WCvb+5-Vd=r8p zKh#dsqvEr5X~dJjN0-L?9Nv2Ez<)pQ=#>;&{2?8dqya%k`KO5yo=K2RF9kZlzUl@| zVxCjG?{J^F@qn^dq+&v>?Uscr&P!|~N-gNa#ycdDe>qK|lQ`{l%?Sr!saI&Yg#6U8 z`4ck5CuC=2{)dlsxQBQaSbh~)#03D6W$8!Jt9%)Q7k$`Z)JaWgpT4|APMDXZ^C*o% z79-mWA<_AgKn&xtELBP;&-+o&y}Gjr|NXMo?`_Mluc8{1XEtUGYjp773x`8eq1mHH zGYgi@gw+VbKMsq5EKP1LHHeru9MktlOczoKDLpS1)S4;NFjBYS#y=V@>%&-Sjyw4Np?R$5s#2S#l~&|a2~j;SqC)u6XH10$zXjVh9+Qz( zf+QDhjm4(n z{7E1A438?sJN{lV^Y6^4HcFEQ7{BM?zAx9fPD{y?-{n$B= ziCnk!SDUgbNzIJ*XG07uNO+P#p|Ye^mc;}if-RuALo4y%2rB7kF@r64_|o6mpZ(A< zk6uH%i}}ma>Y}-y)cK|eUB8%?lyTv?@b|=H)a1=Mucb!DA5R6omdbk=19`?e>1;(0 zjq3u`X`6n{hTZ9AX-<>t7OtB4m-ENWsz=YcU+lEv@U>u+UDQ%aog)jdl=JXKx0dKB zsoxk4oowdkogeoRpRQBN;WDOZ-z)-2ZZ9l0%66s8lT=fN6~z5K&$W22(hR6g)=+D` zC#k)KlHf)Sqtu_GJ84hI@PhS|4 zvEr^6P0=StUf8FVyXs&aa!Eqv7q%>R`v*)D%)dE_dT~*#&xJZlrtM7%8ZN_Jvdpa- zKi0xq`?cRs;wisJ5A^|*Kwio(&!Tu+|5RJ7kTAKUy0ycWow{IqTiB@wv(uv~Kpr-z z`9N+BKR|K*XYpWJH@G{uC(`HcrK)v_hH5qY2)VbK*m}YYqYe>ATcHeyz)_%@7-fu` z&iu%63aoRdAJMaYTrTkfuj84Qm#!b+D_Tjm^(oq|$6;J4=EH)e3jAm#FyDB?&uWZ2 zLjKKY!ZMt{2EgfOZ&zL7gx?!HR(hw6cb1o#`6AcwAZ^u3@r1?d=4y-8fAD3@?7x_= z=VT{MkuD{*R-|>u$A%4$4z3Vo(|2Yn%L9vu^>9flxN=y@xYt|{v_F4FZFJC}$RyaZ zSgH)NeOR#=m)M>=!k*e?<7ieKn!Z8TrETRT_y7MeU#oh7t+X6ov&7@~WW9RTp=B}Y zttfw-LW~%4Zu-|>dG_}9oT8NHIkn?*@=o6!KgDbxaNx8RFvhsMRrUrNhP)WW>wbc( z@v$^vM}rt2OmK6;qXVwl7br}Myk8#}7(8**Sej0jWhEj(2dz^hI~X4*Eh!+JEooy7 zTEsf}E$z=P344gYw)UgbAPW)oi_=S0FPsAmvLi=bi~$^7?CO7;9|=Pfue0WU*p^LY z4I}gapTDv}9RQ(K4$H|26-I=+?yev9PS|+1sNWHjG+G)ICz8!r-ozcMbj3Gbfvk5Y_1qT5@^jgziy|ubZpo10|kcu!Nkyp!Qs_@==?4#+|Q{TP;2S= z;j_O0xzjvetD%w`3g6?M$qsXg=MCsO*8*_O%qelMhNUpk;K2@pZ_&YXQ(*Va%&tr0 zCfwZ0KH`^yc=T@~br0~6{$^@H=H$RNM_@&~32wj74)+Up-QLyBIp)dW`wkSZ`_&i5 z_<99DnC<+*|DZY(6P+!ii-Efp7q&-g6kFN1xXKi>!F4Ljq5IJ3hZ6xiocN=+fT?5A z8qCf8Glb@}J_8}XjGl}rCl@rw2`vFb*lX_9#fM(%o`P9u;^@MyhGv?MM0@-Top&rATgPZ502$V^6u+c#EKl3l~B(H5@@v=~7Df z00EVKtxYhbVN34)8~@R_aUrt&{!5{burq_1Q>4=WkyP#gec?1}b`kOfyh--?skn!E zH6@_vC{ELdAuhN9T24JE@Tv3y&q&u290j;=O;#tQuDr7BnHkw*4EjZWJw6-PV2^|N zl`N_jEO%dSIwN;*8wccC`tl_e@?;FoiSncrI9H0}??HQhunn|$dRwV|KZ$6PwFGtelxG(ThV=+x(1xkAdl@=CV5`rDJ<5WkvNYnS9`z}WQXslK!;^uZgw#NC; zNl?{UEWEnky3>ijIE^{nn|W>{Cz+cayW6FH`r{5EUSRqev?~zLo}LW*v3^rQeV@z-0vgJ#i_H+}i3J7gRt zM*v_GL82?$Hy^^>@7-=Y3Na0sOiK);PT)Fryp>BN8bUu;#U+cBR4Z?|npzhu>IPAv zzu1y`NyhcDhtdEXgs%RQnqc}lOdvZhOA>I!QDOi#A!66T6E4%(z)%voPSAbF%LYJ_ zZAun1zr2XGJs+{R#%PAFGU(NiFv-5<<ttYa7k<2T1MF6Ri?!zbu(N5c`ZNn9UH>YFfuq#_}#II;vF@<%R&>nYhoX-z60RBM|drF_T_p-gHZ{W zcEk)D-FV712ViuoTIcNh*zI17e|nSA@%obO9vL1A??det6_Pw{()a0(+ENh^~sPS94S76dhVr z_SY+mmN$gK!+6Tc`f~QXd~jhSog+T)1jom9`w+UqoAmuWtgF%Tln}3H zhfPC7*DBcK^j_`#(|&=esH!h%AkA78R+Y3+ct0)?tTDY8@5WK>Vs8L^cUW>GQE&tZpGOamHO+*OfT>b*|IT<$b;#** zADf>L1P!#huD+Bo;{0RDqwmdO!jfpb2Ki+hrihwNg8d6lv@&~YK)q<+2vdZu@~TMz znChzBj~#=l4pLFb0(!@{L;Qia3VQXqC|{>f%q6g@`^X+G4I!Ber9Rd4lGM-YPbS6gT8y`ZV2}7+r=0iqOJXTy+ zG_sNd+YcLGM2w*v##+{~otC@jI4NgTS{!97v$>!D%Z0P-f8%7lSd$dW z{W{Dgz9QRb17sWhK-orMMDOT_6%~?@$zrJjk?HXBdyf7EFfbJ{>alhb@Fb^ygq6X@ z3i{9Hk{{73kz$bJN4WY1v4hcY%Ccr>IF|rdfD+~8r|IsB#!Z;V zC({VbI(KsFtkNP&LajR;ngppcJ&d)%m^mEQ=z1P zBe?&b;6u!7KwE{aN{O5mG?@d-I#Ijh+A0&*{0%Z^wnQ)buwJzR%(n|L4TD(y8!EA{9n1f@ z0ervhrTtMg=RVZmrW6CeU~yUf4#b$-q=C?$M)p(&!QPBe&K*#zjxWVtT?Ho`RMWgx z76@QU8OL8S16`8JG00GbiVa;q?e#8mJgiUVM`@0f6YfO||6+O$LqOnC+B?GbB%Aqk zL5MPMJU^A|aEZ*3 z8V3h{j;)51xHsjj!LT8CqzAYUxHTu!3 zAT+F0Yx(aWsIL{h!nK^6Jwfqs$MzlkotkDM8+*QjQK@;^!o5|7y!d#{c(LSL&g{l? z1|+LkACk%N9F>r?8BvyZ8Im>!ev$7yw1+ki-}y<1>SP(Oy|*e!PjeZY_;p`GM?ngY zR>XU^Erh!q-dpOg7&s-`V^+S2k`SfDWm_X}a{JVCg%WNYstwo!pvVN=CiRhos$`Wf z3YcSYo#QBOCNf2urOrwT4lnGff?(C+v?ZPo0ssKx%{8-`zVk;n;|%ez&OU8sKe4P04uB327Uo*m7#vYhu z;+>=}@|Yv1fL z7lj?WSHO8AZFI+SK0_PZsW-?FkV$Eu#YM)^+R9n^C?>EQWDQWC|d*T z&JM_*JVJnixIvm^Ag(={t(W#uskmg_K-Yqv#ueV=jb^C~Op~^% z?i&}WTSU4>&(mn;Wx1y!jRMM(y7WAT%_?HTn%0f+b-XWU4Q*IpOW!&2y~*%xLG^rTI*6R&Kcc)PjBd=2{{8&(Q|n#6>JM^#F(TdTAJ zU}Hu@H3Y#?&)jp=CT+^VHm@UjgnGy}+K*%Ke%lUQ0n_cvkhxNaO@~kz}8neestRwm+;r?R~l`wE%%DsteF^3Uq z9LSDNX-)>@DUi6x3b&Y9=ExQkp!gc6lf8UB9C763sXH)OJg%mx^02WGf&0bdi~-sh z7;62UCoZ&BgdUob3%zf5`nptG4;UXejJc8{r?9vuxV`JW&%qao z`nfVA#Sr9y_&xPYrMP{yX&MLZ_kWCPsJ&16#NgpAY5J9Ljd@~G;O^(BxOA_zVTY!y z%*voUR1%vj*ABXQ-BZ#YWxH0dLsx6{5q*2lnWd+Pdgd-9(Mj9O$|V84cZh<4(58YF z+gP1{QXOt_XnFyN;R22;$_Yp&aGJe0?eQrlHOjG&Z4yL%9!sJ=_6r;Bbr~gfMV;>*|yvX+=~(wVb{0b_x6o*!>WEM;SDEB!#v#*)A3 zNxT-hi8QU);pj}`j&wKK)$`IO0M|aDj|nd+O&H^4^o9{UbT7 z!{(w*pBHR>9%Nk$0Yq^CWO!ZJe_n?G1B#UAv=3;pq}(BPZgP!TmEIvUEI3%#Tkryn zqOwIUt%&d%nnJy6%%w8ri&xDrVKM{9!UWCBS+}J-@HF3kmiTSk#F;KL5J7{YEfk63 zMDR@CeyOY79%5}KJY=5O69|(|PP<6mB`#A+7Gy3l=GCka9StXjYn;XF9#_^y=jIs^ z&=T3_AV#bZ!ueT{6TNEO(V|K7`4owEN95|%Y8#&H zc6a1n`(fjF$N|nZNJK$Ky-3hA6t=hLZ;R9jvu^O8b5U-6K{N6ZRddImkJ9@n8fpD} zLod8%?tb?pUio-WHNrufgC4caO9YvMD7-JjYxVUY%P^QRZF3_3oN+L8yOUi^fK zZ}8T00`5%op}3v3oQ-kUE6(SsT-a1ff{T(Ia zbs)Kmvl$b+VM4TNc7AkRY5UlmZla}mq+}jx+E;x8)h#ZqE_0zAIrgmvZo%g2F8UIr z?Y96{@6Q5!OMAP#$#0K5RYdyTvAVL9QjNs##C7-r6b4n}e{B1$&^lnQ^sPfHT9d+w z4Fh0P{~xhG`5yesn616N%-WJEA&T~U>eD;NCL`B}wGC0Vt=7HrX8DRY#v-4Wb)GsO z=DW}DU21)~OmyA00g-qC+ptR(VeE#67FL?uh5A1gDUg)+=t=`mIFKE<5srZ|-l5-U zI{Xd}SC|gzyR@cCFr!T7r9=4Kp|o5c8_SjlJ!Wbm8c=341r_cXaI~Y>9^*ROunRS? ziXAYzs2#=uW0oDH1GA8+9#a#Q+YIIZ`)ff3<nunxX>J z_wlIP+xRY|>-5A7q?Edhw4bNO_R9P$U8tZfDuDnkSBW;PwAkTkBW&_{w%Bijl`A!# z{pFPYxAM6%L)!yXH_;)=W;6ul|2Jp$38tXu;~eqfnkGkV%RlY4nQn?2@A$g+qzu1x zx~eSu`Yh|q6;V1T<97d#5V~O_ED^D+3)hst_hOJ*KdK~N{qTmgDobv0S`T-TE%^oy zsX6GBQjgFr3$pazU|v;v(A7SyGZhEF?KiT^YmOHMZHj5eKGez}{+ch2ZE=6cm?`&{ z^7aq(j?-cza2&5^&GFR_08A^(by}R#39;@Sh=apI*K9>rTn7jokRPsOWB+}Pg@=>I zmRsPlndqR*>y1%1x!TM_lwvSU4YjeUPhD>@f;wy`yVOQIU2z-6MPD^4n;qA=3e5ZE z`&LYhS2I#*_hApcwdKIxmelq`#O%}%9F?AwPcI+_{SMf@G&Y*CwCXED3i_nWA#vUY zPwR2@g6OO>Fgi$y4TpWLR`!Wc4#&VjNLq#rSQ|Q#0uv3iaww)O{gDl~`?n8gq;ZXP zp1uyR<95pZVPNHU=wM-r?MFG30j+!oofc1b@8JA3s~KOO&Z#~@>b)rSm_Ob=)g6!% z!*|8#6&8iIloc}yV*9it4K;I7Hdb9c-?@^1UjiBXN8SRnB9e`!okig-FuyBf0ejv( zy>J+385B?sBTfw5eW?;lIY7%hG)#{Hwn0DsFk+$@6Nv|LGYNIzS;_P;=#lAry@8-%*giy2)PleU6!; z5wg~F?FZ+0*jkEjobw?yy6q>fz5u37`+I;Sg_*v+ZYB@mvsUAh9QUB%tMhl5KPO$m z+L!5yc{;k#8U_dZ5Aq~f5R>&Uecjnm%EbHC>K$1!17R-=)gtd5jB@=`wxK(S`f0^K z{jMEa=4Wp|T-pQOGLtI%o?Gp)HR2VkC-xc!rtd8DG9Z=X1t4=?v1}>raoBnj7MYj9 zZI`VTIEd#-F!P~?v+wOuN(%=~&Eq(=6{+@efBf_`g$<1=bh{;@|E%AT+SX!%wq5MJ^^wR zZkU#QgjXWFr(=6*Q=)X&pBcg7}r z59Zlk2cQRlhg~2Qk2D3Y&p|7&b!`DyC!FjpkAYkz-nhjCd)UF`$$(Pe*q1QlP08VC z{aOX!tvU+bt+5FOGb;R%2)YpBj*~hC`ua>3P0a+a4 z>=%Y!tUmC?qz-jqx4(cZ#Sv>jp_>|ec|jWP&f~`cC%OQ{tGs>-d=ZGW%nxm-K|Tkd zzt<#&a#4G(fqFbD+OOw;B4D&`rTW#}5`B-Gbl$C00Cu7{eZBm1@Up*Oc=G;()-$_v z9`$E(k#xZNsg5u^j;t+fVVGN(jPb&}XuF2PZAjX4pJmVji?0-kAE3VZQf&ygCfzi$ z`0PwGFFB?HKx%t6x|{!d4UlDqR{UyFy~?td)6+r023ZjJH}D|Wz6zz23NdkN`jU6wUu5wg^d!z;d!)k&|;H_Vg%?R$e7v2?C*qcF$9e%8ykz5 zBHISMyf}rAVGUC)o83Dv5@*+5osTeSt!tulOKTAPzZq zdrb%)d`&Enl9|cmX{hpIdJ=9jyi5dmnWXb$N31;o*4eIPEr!~ff`jljb)lHk7wh#R zubJL{g+O!8#_a-xhny1%Ik!QWP{(Go{g6?q0F%geHr)3Gl=S2&2aTO{R!@93BPVcB zZRkLOOw@}20+%Y})!nRK$W;L6D3J_&pK?h$u)0f1f2Kq9?OL5QwhBWbtdt)w3RfQ|M;zrD&U68j)Nji z{3A@dfKj!)Z+2p3mExWxP;<_5w<5*|(xmb_!58@I*W5i(Hogpl%DkyP|JV`Uz9(Ho zm2JZ~J5qF`_-ZJ(h`WR|$pcJa;Z1f?{E;;(Kz@iz<36FJ9_tW^l0RF1Q14(8$w@fq z4P)McL?paAQ`=vrVBbRfL`O?XT|Y$8*N7{3-xygEpWH?B?jfU$i#P$->Vb%aJ?W#KQRpP{qKmm^S!^Kjd>fW8W_} ztWDKvP*ab#|HYXD3`+TmWK-YQP+eGtYqpwh`C5bNc%hRfk=+K@O1y~#;VdrA^te(* zZU4R;I&AktyBJOfj28fn(UyDfN?$eX!8Y+^VqW4w!JbFEL4B{dEB_hb!=wYAzb~#l z0AA2nfX%PnI0&^iTnC2Z1ghOg(V>nPH*3YBARU$Q?NWv>!g&+Wm;>qpKzS=j*WX3Q zy=(WJ#6P^(wjtG6ZSZ)_K-itm6DuaXM)1t6cI2aPzt-$-I45;L-XoTF?RtSeOb{7#{uxcFu7-rCf;cFiay zTlhazg(r*CTLuFO+@-jNyF{gl9l-**E_frKk=;eS`ZtRKk9FwLVfjFBl>9i)C((8rPvyuxJ z?+IO7Bm4RO#CXM>NA&@|4|9DK&!wJiQCgKVN#=0xUbLsK>oxv7-XhE9?P*o91z&b~ zZVw{=s?2z?Rafe7A&4oa5F#DHWE~0+>Je_4?sRc-~2uJUBgbBk& z9?;O(oDFJVTMrxIu@Ih3#+418NXltxVf5`&4L{_#;~RSZl$5p~_0<42U`moO(@)&? zQw9`bFmt+C$0z8Lt|vnjM}E%tNEE>A(LBTf{8XE2*z?551G^Rh+9&j*kazOMH@sjW_wQcCy|50i3enf z2HT2KLw#AZtA|!{jMwddG1qZ1WMRss3p-!z_w~m2az1J<(Tm-Zb@j7ozr$cO95*lztSa3zA2p#%@4~WS zB*5RMi#PzC+W~w?xn)mxJ*dXqC7A}oe#~FBl1t#V)%+6*c?(4bovTX<$F?|1W+8*e zn6>9+TS~jlLGxEpO4b)3&*$p(JUtb57!Yn7;0sG34W9gaHH98bZ#K!Y}&Zqfa6aP8+6l zY;tw9`{e-2o$s{;=rP_f9(YIm{2jTG^UM~oBlN6jU1tyf{;0(2FQNfgS_dnqjvU~5=D7Vc16|N)|mEe1?z{p zlT=gfGBXk%l;t{wsfgBg#$LR7^* z$tV!BCxTriuFu6f~JCesT|L# zm&OO;Sztz2Vr{jl{f(MAEL3O+?dJy8gPZVh!-PmMV8(ftA;EJSO}A&O$w(E#>#}kI zP;?A99N`^9J`~Og5jw=&Gr{Rde4of`8AL{ec*Z3R-KpdXJpBncoasre%@=q6;;i#hSt)L15xHyT9~qut zn2aj<5v#4+FZP~)Q_^#0^Qz<^g1rNWG9P>{TDgFioe z?ypJWuUuo8q9R%I7xxy!BGP`fG%i@O06(n&
    s6aV_6i;|v^u;hdHax;6Ukt?`p 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 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/README.md b/node_modules/gulp/README.md index 9821c7d9ae..eba26acddb 100644 --- a/node_modules/gulp/README.md +++ b/node_modules/gulp/README.md @@ -1,100 +1,105 @@ -

    - -# gulp [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Support us][gittip-image]][gittip-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] -> The streaming build system - -## Like what we do? - -[Support us via Gratipay](https://gratipay.com/WeAreFractal/) - -## Documentation - -For a Getting started guide, API docs, recipes, making a plugin, etc. see the [documentation page](/docs/README.md)! - -## Sample `gulpfile.js` - -This file is just a quick sample to give you a taste of what gulp does. - -```js -var gulp = require('gulp'); -var coffee = require('gulp-coffee'); -var concat = require('gulp-concat'); -var uglify = require('gulp-uglify'); -var imagemin = require('gulp-imagemin'); -var sourcemaps = require('gulp-sourcemaps'); -var del = require('del'); - -var paths = { - scripts: ['client/js/**/*.coffee', '!client/external/**/*.coffee'], - images: 'client/img/**/*' -}; - -// Not all tasks need to use streams -// A gulpfile is just another node program and you can use all packages available on npm -gulp.task('clean', function(cb) { - // You can use multiple globbing patterns as you would with `gulp.src` - del(['build'], cb); -}); - -gulp.task('scripts', ['clean'], function() { - // Minify and copy all JavaScript (except vendor scripts) - // with sourcemaps all the way down - return gulp.src(paths.scripts) - .pipe(sourcemaps.init()) - .pipe(coffee()) - .pipe(uglify()) - .pipe(concat('all.min.js')) - .pipe(sourcemaps.write()) - .pipe(gulp.dest('build/js')); -}); - -// Copy all static images -gulp.task('images', ['clean'], function() { - return gulp.src(paths.images) - // Pass in options to the task - .pipe(imagemin({optimizationLevel: 5})) - .pipe(gulp.dest('build/img')); -}); - -// Rerun the task when a file changes -gulp.task('watch', function() { - gulp.watch(paths.scripts, ['scripts']); - gulp.watch(paths.images, ['images']); -}); - -// The default task (called when you run `gulp` from cli) -gulp.task('default', ['watch', 'scripts', 'images']); -``` - -## Incremental Builds - -We recommend these plugins: - -- [gulp-changed](https://github.com/sindresorhus/gulp-changed) - only pass through changed files -- [gulp-cached](https://github.com/wearefractal/gulp-cached) - in-memory file cache, not for operation on sets of files -- [gulp-remember](https://github.com/ahaurw01/gulp-remember) - pairs nicely with gulp-cached -- [gulp-newer](https://github.com/tschaub/gulp-newer) - pass through newer source files only, supports many:1 source:dest - -## Want to contribute? - -Anyone can help make this project better - check out the [Contributing guide](/CONTRIBUTING.md)! - - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/wearefractal/gulp/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - -[gittip-url]: https://www.gittip.com/WeAreFractal/ -[gittip-image]: http://img.shields.io/gittip/WeAreFractal.svg - -[downloads-image]: http://img.shields.io/npm/dm/gulp.svg -[npm-url]: https://npmjs.org/package/gulp -[npm-image]: http://img.shields.io/npm/v/gulp.svg - -[travis-url]: https://travis-ci.org/gulpjs/gulp -[travis-image]: http://img.shields.io/travis/gulpjs/gulp.svg - -[coveralls-url]: https://coveralls.io/r/gulpjs/gulp -[coveralls-image]: http://img.shields.io/coveralls/gulpjs/gulp/master.svg +

    + + + +

    + +# gulp +**The streaming build system** + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Support us][gittip-image]][gittip-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url] + +## Like what we do? + +[Support us via Gratipay](https://gratipay.com/WeAreFractal/) + +## Documentation + +For a Getting started guide, API docs, recipes, making a plugin, etc. see the [documentation page](/docs/README.md)! + +## Sample `gulpfile.js` + +This file is just a quick sample to give you a taste of what gulp does. + +```js +var gulp = require('gulp'); +var coffee = require('gulp-coffee'); +var concat = require('gulp-concat'); +var uglify = require('gulp-uglify'); +var imagemin = require('gulp-imagemin'); +var sourcemaps = require('gulp-sourcemaps'); +var del = require('del'); + +var paths = { + scripts: ['client/js/**/*.coffee', '!client/external/**/*.coffee'], + images: 'client/img/**/*' +}; + +// Not all tasks need to use streams +// A gulpfile is just another node program and you can use all packages available on npm +gulp.task('clean', function(cb) { + // You can use multiple globbing patterns as you would with `gulp.src` + del(['build'], cb); +}); + +gulp.task('scripts', ['clean'], function() { + // Minify and copy all JavaScript (except vendor scripts) + // with sourcemaps all the way down + return gulp.src(paths.scripts) + .pipe(sourcemaps.init()) + .pipe(coffee()) + .pipe(uglify()) + .pipe(concat('all.min.js')) + .pipe(sourcemaps.write()) + .pipe(gulp.dest('build/js')); +}); + +// Copy all static images +gulp.task('images', ['clean'], function() { + return gulp.src(paths.images) + // Pass in options to the task + .pipe(imagemin({optimizationLevel: 5})) + .pipe(gulp.dest('build/img')); +}); + +// Rerun the task when a file changes +gulp.task('watch', function() { + gulp.watch(paths.scripts, ['scripts']); + gulp.watch(paths.images, ['images']); +}); + +// The default task (called when you run `gulp` from cli) +gulp.task('default', ['watch', 'scripts', 'images']); +``` + +## Incremental Builds + +We recommend these plugins: + +- [gulp-changed](https://github.com/sindresorhus/gulp-changed) - only pass through changed files +- [gulp-cached](https://github.com/wearefractal/gulp-cached) - in-memory file cache, not for operation on sets of files +- [gulp-remember](https://github.com/ahaurw01/gulp-remember) - pairs nicely with gulp-cached +- [gulp-newer](https://github.com/tschaub/gulp-newer) - pass through newer source files only, supports many:1 source:dest + +## Want to contribute? + +Anyone can help make this project better - check out the [Contributing guide](/CONTRIBUTING.md)! + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/wearefractal/gulp/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + +[gittip-url]: https://www.gittip.com/WeAreFractal/ +[gittip-image]: http://img.shields.io/gittip/WeAreFractal.svg + +[downloads-image]: http://img.shields.io/npm/dm/gulp.svg +[npm-url]: https://npmjs.org/package/gulp +[npm-image]: http://img.shields.io/npm/v/gulp.svg + +[travis-url]: https://travis-ci.org/gulpjs/gulp +[travis-image]: http://img.shields.io/travis/gulpjs/gulp.svg + +[coveralls-url]: https://coveralls.io/r/gulpjs/gulp +[coveralls-image]: http://img.shields.io/coveralls/gulpjs/gulp/master.svg + +[gitter-url]: https://gitter.im/gulpjs/gulp +[gitter-image]: https://badges.gitter.im/gulpjs/gulp.png diff --git a/node_modules/gulp/bin/gulp.js b/node_modules/gulp/bin/gulp.js index 17aaf4bbd1..26727704f2 100755 --- a/node_modules/gulp/bin/gulp.js +++ b/node_modules/gulp/bin/gulp.js @@ -1,212 +1,212 @@ -#!/usr/bin/env node - -'use strict'; -var gutil = require('gulp-util'); -var prettyTime = require('pretty-hrtime'); -var chalk = require('chalk'); -var semver = require('semver'); -var archy = require('archy'); -var Liftoff = require('liftoff'); -var tildify = require('tildify'); -var interpret = require('interpret'); -var v8flags = require('v8flags'); -var completion = require('../lib/completion'); -var argv = require('minimist')(process.argv.slice(2)); -var taskTree = require('../lib/taskTree'); - -// set env var for ORIGINAL cwd -// before anything touches it -process.env.INIT_CWD = process.cwd(); - -var cli = new Liftoff({ - name: 'gulp', - completions: completion, - extensions: interpret.jsVariants, - nodeFlags: v8flags.fetch() -}); - -// exit with 0 or 1 -var failed = false; -process.once('exit', function(code) { - if (code === 0 && failed) { - process.exit(1); - } -}); - -// parse those args m8 -var cliPackage = require('../package'); -var versionFlag = argv.v || argv.version; -var tasksFlag = argv.T || argv.tasks; -var tasks = argv._; -var toRun = tasks.length ? tasks : ['default']; - -// this is a hold-over until we have a better logging system -// with log levels -var simpleTasksFlag = argv['tasks-simple']; -var shouldLog = !argv.silent && !simpleTasksFlag; - -if (!shouldLog) { - gutil.log = function(){}; -} - -cli.on('require', function (name) { - gutil.log('Requiring external module', chalk.magenta(name)); -}); - -cli.on('requireFail', function (name) { - gutil.log(chalk.red('Failed to load external module'), chalk.magenta(name)); -}); - -cli.on('respawn', function (flags, child) { - var nodeFlags = chalk.magenta(flags.join(', ')); - var pid = chalk.magenta(child.pid); - gutil.log('Node flags detected:', nodeFlags); - gutil.log('Respawned to PID:', pid); -}); - -cli.launch({ - cwd: argv.cwd, - configPath: argv.gulpfile, - require: argv.require, - completion: argv.completion -}, handleArguments); - -// the actual logic -function handleArguments(env) { - if (versionFlag && tasks.length === 0) { - gutil.log('CLI version', cliPackage.version); - if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') { - gutil.log('Local version', env.modulePackage.version); - } - process.exit(0); - } - - if (!env.modulePath) { - gutil.log( - chalk.red('Local gulp not found in'), - chalk.magenta(tildify(env.cwd)) - ); - gutil.log(chalk.red('Try running: npm install gulp')); - process.exit(1); - } - - if (!env.configPath) { - gutil.log(chalk.red('No gulpfile found')); - process.exit(1); - } - - // check for semver difference between cli and local installation - if (semver.gt(cliPackage.version, env.modulePackage.version)) { - gutil.log(chalk.red('Warning: gulp version mismatch:')); - gutil.log(chalk.red('Global gulp is', cliPackage.version)); - gutil.log(chalk.red('Local gulp is', env.modulePackage.version)); - } - - // chdir before requiring gulpfile to make sure - // we let them chdir as needed - if (process.cwd() !== env.cwd) { - process.chdir(env.cwd); - gutil.log( - 'Working directory changed to', - chalk.magenta(tildify(env.cwd)) - ); - } - - // this is what actually loads up the gulpfile - require(env.configPath); - gutil.log('Using gulpfile', chalk.magenta(tildify(env.configPath))); - - var gulpInst = require(env.modulePath); - logEvents(gulpInst); - - process.nextTick(function () { - if (simpleTasksFlag) { - return logTasksSimple(env, gulpInst); - } - if (tasksFlag) { - return logTasks(env, gulpInst); - } - gulpInst.start.apply(gulpInst, toRun); - }); -} - -function logTasks(env, localGulp) { - var tree = taskTree(localGulp.tasks); - tree.label = 'Tasks for ' + chalk.magenta(tildify(env.configPath)); - archy(tree) - .split('\n') - .forEach(function (v) { - if (v.trim().length === 0) { - return; - } - gutil.log(v); - }); -} - -function logTasksSimple(env, localGulp) { - console.log(Object.keys(localGulp.tasks) - .join('\n') - .trim()); -} - -// format orchestrator errors -function formatError(e) { - if (!e.err) { - return e.message; - } - - // PluginError - if (typeof e.err.showStack === 'boolean') { - return e.err.toString(); - } - - // normal error - if (e.err.stack) { - return e.err.stack; - } - - // unknown (string, number, etc.) - return new Error(String(e.err)).stack; -} - -// wire up logging events -function logEvents(gulpInst) { - - // total hack due to poor error management in orchestrator - gulpInst.on('err', function () { - failed = true; - }); - - gulpInst.on('task_start', function (e) { - // TODO: batch these - // so when 5 tasks start at once it only logs one time with all 5 - gutil.log('Starting', '\'' + chalk.cyan(e.task) + '\'...'); - }); - - gulpInst.on('task_stop', function (e) { - var time = prettyTime(e.hrDuration); - gutil.log( - 'Finished', '\'' + chalk.cyan(e.task) + '\'', - 'after', chalk.magenta(time) - ); - }); - - gulpInst.on('task_err', function (e) { - var msg = formatError(e); - var time = prettyTime(e.hrDuration); - gutil.log( - '\'' + chalk.cyan(e.task) + '\'', - chalk.red('errored after'), - chalk.magenta(time) - ); - gutil.log(msg); - }); - - gulpInst.on('task_not_found', function (err) { - gutil.log( - chalk.red('Task \'' + err.task + '\' is not in your gulpfile') - ); - gutil.log('Please check the documentation for proper gulpfile formatting'); - process.exit(1); - }); -} +#!/usr/bin/env node + +'use strict'; +var gutil = require('gulp-util'); +var prettyTime = require('pretty-hrtime'); +var chalk = require('chalk'); +var semver = require('semver'); +var archy = require('archy'); +var Liftoff = require('liftoff'); +var tildify = require('tildify'); +var interpret = require('interpret'); +var v8flags = require('v8flags'); +var completion = require('../lib/completion'); +var argv = require('minimist')(process.argv.slice(2)); +var taskTree = require('../lib/taskTree'); + +// set env var for ORIGINAL cwd +// before anything touches it +process.env.INIT_CWD = process.cwd(); + +var cli = new Liftoff({ + name: 'gulp', + completions: completion, + extensions: interpret.jsVariants, + v8flags: v8flags +}); + +// exit with 0 or 1 +var failed = false; +process.once('exit', function(code) { + if (code === 0 && failed) { + process.exit(1); + } +}); + +// parse those args m8 +var cliPackage = require('../package'); +var versionFlag = argv.v || argv.version; +var tasksFlag = argv.T || argv.tasks; +var tasks = argv._; +var toRun = tasks.length ? tasks : ['default']; + +// this is a hold-over until we have a better logging system +// with log levels +var simpleTasksFlag = argv['tasks-simple']; +var shouldLog = !argv.silent && !simpleTasksFlag; + +if (!shouldLog) { + gutil.log = function(){}; +} + +cli.on('require', function (name) { + gutil.log('Requiring external module', chalk.magenta(name)); +}); + +cli.on('requireFail', function (name) { + gutil.log(chalk.red('Failed to load external module'), chalk.magenta(name)); +}); + +cli.on('respawn', function (flags, child) { + var nodeFlags = chalk.magenta(flags.join(', ')); + var pid = chalk.magenta(child.pid); + gutil.log('Node flags detected:', nodeFlags); + gutil.log('Respawned to PID:', pid); +}); + +cli.launch({ + cwd: argv.cwd, + configPath: argv.gulpfile, + require: argv.require, + completion: argv.completion +}, handleArguments); + +// the actual logic +function handleArguments(env) { + if (versionFlag && tasks.length === 0) { + gutil.log('CLI version', cliPackage.version); + if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') { + gutil.log('Local version', env.modulePackage.version); + } + process.exit(0); + } + + if (!env.modulePath) { + gutil.log( + chalk.red('Local gulp not found in'), + chalk.magenta(tildify(env.cwd)) + ); + gutil.log(chalk.red('Try running: npm install gulp')); + process.exit(1); + } + + if (!env.configPath) { + gutil.log(chalk.red('No gulpfile found')); + process.exit(1); + } + + // check for semver difference between cli and local installation + if (semver.gt(cliPackage.version, env.modulePackage.version)) { + gutil.log(chalk.red('Warning: gulp version mismatch:')); + gutil.log(chalk.red('Global gulp is', cliPackage.version)); + gutil.log(chalk.red('Local gulp is', env.modulePackage.version)); + } + + // chdir before requiring gulpfile to make sure + // we let them chdir as needed + if (process.cwd() !== env.cwd) { + process.chdir(env.cwd); + gutil.log( + 'Working directory changed to', + chalk.magenta(tildify(env.cwd)) + ); + } + + // this is what actually loads up the gulpfile + require(env.configPath); + gutil.log('Using gulpfile', chalk.magenta(tildify(env.configPath))); + + var gulpInst = require(env.modulePath); + logEvents(gulpInst); + + process.nextTick(function () { + if (simpleTasksFlag) { + return logTasksSimple(env, gulpInst); + } + if (tasksFlag) { + return logTasks(env, gulpInst); + } + gulpInst.start.apply(gulpInst, toRun); + }); +} + +function logTasks(env, localGulp) { + var tree = taskTree(localGulp.tasks); + tree.label = 'Tasks for ' + chalk.magenta(tildify(env.configPath)); + archy(tree) + .split('\n') + .forEach(function (v) { + if (v.trim().length === 0) { + return; + } + gutil.log(v); + }); +} + +function logTasksSimple(env, localGulp) { + console.log(Object.keys(localGulp.tasks) + .join('\n') + .trim()); +} + +// format orchestrator errors +function formatError(e) { + if (!e.err) { + return e.message; + } + + // PluginError + if (typeof e.err.showStack === 'boolean') { + return e.err.toString(); + } + + // normal error + if (e.err.stack) { + return e.err.stack; + } + + // unknown (string, number, etc.) + return new Error(String(e.err)).stack; +} + +// wire up logging events +function logEvents(gulpInst) { + + // total hack due to poor error management in orchestrator + gulpInst.on('err', function () { + failed = true; + }); + + gulpInst.on('task_start', function (e) { + // TODO: batch these + // so when 5 tasks start at once it only logs one time with all 5 + gutil.log('Starting', '\'' + chalk.cyan(e.task) + '\'...'); + }); + + gulpInst.on('task_stop', function (e) { + var time = prettyTime(e.hrDuration); + gutil.log( + 'Finished', '\'' + chalk.cyan(e.task) + '\'', + 'after', chalk.magenta(time) + ); + }); + + gulpInst.on('task_err', function (e) { + var msg = formatError(e); + var time = prettyTime(e.hrDuration); + gutil.log( + '\'' + chalk.cyan(e.task) + '\'', + chalk.red('errored after'), + chalk.magenta(time) + ); + gutil.log(msg); + }); + + gulpInst.on('task_not_found', function (err) { + gutil.log( + chalk.red('Task \'' + err.task + '\' is not in your gulpfile') + ); + gutil.log('Please check the documentation for proper gulpfile formatting'); + process.exit(1); + }); +} diff --git a/node_modules/gulp/completion/README.md b/node_modules/gulp/completion/README.md index 20649c14b5..c0e8c9133c 100644 --- a/node_modules/gulp/completion/README.md +++ b/node_modules/gulp/completion/README.md @@ -1,20 +1,20 @@ -# Completion for gulp -> Thanks to grunt team and Tyler Kellen - -To enable tasks auto-completion in shell you should add `eval "$(gulp --completion=shell)"` in your `.shellrc` file. - -## Bash - -Add `eval "$(gulp --completion=bash)"` to `~/.bashrc`. - -## Zsh - -Add `eval "$(gulp --completion=zsh)"` to `~/.zshrc`. - -## Powershell - -Add `Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine)` to `$PROFILE`. - -## Fish - -Add `gulp --completion=fish | source` to `~/.config/fish/config.fish`. +# Completion for gulp +> Thanks to grunt team and Tyler Kellen + +To enable tasks auto-completion in shell you should add `eval "$(gulp --completion=shell)"` in your `.shellrc` file. + +## Bash + +Add `eval "$(gulp --completion=bash)"` to `~/.bashrc`. + +## Zsh + +Add `eval "$(gulp --completion=zsh)"` to `~/.zshrc`. + +## Powershell + +Add `Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine)` to `$PROFILE`. + +## Fish + +Add `gulp --completion=fish | source` to `~/.config/fish/config.fish`. diff --git a/node_modules/gulp/completion/bash b/node_modules/gulp/completion/bash index c72a0592f2..704c27c132 100644 --- a/node_modules/gulp/completion/bash +++ b/node_modules/gulp/completion/bash @@ -1,27 +1,27 @@ -#!/bin/bash - -# Borrowed from grunt-cli -# http://gruntjs.com/ -# -# Copyright (c) 2012 Tyler Kellen, contributors -# Licensed under the MIT license. -# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT - -# Usage: -# -# To enable bash completion for gulp, add the following line (minus the -# leading #, which is the bash comment character) to your ~/.bashrc file: -# -# eval "$(gulp --completion=bash)" - -# Enable bash autocompletion. -function _gulp_completions() { - # The currently-being-completed word. - local cur="${COMP_WORDS[COMP_CWORD]}" - #Grab tasks - local compls=$(gulp --tasks-simple) - # Tell complete what stuff to show. - COMPREPLY=($(compgen -W "$compls" -- "$cur")) -} - -complete -o default -F _gulp_completions gulp +#!/bin/bash + +# Borrowed from grunt-cli +# http://gruntjs.com/ +# +# Copyright (c) 2012 Tyler Kellen, contributors +# Licensed under the MIT license. +# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT + +# Usage: +# +# To enable bash completion for gulp, add the following line (minus the +# leading #, which is the bash comment character) to your ~/.bashrc file: +# +# eval "$(gulp --completion=bash)" + +# Enable bash autocompletion. +function _gulp_completions() { + # The currently-being-completed word. + local cur="${COMP_WORDS[COMP_CWORD]}" + #Grab tasks + local compls=$(gulp --tasks-simple) + # Tell complete what stuff to show. + COMPREPLY=($(compgen -W "$compls" -- "$cur")) +} + +complete -o default -F _gulp_completions gulp diff --git a/node_modules/gulp/completion/fish b/node_modules/gulp/completion/fish index e6296835af..f27f2248b4 100644 --- a/node_modules/gulp/completion/fish +++ b/node_modules/gulp/completion/fish @@ -1,10 +1,10 @@ -#!/usr/bin/env fish - -# Usage: -# -# To enable fish completion for gulp, add the following line to -# your ~/.config/fish/config.fish file: -# -# gulp --completion=fish | source - -complete -c gulp -a "(gulp --tasks-simple)" -f +#!/usr/bin/env fish + +# Usage: +# +# To enable fish completion for gulp, add the following line to +# your ~/.config/fish/config.fish file: +# +# gulp --completion=fish | source + +complete -c gulp -a "(gulp --tasks-simple)" -f diff --git a/node_modules/gulp/completion/powershell b/node_modules/gulp/completion/powershell index 9dc2b88315..08ec4382e0 100644 --- a/node_modules/gulp/completion/powershell +++ b/node_modules/gulp/completion/powershell @@ -1,61 +1,61 @@ -# Copyright (c) 2014 Jason Jarrett -# -# Tab completion for the `gulp` -# -# Usage: -# -# To enable powershell completion for gulp you need to be running -# at least PowerShell v3 or greater and add the below to your $PROFILE -# -# Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine) -# -# - -$gulp_completion_Process = { - param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) - - - # Load up an assembly to read the gulpfile's sha1 - if(-not $global:GulpSHA1Managed) { - [Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null - $global:GulpSHA1Managed = new-Object System.Security.Cryptography.SHA1Managed - } - - # setup a global (in-memory) cache - if(-not $global:GulpfileShaCache) { - $global:GulpfileShaCache = @{}; - } - - $cache = $global:GulpfileShaCache; - - # Get the gulpfile's sha1 - $sha1gulpFile = (resolve-path gulpfile.js -ErrorAction Ignore | %{ - $file = [System.IO.File]::Open($_.Path, "open", "read") - [string]::join('', ($global:GulpSHA1Managed.ComputeHash($file) | %{ $_.ToString("x2") })) - $file.Dispose() - }) - - # lookup the sha1 for previously cached task lists. - if($cache.ContainsKey($sha1gulpFile)){ - $tasks = $cache[$sha1gulpFile]; - } else { - $tasks = (gulp --tasks-simple).split("`n"); - $cache[$sha1gulpFile] = $tasks; - } - - - $tasks | - where { $_.startswith($commandName) } - Sort-Object | - foreach { New-Object System.Management.Automation.CompletionResult $_, $_, 'ParameterValue', ('{0}' -f $_) } -} - -if (-not $global:options) { - $global:options = @{ - CustomArgumentCompleters = @{}; - NativeArgumentCompleters = @{} - } -} - -$global:options['NativeArgumentCompleters']['gulp'] = $gulp_completion_Process -$function:tabexpansion2 = $function:tabexpansion2 -replace 'End\r\n{','End { if ($null -ne $options) { $options += $global:options} else {$options = $global:options}' +# Copyright (c) 2014 Jason Jarrett +# +# Tab completion for the `gulp` +# +# Usage: +# +# To enable powershell completion for gulp you need to be running +# at least PowerShell v3 or greater and add the below to your $PROFILE +# +# Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine) +# +# + +$gulp_completion_Process = { + param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) + + + # Load up an assembly to read the gulpfile's sha1 + if(-not $global:GulpSHA1Managed) { + [Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null + $global:GulpSHA1Managed = new-Object System.Security.Cryptography.SHA1Managed + } + + # setup a global (in-memory) cache + if(-not $global:GulpfileShaCache) { + $global:GulpfileShaCache = @{}; + } + + $cache = $global:GulpfileShaCache; + + # Get the gulpfile's sha1 + $sha1gulpFile = (resolve-path gulpfile.js -ErrorAction Ignore | %{ + $file = [System.IO.File]::Open($_.Path, "open", "read") + [string]::join('', ($global:GulpSHA1Managed.ComputeHash($file) | %{ $_.ToString("x2") })) + $file.Dispose() + }) + + # lookup the sha1 for previously cached task lists. + if($cache.ContainsKey($sha1gulpFile)){ + $tasks = $cache[$sha1gulpFile]; + } else { + $tasks = (gulp --tasks-simple).split("`n"); + $cache[$sha1gulpFile] = $tasks; + } + + + $tasks | + where { $_.startswith($commandName) } + Sort-Object | + foreach { New-Object System.Management.Automation.CompletionResult $_, $_, 'ParameterValue', ('{0}' -f $_) } +} + +if (-not $global:options) { + $global:options = @{ + CustomArgumentCompleters = @{}; + NativeArgumentCompleters = @{} + } +} + +$global:options['NativeArgumentCompleters']['gulp'] = $gulp_completion_Process +$function:tabexpansion2 = $function:tabexpansion2 -replace 'End\r\n{','End { if ($null -ne $options) { $options += $global:options} else {$options = $global:options}' diff --git a/node_modules/gulp/completion/zsh b/node_modules/gulp/completion/zsh index 6886e5237a..8169b22d7c 100644 --- a/node_modules/gulp/completion/zsh +++ b/node_modules/gulp/completion/zsh @@ -1,25 +1,25 @@ -#!/bin/zsh - -# Borrowed from grunt-cli -# http://gruntjs.com/ -# -# Copyright (c) 2012 Tyler Kellen, contributors -# Licensed under the MIT license. -# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT - -# Usage: -# -# To enable zsh completion for gulp, add the following line (minus the -# leading #, which is the zsh comment character) to your ~/.zshrc file: -# -# eval "$(gulp --completion=zsh)" - -# Enable zsh autocompletion. -function _gulp_completion() { - # Grab tasks - compls=$(gulp --tasks-simple) - completions=(${=compls}) - compadd -- $completions -} - -compdef _gulp_completion gulp +#!/bin/zsh + +# Borrowed from grunt-cli +# http://gruntjs.com/ +# +# Copyright (c) 2012 Tyler Kellen, contributors +# Licensed under the MIT license. +# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT + +# Usage: +# +# To enable zsh completion for gulp, add the following line (minus the +# leading #, which is the zsh comment character) to your ~/.zshrc file: +# +# eval "$(gulp --completion=zsh)" + +# Enable zsh autocompletion. +function _gulp_completion() { + # Grab tasks + compls=$(gulp --tasks-simple) + completions=(${=compls}) + compadd -- $completions +} + +compdef _gulp_completion gulp diff --git a/node_modules/gulp/index.js b/node_modules/gulp/index.js index 76466d0f87..07878fce0c 100644 --- a/node_modules/gulp/index.js +++ b/node_modules/gulp/index.js @@ -1,63 +1,63 @@ -'use strict'; - -var util = require('util'); -var Orchestrator = require('orchestrator'); -var gutil = require('gulp-util'); -var deprecated = require('deprecated'); -var vfs = require('vinyl-fs'); - -function Gulp() { - Orchestrator.call(this); -} -util.inherits(Gulp, Orchestrator); - -Gulp.prototype.task = Gulp.prototype.add; -Gulp.prototype.run = function () { - // run() is deprecated as of 3.5 and will be removed in 4.0 - // use task dependencies instead - - // impose our opinion of "default" tasks onto orchestrator - var tasks = arguments.length ? arguments : ['default']; - - this.start.apply(this, tasks); -}; - -Gulp.prototype.src = vfs.src; -Gulp.prototype.dest = vfs.dest; -Gulp.prototype.watch = function (glob, opt, fn) { - if (typeof opt === 'function' || Array.isArray(opt)) { - fn = opt; - opt = null; - } - - // array of tasks given - if (Array.isArray(fn)) { - return vfs.watch(glob, opt, function () { - this.start.apply(this, fn); - }.bind(this)); - } - - return vfs.watch(glob, opt, fn); -}; - -// let people use this class from our instance -Gulp.prototype.Gulp = Gulp; - -// deprecations -deprecated.field('gulp.env has been deprecated. ' + - 'Use your own CLI parser instead. ' + - 'We recommend using yargs or minimist.', - console.warn, - Gulp.prototype, - 'env', - gutil.env -); - -Gulp.prototype.run = deprecated.method('gulp.run() has been deprecated. ' + - 'Use task dependencies or gulp.watch task triggering instead.', - console.warn, - Gulp.prototype.run -); - -var inst = new Gulp(); -module.exports = inst; +'use strict'; + +var util = require('util'); +var Orchestrator = require('orchestrator'); +var gutil = require('gulp-util'); +var deprecated = require('deprecated'); +var vfs = require('vinyl-fs'); + +function Gulp() { + Orchestrator.call(this); +} +util.inherits(Gulp, Orchestrator); + +Gulp.prototype.task = Gulp.prototype.add; +Gulp.prototype.run = function () { + // run() is deprecated as of 3.5 and will be removed in 4.0 + // use task dependencies instead + + // impose our opinion of "default" tasks onto orchestrator + var tasks = arguments.length ? arguments : ['default']; + + this.start.apply(this, tasks); +}; + +Gulp.prototype.src = vfs.src; +Gulp.prototype.dest = vfs.dest; +Gulp.prototype.watch = function (glob, opt, fn) { + if (typeof opt === 'function' || Array.isArray(opt)) { + fn = opt; + opt = null; + } + + // array of tasks given + if (Array.isArray(fn)) { + return vfs.watch(glob, opt, function () { + this.start.apply(this, fn); + }.bind(this)); + } + + return vfs.watch(glob, opt, fn); +}; + +// let people use this class from our instance +Gulp.prototype.Gulp = Gulp; + +// deprecations +deprecated.field('gulp.env has been deprecated. ' + + 'Use your own CLI parser instead. ' + + 'We recommend using yargs or minimist.', + console.warn, + Gulp.prototype, + 'env', + gutil.env +); + +Gulp.prototype.run = deprecated.method('gulp.run() has been deprecated. ' + + 'Use task dependencies or gulp.watch task triggering instead.', + console.warn, + Gulp.prototype.run +); + +var inst = new Gulp(); +module.exports = inst; diff --git a/node_modules/gulp/lib/completion.js b/node_modules/gulp/lib/completion.js index 5a8536f4f2..5f2ad364a0 100644 --- a/node_modules/gulp/lib/completion.js +++ b/node_modules/gulp/lib/completion.js @@ -1,22 +1,22 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); - -module.exports = function (name) { - if (typeof name !== 'string') { - throw new Error('Missing completion type'); - } - var file = path.join(__dirname, '../completion', name); - try { - console.log(fs.readFileSync(file, 'utf8')); - process.exit(0); - } catch (err) { - console.log( - 'echo "gulp autocompletion rules for', - '\'' + name + '\'', - 'not found"' - ); - process.exit(5); - } -}; +'use strict'; + +var fs = require('fs'); +var path = require('path'); + +module.exports = function (name) { + if (typeof name !== 'string') { + throw new Error('Missing completion type'); + } + var file = path.join(__dirname, '../completion', name); + try { + console.log(fs.readFileSync(file, 'utf8')); + process.exit(0); + } catch (err) { + console.log( + 'echo "gulp autocompletion rules for', + '\'' + name + '\'', + 'not found"' + ); + process.exit(5); + } +}; diff --git a/node_modules/gulp/lib/taskTree.js b/node_modules/gulp/lib/taskTree.js index 3981564d30..8a638f7a35 100644 --- a/node_modules/gulp/lib/taskTree.js +++ b/node_modules/gulp/lib/taskTree.js @@ -1,14 +1,14 @@ -'use strict'; - -module.exports = function (tasks) { - return Object.keys(tasks) - .reduce(function (prev, task) { - prev.nodes.push({ - label: task, - nodes: tasks[task].dep - }); - return prev; - }, { - nodes: [] - }); -}; +'use strict'; + +module.exports = function (tasks) { + return Object.keys(tasks) + .reduce(function (prev, task) { + prev.nodes.push({ + label: task, + nodes: tasks[task].dep + }); + return prev; + }, { + nodes: [] + }); +}; diff --git a/node_modules/gulp/node_modules/.bin/semver b/node_modules/gulp/node_modules/.bin/semver deleted file mode 100644 index 317eb293d8..0000000000 --- a/node_modules/gulp/node_modules/.bin/semver +++ /dev/null @@ -1 +0,0 @@ -../semver/bin/semver \ No newline at end of file diff --git a/node_modules/gulp/node_modules/.bin/semver b/node_modules/gulp/node_modules/.bin/semver new file mode 120000 index 0000000000..317eb293d8 --- /dev/null +++ b/node_modules/gulp/node_modules/.bin/semver @@ -0,0 +1 @@ +../semver/bin/semver \ No newline at end of file diff --git a/node_modules/gulp/node_modules/archy/.travis.yml b/node_modules/gulp/node_modules/archy/.travis.yml index c367f2a3b0..895dbd3623 100644 --- a/node_modules/gulp/node_modules/archy/.travis.yml +++ b/node_modules/gulp/node_modules/archy/.travis.yml @@ -1,4 +1,4 @@ -language: node_js -node_js: - - 0.4 - - 0.6 +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node_modules/gulp/node_modules/archy/LICENSE b/node_modules/gulp/node_modules/archy/LICENSE new file mode 100644 index 0000000000..ee27ba4b44 --- /dev/null +++ b/node_modules/gulp/node_modules/archy/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/archy/README.markdown b/node_modules/gulp/node_modules/archy/README.markdown index adcf088e1f..ef7a5cf34b 100644 --- a/node_modules/gulp/node_modules/archy/README.markdown +++ b/node_modules/gulp/node_modules/archy/README.markdown @@ -1,92 +1,88 @@ -archy -===== - -Render nested hierarchies `npm ls` style with unicode pipes. - -[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy) - -example -======= - -``` js -var archy = require('archy'); -var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); -``` - -output - -``` -beep -├── ity -└─┬ boop - ├─┬ o_O - │ ├─┬ oh - │ │ ├── hello - │ │ └── puny - │ └── human - └── party - time! -``` - -methods -======= - -var archy = require('archy') - -archy(obj, prefix='', opts={}) ------------------------------- - -Return a string representation of `obj` with unicode pipe characters like how -`npm ls` looks. - -`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields. -`'label'` is a string of text to display at a node level and `'nodes'` is an -array of the descendents of the current node. - -If a node is a string, that string will be used as the `'label'` and an empty -array of `'nodes'` will be used. - -`prefix` gets prepended to all the lines and is used by the algorithm to -recursively update. - -If `'label'` has newlines they will be indented at the present indentation level -with the current prefix. - -To disable unicode results in favor of all-ansi output set `opts.unicode` to -`false`. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install archy -``` - -license -======= - -MIT/X11 +# archy + +Render nested hierarchies `npm ls` style with unicode pipes. + +[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy) + +[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy) + +# example + +``` js +var archy = require('archy'); +var s = archy({ + label : 'beep', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny' ] + }, + 'human' + ] + }, + 'party\ntime!' + ] + } + ] +}); +console.log(s); +``` + +output + +``` +beep +├── ity +└─┬ boop + ├─┬ o_O + │ ├─┬ oh + │ │ ├── hello + │ │ └── puny + │ └── human + └── party + time! +``` + +# methods + +var archy = require('archy') + +## archy(obj, prefix='', opts={}) + +Return a string representation of `obj` with unicode pipe characters like how +`npm ls` looks. + +`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields. +`'label'` is a string of text to display at a node level and `'nodes'` is an +array of the descendents of the current node. + +If a node is a string, that string will be used as the `'label'` and an empty +array of `'nodes'` will be used. + +`prefix` gets prepended to all the lines and is used by the algorithm to +recursively update. + +If `'label'` has newlines they will be indented at the present indentation level +with the current prefix. + +To disable unicode results in favor of all-ansi output set `opts.unicode` to +`false`. + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install archy +``` + +# license + +MIT diff --git a/node_modules/gulp/node_modules/archy/examples/beep.js b/node_modules/gulp/node_modules/archy/examples/beep.js index 50ac830393..9c0704797c 100644 --- a/node_modules/gulp/node_modules/archy/examples/beep.js +++ b/node_modules/gulp/node_modules/archy/examples/beep.js @@ -1,24 +1,24 @@ -var archy = require('../'); -var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); +var archy = require('../'); +var s = archy({ + label : 'beep', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny' ] + }, + 'human' + ] + }, + 'party\ntime!' + ] + } + ] +}); +console.log(s); diff --git a/node_modules/gulp/node_modules/archy/examples/multi_line.js b/node_modules/gulp/node_modules/archy/examples/multi_line.js index 4001fdd577..8afdfada91 100644 --- a/node_modules/gulp/node_modules/archy/examples/multi_line.js +++ b/node_modules/gulp/node_modules/archy/examples/multi_line.js @@ -1,25 +1,25 @@ -var archy = require('../'); - -var s = archy({ - label : 'beep\none\ntwo', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O\nwheee', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny\nmeat' ] - }, - 'creature' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); +var archy = require('../'); + +var s = archy({ + label : 'beep\none\ntwo', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O\nwheee', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny\nmeat' ] + }, + 'creature' + ] + }, + 'party\ntime!' + ] + } + ] +}); +console.log(s); diff --git a/node_modules/gulp/node_modules/archy/index.js b/node_modules/gulp/node_modules/archy/index.js index 039db0c58c..869d64e653 100644 --- a/node_modules/gulp/node_modules/archy/index.js +++ b/node_modules/gulp/node_modules/archy/index.js @@ -1,35 +1,35 @@ -module.exports = function archy (obj, prefix, opts) { - if (prefix === undefined) prefix = ''; - if (!opts) opts = {}; - var chr = function (s) { - var chars = { - '│' : '|', - '└' : '`', - '├' : '+', - '─' : '-', - '┬' : '-' - }; - return opts.unicode === false ? chars[s] : s; - }; - - if (typeof obj === 'string') obj = { label : obj }; - - var nodes = obj.nodes || []; - var lines = (obj.label || '').split('\n'); - var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' '; - - return prefix - + lines.join(splitter) + '\n' - + nodes.map(function (node, ix) { - var last = ix === nodes.length - 1; - var more = node.nodes && node.nodes.length; - var prefix_ = prefix + (last ? ' ' : chr('│')) + ' '; - - return prefix - + (last ? chr('└') : chr('├')) + chr('─') - + (more ? chr('┬') : chr('─')) + ' ' - + archy(node, prefix_, opts).slice(prefix.length + 2) - ; - }).join('') - ; -}; +module.exports = function archy (obj, prefix, opts) { + if (prefix === undefined) prefix = ''; + if (!opts) opts = {}; + var chr = function (s) { + var chars = { + '│' : '|', + '└' : '`', + '├' : '+', + '─' : '-', + '┬' : '-' + }; + return opts.unicode === false ? chars[s] : s; + }; + + if (typeof obj === 'string') obj = { label : obj }; + + var nodes = obj.nodes || []; + var lines = (obj.label || '').split('\n'); + var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' '; + + return prefix + + lines.join(splitter) + '\n' + + nodes.map(function (node, ix) { + var last = ix === nodes.length - 1; + var more = node.nodes && node.nodes.length; + var prefix_ = prefix + (last ? ' ' : chr('│')) + ' '; + + return prefix + + (last ? chr('└') : chr('├')) + chr('─') + + (more ? chr('┬') : chr('─')) + ' ' + + archy(node, prefix_, opts).slice(prefix.length + 2) + ; + }).join('') + ; +}; diff --git a/node_modules/gulp/node_modules/archy/package.json b/node_modules/gulp/node_modules/archy/package.json index f795c194b5..a98bbfe778 100644 --- a/node_modules/gulp/node_modules/archy/package.json +++ b/node_modules/gulp/node_modules/archy/package.json @@ -1,68 +1,80 @@ -{ - "name": "archy", - "version": "0.0.2", - "description": "render nested hierarchies `npm ls` style with unicode pipes", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "devDependencies": { - "tap": "~0.2.3" - }, - "scripts": { - "test": "tap test" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/node-archy.git" - }, - "keywords": [ - "hierarchy", - "npm ls", - "unicode", - "pretty", - "print" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "_npmUser": { - "name": "substack", - "email": "mail@substack.net" - }, - "_id": "archy@0.0.2", - "dependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.0.106", - "_nodeVersion": "v0.4.12", - "_defaultsLoaded": true, - "dist": { - "shasum": "910f43bf66141fc335564597abc189df44b3d35e", - "tarball": "http://registry.npmjs.org/archy/-/archy-0.0.2.tgz" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - } - ], - "_shasum": "910f43bf66141fc335564597abc189df44b3d35e", - "_from": "archy@^0.0.2", - "_resolved": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz", - "bugs": { - "url": "https://github.com/substack/node-archy/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/substack/node-archy" -} +{ + "name": "archy", + "version": "1.0.0", + "description": "render nested hierarchies `npm ls` style with unicode pipes", + "main": "index.js", + "devDependencies": { + "tap": "~0.3.3", + "tape": "~0.1.1" + }, + "scripts": { + "test": "tap test" + }, + "testling": { + "files": "test/*.js", + "browsers": { + "iexplore": [ + "6.0", + "7.0", + "8.0", + "9.0" + ], + "chrome": [ + "20.0" + ], + "firefox": [ + "10.0", + "15.0" + ], + "safari": [ + "5.1" + ], + "opera": [ + "12.0" + ] + } + }, + "repository": { + "type": "git", + "url": "http://github.com/substack/node-archy.git" + }, + "keywords": [ + "hierarchy", + "npm ls", + "unicode", + "pretty", + "print" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT", + "gitHead": "30223c16191e877bf027b15b12daf077b9b55b84", + "bugs": { + "url": "https://github.com/substack/node-archy/issues" + }, + "homepage": "https://github.com/substack/node-archy", + "_id": "archy@1.0.0", + "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40", + "_from": "archy@>=1.0.0 <2.0.0", + "_npmVersion": "1.4.25", + "_npmUser": { + "name": "substack", + "email": "mail@substack.net" + }, + "maintainers": [ + { + "name": "substack", + "email": "mail@substack.net" + } + ], + "dist": { + "shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40", + "tarball": "http://registry.npmjs.org/archy/-/archy-1.0.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/archy/test/beep.js b/node_modules/gulp/node_modules/archy/test/beep.js index 7156cff18f..4ea74f9cee 100644 --- a/node_modules/gulp/node_modules/archy/test/beep.js +++ b/node_modules/gulp/node_modules/archy/test/beep.js @@ -1,40 +1,40 @@ -var test = require('tap').test; -var archy = require('../'); - -test('beep', function (t) { - var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party!' - ] - } - ] - }); - t.equal(s, [ - 'beep', - '├── ity', - '└─┬ boop', - ' ├─┬ o_O', - ' │ ├─┬ oh', - ' │ │ ├── hello', - ' │ │ └── puny', - ' │ └── human', - ' └── party!', - '' - ].join('\n')); - t.end(); -}); +var test = require('tape'); +var archy = require('../'); + +test('beep', function (t) { + var s = archy({ + label : 'beep', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny' ] + }, + 'human' + ] + }, + 'party!' + ] + } + ] + }); + t.equal(s, [ + 'beep', + '├── ity', + '└─┬ boop', + ' ├─┬ o_O', + ' │ ├─┬ oh', + ' │ │ ├── hello', + ' │ │ └── puny', + ' │ └── human', + ' └── party!', + '' + ].join('\n')); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/archy/test/multi_line.js b/node_modules/gulp/node_modules/archy/test/multi_line.js index 7ebab61535..2cf2154d8a 100644 --- a/node_modules/gulp/node_modules/archy/test/multi_line.js +++ b/node_modules/gulp/node_modules/archy/test/multi_line.js @@ -1,45 +1,45 @@ -var test = require('tap').test; -var archy = require('../'); - -test('multi-line', function (t) { - var s = archy({ - label : 'beep\none\ntwo', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O\nwheee', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny\nmeat' ] - }, - 'creature' - ] - }, - 'party\ntime!' - ] - } - ] - }); - t.equal(s, [ - 'beep', - '│ one', - '│ two', - '├── ity', - '└─┬ boop', - ' ├─┬ o_O', - ' │ │ wheee', - ' │ ├─┬ oh', - ' │ │ ├── hello', - ' │ │ └── puny', - ' │ │ meat', - ' │ └── creature', - ' └── party', - ' time!', - '' - ].join('\n')); - t.end(); -}); +var test = require('tape'); +var archy = require('../'); + +test('multi-line', function (t) { + var s = archy({ + label : 'beep\none\ntwo', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O\nwheee', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny\nmeat' ] + }, + 'creature' + ] + }, + 'party\ntime!' + ] + } + ] + }); + t.equal(s, [ + 'beep', + '│ one', + '│ two', + '├── ity', + '└─┬ boop', + ' ├─┬ o_O', + ' │ │ wheee', + ' │ ├─┬ oh', + ' │ │ ├── hello', + ' │ │ └── puny', + ' │ │ meat', + ' │ └── creature', + ' └── party', + ' time!', + '' + ].join('\n')); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/archy/test/non_unicode.js b/node_modules/gulp/node_modules/archy/test/non_unicode.js index fd502d2045..7204d33271 100644 --- a/node_modules/gulp/node_modules/archy/test/non_unicode.js +++ b/node_modules/gulp/node_modules/archy/test/non_unicode.js @@ -1,40 +1,40 @@ -var test = require('tap').test; -var archy = require('../'); - -test('beep', function (t) { - var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party!' - ] - } - ] - }, '', { unicode : false }); - t.equal(s, [ - 'beep', - '+-- ity', - '`-- boop', - ' +-- o_O', - ' | +-- oh', - ' | | +-- hello', - ' | | `-- puny', - ' | `-- human', - ' `-- party!', - '' - ].join('\n')); - t.end(); -}); +var test = require('tape'); +var archy = require('../'); + +test('beep', function (t) { + var s = archy({ + label : 'beep', + nodes : [ + 'ity', + { + label : 'boop', + nodes : [ + { + label : 'o_O', + nodes : [ + { + label : 'oh', + nodes : [ 'hello', 'puny' ] + }, + 'human' + ] + }, + 'party!' + ] + } + ] + }, '', { unicode : false }); + t.equal(s, [ + 'beep', + '+-- ity', + '`-- boop', + ' +-- o_O', + ' | +-- oh', + ' | | +-- hello', + ' | | `-- puny', + ' | `-- human', + ' `-- party!', + '' + ].join('\n')); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/chalk/index.js b/node_modules/gulp/node_modules/chalk/index.js index 2e2eaa1ac9..ac1f16820d 100644 --- a/node_modules/gulp/node_modules/chalk/index.js +++ b/node_modules/gulp/node_modules/chalk/index.js @@ -1,95 +1,95 @@ -'use strict'; -var escapeStringRegexp = require('escape-string-regexp'); -var ansiStyles = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasAnsi = require('has-ansi'); -var supportsColor = require('supports-color'); -var defineProps = Object.defineProperties; -var chalk = module.exports; - -function build(_styles) { - var builder = function builder() { - return applyStyle.apply(builder, arguments); - }; - builder._styles = _styles; - // __proto__ is used because we must return a function, but there is - // no way to create a function with a different prototype. - builder.__proto__ = proto; - return builder; -} - -var styles = (function () { - var ret = {}; - - ansiStyles.grey = ansiStyles.gray; - - Object.keys(ansiStyles).forEach(function (key) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - ret[key] = { - get: function () { - return build(this._styles.concat(key)); - } - }; - }); - - return ret; -})(); - -var proto = defineProps(function chalk() {}, styles); - -function applyStyle() { - // support varags, but simply cast to string in case there's only one arg - var args = arguments; - var argsLen = args.length; - var str = argsLen !== 0 && String(arguments[0]); - if (argsLen > 1) { - // don't slice `arguments`, it prevents v8 optimizations - for (var a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!chalk.enabled || !str) { - return str; - } - - /*jshint validthis: true*/ - var nestedStyles = this._styles; - - for (var i = 0; i < nestedStyles.length; i++) { - var code = ansiStyles[nestedStyles[i]]; - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - } - - return str; -} - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - return build([name]); - } - }; - }); - - return ret; -} - -defineProps(chalk, init()); - -chalk.styles = ansiStyles; -chalk.hasColor = hasAnsi; -chalk.stripColor = stripAnsi; -chalk.supportsColor = supportsColor; - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var chalk = module.exports; + +function build(_styles) { + var builder = function builder() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + builder.__proto__ = proto; + return builder; +} + +var styles = (function () { + var ret = {}; + + ansiStyles.grey = ansiStyles.gray; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build(this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!chalk.enabled || !str) { + return str; + } + + /*jshint validthis: true*/ + var nestedStyles = this._styles; + + for (var i = 0; i < nestedStyles.length; i++) { + var code = ansiStyles[nestedStyles[i]]; + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build([name]); + } + }; + }); + + return ret; +} + +defineProps(chalk, init()); + +chalk.styles = ansiStyles; +chalk.hasColor = hasAnsi; +chalk.stripColor = stripAnsi; +chalk.supportsColor = supportsColor; + +// detect mode if not set manually +if (chalk.enabled === undefined) { + chalk.enabled = chalk.supportsColor; +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi deleted file mode 100644 index c1e7413f1f..0000000000 --- a/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi +++ /dev/null @@ -1 +0,0 @@ -../has-ansi/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi new file mode 120000 index 0000000000..c1e7413f1f --- /dev/null +++ b/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi @@ -0,0 +1 @@ +../has-ansi/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi deleted file mode 100644 index b65c9f81df..0000000000 --- a/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi +++ /dev/null @@ -1 +0,0 @@ -../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi new file mode 120000 index 0000000000..b65c9f81df --- /dev/null +++ b/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi @@ -0,0 +1 @@ +../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color deleted file mode 100644 index af0f05efe8..0000000000 --- a/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color +++ /dev/null @@ -1 +0,0 @@ -../supports-color/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color new file mode 120000 index 0000000000..af0f05efe8 --- /dev/null +++ b/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color @@ -0,0 +1 @@ +../supports-color/cli.js \ No newline at end of file diff --git a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js index 42b32910b3..2d8b4726da 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js @@ -1,40 +1,40 @@ -'use strict'; -var styles = module.exports; - -var codes = { - reset: [0, 0], - - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = {}; - style.open = '\u001b[' + val[0] + 'm'; - style.close = '\u001b[' + val[1] + 'm'; -}); +'use strict'; +var styles = module.exports; + +var codes = { + reset: [0, 0], + + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29], + + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] +}; + +Object.keys(codes).forEach(function (key) { + var val = codes[key]; + var style = styles[key] = {}; + style.open = '\u001b[' + val[0] + 'm'; + style.close = '\u001b[' + val[1] + 'm'; +}); diff --git a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json index 57bd2e28ac..1ca799d4ba 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json @@ -1,74 +1,74 @@ -{ - "name": "ansi-styles", - "version": "1.1.0", - "description": "ANSI escape codes for styling strings in the terminal", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-styles", - "_id": "ansi-styles@1.1.0", - "_shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", - "_from": "ansi-styles@^1.1.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", - "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "ansi-styles", + "version": "1.1.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-styles" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-styles/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-styles", + "_id": "ansi-styles@1.1.0", + "_shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", + "_from": "ansi-styles@>=1.1.0 <2.0.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "eaecbf66cd706882760b2f4691582b8f55d7a7de", + "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md index cd7415389c..73584cc952 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md @@ -1,70 +1,70 @@ -# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -```sh -$ npm install --save ansi-styles -``` - - -## Usage - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### General - -- `reset` -- `bold` -- `dim` -- `italic` *(not widely supported)* -- `underline` -- `inverse` -- `hidden` -- `strikethrough` *(not widely supported)* - -### Text colors - -- `black` -- `red` -- `green` -- `yellow` -- `blue` -- `magenta` -- `cyan` -- `white` -- `gray` - -### Background colors - -- `bgBlack` -- `bgRed` -- `bgGreen` -- `bgYellow` -- `bgBlue` -- `bgMagenta` -- `bgCyan` -- `bgWhite` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. + +![screenshot](screenshot.png) + + +## Install + +```sh +$ npm install --save ansi-styles +``` + + +## Usage + +```js +var ansi = require('ansi-styles'); + +console.log(ansi.green.open + 'Hello world!' + ansi.green.close); +``` + + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### General + +- `reset` +- `bold` +- `dim` +- `italic` *(not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(not widely supported)* + +### Text colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js index 7d80c99a66..ac6572cabe 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js @@ -1,11 +1,11 @@ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/license b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/license new file mode 100644 index 0000000000..654d0bfe94 --- /dev/null +++ b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json index 0f92f75c73..0fe3848f2e 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json @@ -1,69 +1,70 @@ -{ - "name": "escape-string-regexp", - "version": "1.0.2", - "description": "Escape RegExp special characters", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/sindresorhus/escape-string-regexp" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "regex", - "regexp", - "re", - "regular", - "expression", - "escape", - "string", - "str", - "special", - "characters" - ], - "devDependencies": { - "mocha": "*" - }, - "gitHead": "0587ee0ee03ea3fcbfa3c15cf67b47f214e20987", - "bugs": { - "url": "https://github.com/sindresorhus/escape-string-regexp/issues" - }, - "homepage": "https://github.com/sindresorhus/escape-string-regexp", - "_id": "escape-string-regexp@1.0.2", - "_shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", - "_from": "escape-string-regexp@^1.0.0", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - } - ], - "dist": { - "shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", - "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "escape-string-regexp", + "version": "1.0.3", + "description": "Escape RegExp special characters", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/sindresorhus/escape-string-regexp" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "engines": { + "node": ">=0.8.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "regex", + "regexp", + "re", + "regular", + "expression", + "escape", + "string", + "str", + "special", + "characters" + ], + "devDependencies": { + "mocha": "*" + }, + "gitHead": "1e446e6b4449b5f1f8868cd31bf8fd25ee37fb4b", + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "homepage": "https://github.com/sindresorhus/escape-string-regexp", + "_id": "escape-string-regexp@1.0.3", + "_shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5", + "_from": "escape-string-regexp@>=1.0.0 <2.0.0", + "_npmVersion": "2.1.16", + "_nodeVersion": "0.10.35", + "_npmUser": { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + }, + "dist": { + "shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5", + "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md index 000b53755a..808a963a86 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md @@ -1,27 +1,27 @@ -# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) - -> Escape RegExp special characters - - -## Install - -```sh -$ npm install --save escape-string-regexp -``` - - -## Usage - -```js -var escapeStringRegexp = require('escape-string-regexp'); - -var escapedString = escapeStringRegexp('how much $ for a unicorn?'); -//=> how much \$ for a unicorn\? - -new RegExp(escapedString); -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +```sh +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +var escapeStringRegexp = require('escape-string-regexp'); + +var escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> how much \$ for a unicorn\? + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js old mode 100644 new mode 100755 index fdbb8dd19d..e0956fcc72 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js @@ -1,53 +1,53 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var hasAnsi = require('./'); -var input = process.argv[2]; - -function stdin(cb) { - var ret = ''; - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function (data) { - ret += data; - }); - process.stdin.on('end', function () { - cb(ret); - }); -} - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ has-ansi ', - ' $ echo | has-ansi', - '', - 'Exits with code 0 if input has ANSI escape codes and 1 if not' - ].join('\n')); -} - -function init(data) { - process.exit(hasAnsi(data) ? 0 : 1); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - init(input); -} else { - stdin(init); -} +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var hasAnsi = require('./'); +var input = process.argv[2]; + +function stdin(cb) { + var ret = ''; + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function (data) { + ret += data; + }); + process.stdin.on('end', function () { + cb(ret); + }); +} + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ has-ansi ', + ' $ echo | has-ansi', + '', + 'Exits with code 0 if input has ANSI escape codes and 1 if not' + ].join('\n')); +} + +function init(data) { + process.exit(hasAnsi(data) ? 0 : 1); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (process.stdin.isTTY) { + if (!input) { + help(); + return; + } + + init(input); +} else { + stdin(init); +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js index dbb98839b2..98fae06767 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js @@ -1,4 +1,4 @@ -'use strict'; -var ansiRegex = require('ansi-regex'); -var re = new RegExp(ansiRegex().source); // remove the `g` flag -module.exports = re.test.bind(re); +'use strict'; +var ansiRegex = require('ansi-regex'); +var re = new RegExp(ansiRegex().source); // remove the `g` flag +module.exports = re.test.bind(re); diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js index f423edef3f..783c5c7bb6 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js @@ -1,4 +1,4 @@ -'use strict'; -module.exports = function () { - return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; -}; +'use strict'; +module.exports = function () { + return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; +}; diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json index 4bb4051d59..746146fc7c 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json @@ -1,79 +1,79 @@ -{ - "name": "ansi-regex", - "version": "0.2.1", - "description": "Regular expression for matching ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-regex" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-regex/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-regex", - "_id": "ansi-regex@0.2.1", - "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "_from": "ansi-regex@^0.2.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "ansi-regex", + "version": "0.2.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-regex" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-regex/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-regex", + "_id": "ansi-regex@0.2.1", + "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "_from": "ansi-regex@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md index 95837d0c5c..ae876e7292 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md @@ -1,33 +1,33 @@ -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save ansi-regex -``` - - -## Usage - -```js -var ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - -*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) + +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save ansi-regex +``` + + +## Usage + +```js +var ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001b[4mcake\u001b[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001b[4mcake\u001b[0m'.match(ansiRegex()); +//=> ['\u001b[4m', '\u001b[0m'] +``` + +*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json index 0b007875fc..6221ac5b73 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json @@ -1,85 +1,85 @@ -{ - "name": "has-ansi", - "version": "0.1.0", - "description": "Check if a string has ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-ansi" - }, - "bin": { - "has-ansi": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "string", - "tty", - "escape", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern", - "has" - ], - "dependencies": { - "ansi-regex": "^0.2.0" - }, - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/has-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/has-ansi", - "_id": "has-ansi@0.1.0", - "_shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", - "_from": "has-ansi@^0.1.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", - "tarball": "http://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "has-ansi", + "version": "0.1.0", + "description": "Check if a string has ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/has-ansi" + }, + "bin": { + "has-ansi": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "string", + "tty", + "escape", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern", + "has" + ], + "dependencies": { + "ansi-regex": "^0.2.0" + }, + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/has-ansi/issues" + }, + "homepage": "https://github.com/sindresorhus/has-ansi", + "_id": "has-ansi@0.1.0", + "_shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", + "_from": "has-ansi@>=0.1.0 <0.2.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "84f265aae8c0e6a88a12d7022894b7568894c62e", + "tarball": "http://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md index aaaef959f2..0702212313 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md @@ -1,45 +1,45 @@ -# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) - -> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save has-ansi -``` - - -## Usage - -```js -var hasAnsi = require('has-ansi'); - -hasAnsi('\u001b[4mcake\u001b[0m'); -//=> true - -hasAnsi('cake'); -//=> false -``` - - -## CLI - -```sh -$ npm install --global has-ansi -``` - -``` -$ has-ansi --help - -Usage - $ has-ansi - $ echo | has-ansi - -Exits with code 0 if input has ANSI escape codes and 1 if not -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) + +> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save has-ansi +``` + + +## Usage + +```js +var hasAnsi = require('has-ansi'); + +hasAnsi('\u001b[4mcake\u001b[0m'); +//=> true + +hasAnsi('cake'); +//=> false +``` + + +## CLI + +```sh +$ npm install --global has-ansi +``` + +``` +$ has-ansi --help + +Usage + $ has-ansi + $ echo | has-ansi + +Exits with code 0 if input has ANSI escape codes and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js old mode 100644 new mode 100755 index cc9498366c..602ae00e8f --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js @@ -1,39 +1,39 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var strip = require('./'); -var input = process.argv[2]; - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ strip-ansi > ', - ' $ cat | strip-ansi > ', - '', - 'Example', - ' $ strip-ansi unicorn.txt > unicorn-stripped.txt' - ].join('\n')); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - process.stdout.write(strip(data)); -}); +#!/usr/bin/env node +'use strict'; +var fs = require('fs'); +var pkg = require('./package.json'); +var strip = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ strip-ansi > ', + ' $ cat | strip-ansi > ', + '', + 'Example', + ' $ strip-ansi unicorn.txt > unicorn-stripped.txt' + ].join('\n')); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (input) { + process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); + return; +} + +process.stdin.setEncoding('utf8'); +process.stdin.on('data', function (data) { + process.stdout.write(strip(data)); +}); diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js index 8fc4919d40..099480fbfc 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js @@ -1,6 +1,6 @@ -'use strict'; -var ansiRegex = require('ansi-regex')(); - -module.exports = function (str) { - return typeof str === 'string' ? str.replace(ansiRegex, '') : str; -}; +'use strict'; +var ansiRegex = require('ansi-regex')(); + +module.exports = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js index f423edef3f..783c5c7bb6 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js @@ -1,4 +1,4 @@ -'use strict'; -module.exports = function () { - return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; -}; +'use strict'; +module.exports = function () { + return /\u001b\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]/g; +}; diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json index 3968113375..746146fc7c 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json @@ -1,79 +1,79 @@ -{ - "name": "ansi-regex", - "version": "0.2.1", - "description": "Regular expression for matching ANSI escape codes", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-regex" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-regex/issues" - }, - "homepage": "https://github.com/sindresorhus/ansi-regex", - "_id": "ansi-regex@0.2.1", - "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "_from": "ansi-regex@^0.2.1", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", - "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "ansi-regex", + "version": "0.2.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/ansi-regex" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/ansi-regex/issues" + }, + "homepage": "https://github.com/sindresorhus/ansi-regex", + "_id": "ansi-regex@0.2.1", + "_shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "_from": "ansi-regex@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "0d8e946967a3d8143f93e24e298525fc1b2235f9", + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md index 95837d0c5c..ae876e7292 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md @@ -1,33 +1,33 @@ -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save ansi-regex -``` - - -## Usage - -```js -var ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - -*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) + +> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save ansi-regex +``` + + +## Usage + +```js +var ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001b[4mcake\u001b[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001b[4mcake\u001b[0m'.match(ansiRegex()); +//=> ['\u001b[4m', '\u001b[0m'] +``` + +*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json index 9f7b3e85b9..052b368963 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json @@ -1,84 +1,84 @@ -{ - "name": "strip-ansi", - "version": "0.3.0", - "description": "Strip ANSI escape codes", - "license": "MIT", - "bin": { - "strip-ansi": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-ansi" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "ansi-regex": "^0.2.1" - }, - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-ansi", - "_id": "strip-ansi@0.3.0", - "_shasum": "25f48ea22ca79187f3174a4db8759347bb126220", - "_from": "strip-ansi@^0.3.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "25f48ea22ca79187f3174a4db8759347bb126220", - "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "strip-ansi", + "version": "0.3.0", + "description": "Strip ANSI escape codes", + "license": "MIT", + "bin": { + "strip-ansi": "cli.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/strip-ansi" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "strip", + "trim", + "remove", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-regex": "^0.2.1" + }, + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/strip-ansi/issues" + }, + "homepage": "https://github.com/sindresorhus/strip-ansi", + "_id": "strip-ansi@0.3.0", + "_shasum": "25f48ea22ca79187f3174a4db8759347bb126220", + "_from": "strip-ansi@>=0.3.0 <0.4.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "25f48ea22ca79187f3174a4db8759347bb126220", + "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md index f16759a3ca..5477079d00 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md @@ -1,43 +1,43 @@ -# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -```sh -$ npm install --save strip-ansi -``` - - -## Usage - -```js -var stripAnsi = require('strip-ansi'); - -stripAnsi('\x1b[4mcake\x1b[0m'); -//=> 'cake' -``` - - -## CLI - -```sh -$ npm install --global strip-ansi -``` - -```sh -$ strip-ansi --help - -Usage - $ strip-ansi > - $ cat | strip-ansi > - -Example - $ strip-ansi unicorn.txt > unicorn-stripped.txt -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) + +> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save strip-ansi +``` + + +## Usage + +```js +var stripAnsi = require('strip-ansi'); + +stripAnsi('\x1b[4mcake\x1b[0m'); +//=> 'cake' +``` + + +## CLI + +```sh +$ npm install --global strip-ansi +``` + +```sh +$ strip-ansi --help + +Usage + $ strip-ansi > + $ cat | strip-ansi > + +Example + $ strip-ansi unicorn.txt > unicorn-stripped.txt +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js old mode 100644 new mode 100755 index 86ca5ec151..0617971e6f --- a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js @@ -1,28 +1,28 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var supportsColor = require('./'); -var input = process.argv[2]; - -function help() { - console.log([ - pkg.description, - '', - 'Usage', - ' $ supports-color', - '', - 'Exits with code 0 if color is supported and 1 if not' - ].join('\n')); -} - -if (!input || process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -process.exit(supportsColor ? 0 : 1); +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var supportsColor = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ supports-color', + '', + 'Exits with code 0 if color is supported and 1 if not' + ].join('\n')); +} + +if (!input || process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +process.exit(supportsColor ? 0 : 1); diff --git a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js index 06580ad5bd..092d0baef6 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js +++ b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js @@ -1,32 +1,32 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (process.stdout && !process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - if (process.env.TERM === 'dumb') { - return false; - } - - if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { - return true; - } - - return false; -})(); +'use strict'; +module.exports = (function () { + if (process.argv.indexOf('--no-color') !== -1) { + return false; + } + + if (process.argv.indexOf('--color') !== -1) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); diff --git a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json index a870398a5a..d9a2cb9c6a 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json +++ b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json @@ -1,78 +1,78 @@ -{ - "name": "supports-color", - "version": "0.2.0", - "description": "Detect whether a terminal supports color", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/supports-color" - }, - "bin": { - "supports-color": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "supports", - "capability", - "detect" - ], - "devDependencies": { - "mocha": "*" - }, - "bugs": { - "url": "https://github.com/sindresorhus/supports-color/issues" - }, - "homepage": "https://github.com/sindresorhus/supports-color", - "_id": "supports-color@0.2.0", - "_shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", - "_from": "supports-color@^0.2.0", - "_npmVersion": "1.4.9", - "_npmUser": { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - } - ], - "dist": { - "shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", - "tarball": "http://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "supports-color", + "version": "0.2.0", + "description": "Detect whether a terminal supports color", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/supports-color" + }, + "bin": { + "supports-color": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "ansi", + "styles", + "tty", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "support", + "supports", + "capability", + "detect" + ], + "devDependencies": { + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/sindresorhus/supports-color/issues" + }, + "homepage": "https://github.com/sindresorhus/supports-color", + "_id": "supports-color@0.2.0", + "_shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", + "_from": "supports-color@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "dist": { + "shasum": "d92de2694eb3f67323973d7ae3d8b55b4c22190a", + "tarball": "http://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md index 1f1c32fffd..7f07e5fb0f 100644 --- a/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md +++ b/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md @@ -1,44 +1,44 @@ -# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color) - -> Detect whether a terminal supports color - - -## Install - -```sh -$ npm install --save supports-color -``` - - -## Usage - -```js -var supportsColor = require('supports-color'); - -if (supportsColor) { - console.log('Terminal supports color'); -} -``` - -It obeys the `--color` and `--no-color` CLI flags. - - -## CLI - -```sh -$ npm install --global supports-color -``` - -```sh -$ supports-color --help - -Usage - $ supports-color - -# Exits with code 0 if color is supported and 1 if not -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) +# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color) + +> Detect whether a terminal supports color + + +## Install + +```sh +$ npm install --save supports-color +``` + + +## Usage + +```js +var supportsColor = require('supports-color'); + +if (supportsColor) { + console.log('Terminal supports color'); +} +``` + +It obeys the `--color` and `--no-color` CLI flags. + + +## CLI + +```sh +$ npm install --global supports-color +``` + +```sh +$ supports-color --help + +Usage + $ supports-color + +# Exits with code 0 if color is supported and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp/node_modules/chalk/package.json b/node_modules/gulp/node_modules/chalk/package.json index da63134db9..9df83b32d3 100644 --- a/node_modules/gulp/node_modules/chalk/package.json +++ b/node_modules/gulp/node_modules/chalk/package.json @@ -1,82 +1,82 @@ -{ - "name": "chalk", - "version": "0.5.1", - "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk" - }, - "maintainers": [ - { - "name": "sindresorhus", - "email": "sindresorhus@gmail.com" - }, - { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - } - ], - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha", - "bench": "matcha benchmark.js" - }, - "files": [ - "index.js" - ], - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - }, - "devDependencies": { - "matcha": "^0.5.0", - "mocha": "*" - }, - "gitHead": "994758f01293f1fdcf63282e9917cb9f2cfbdaac", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "homepage": "https://github.com/sindresorhus/chalk", - "_id": "chalk@0.5.1", - "_shasum": "663b3a648b68b55d04690d49167aa837858f2174", - "_from": "chalk@^0.5.0", - "_npmVersion": "1.4.14", - "_npmUser": { - "name": "jbnicolai", - "email": "jappelman@xebia.com" - }, - "dist": { - "shasum": "663b3a648b68b55d04690d49167aa837858f2174", - "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "readme": "ERROR: No README data found!" -} +{ + "name": "chalk", + "version": "0.5.1", + "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/chalk" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha", + "bench": "matcha benchmark.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "ansi", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + }, + "devDependencies": { + "matcha": "^0.5.0", + "mocha": "*" + }, + "gitHead": "994758f01293f1fdcf63282e9917cb9f2cfbdaac", + "bugs": { + "url": "https://github.com/sindresorhus/chalk/issues" + }, + "homepage": "https://github.com/sindresorhus/chalk", + "_id": "chalk@0.5.1", + "_shasum": "663b3a648b68b55d04690d49167aa837858f2174", + "_from": "chalk@>=0.5.0 <0.6.0", + "_npmVersion": "1.4.14", + "_npmUser": { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + }, + "dist": { + "shasum": "663b3a648b68b55d04690d49167aa837858f2174", + "tarball": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/chalk/readme.md b/node_modules/gulp/node_modules/chalk/readme.md index 8151530601..239c791f83 100644 --- a/node_modules/gulp/node_modules/chalk/readme.md +++ b/node_modules/gulp/node_modules/chalk/readme.md @@ -1,175 +1,175 @@ -# chalk - -> Terminal string styling done right - -[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) -![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg) - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png) - - -## Why - -- Highly performant -- Doesn't extend String.prototype -- Expressive API -- Ability to nest styles -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by 1000+ modules](https://npmjs.org/browse/depended/chalk) - - -## Install - -```sh -$ npm install --save chalk -``` - - -## Usage - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log( chalk.blue('Hello world!') ); - -// combine styled and normal strings -console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); - -// compose multiple styles using the chainable API -console.log( chalk.blue.bgRed.bold('Hello world!') ); - -// pass in multiple arguments -console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); - -// nest styles -console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); - -// nest styles of the same type even (color, underline, background) -console.log( chalk.green('I am a green line ' + chalk.blue('with a blue substring') + ' that becomes green again!') ); -``` - -Easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - -Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). - -```js -var name = 'Sindre'; -console.log(chalk.green('Hello %s'), name); -//=> Hello Sindre -``` - - -## API - -### chalk.` - - -
    -

    Code coverage report for All files

    -

    - - Statements: 100% (111 / 111)      - - - Branches: 100% (84 / 84)      - - - Functions: 100% (20 / 20)      - - - Lines: 100% (102 / 102)      - - Ignored: none      -

    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    vinyl/100%(89 / 89)100%(76 / 76)100%(15 / 15)100%(82 / 82)
    vinyl/lib/100%(22 / 22)100%(8 / 8)100%(5 / 5)100%(20 / 20)
    -
    -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.css b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.css deleted file mode 100644 index 5181e157c9..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.js deleted file mode 100644 index eaf4912c93..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.html deleted file mode 100644 index e4f84d2346..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - Code coverage report for vinyl/ - - - - - - - -
    -

    Code coverage report for vinyl/

    -

    - - Statements: 100% (89 / 89)      - - - Branches: 100% (76 / 76)      - - - Functions: 100% (15 / 15)      - - - Lines: 100% (82 / 82)      - - Ignored: none      -

    -
    All files » vinyl/
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    index.js100%(89 / 89)100%(76 / 76)100%(15 / 15)100%(82 / 82)
    -
    -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html deleted file mode 100644 index f47d9b3794..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html +++ /dev/null @@ -1,847 +0,0 @@ - - - - Code coverage report for vinyl/index.js - - - - - - - -
    -

    Code coverage report for vinyl/index.js

    -

    - - Statements: 100% (89 / 89)      - - - Branches: 100% (76 / 76)      - - - Functions: 100% (15 / 15)      - - - Lines: 100% (82 / 82)      - - Ignored: none      -

    -
    All files » vinyl/ » index.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -1761 -1 -1 -1 -1 -1 -1 -1 -1 -  -1 -73 -  -  -73 -73 -  -  -73 -73 -  -  -  -73 -  -  -73 -  -  -1 -26 -  -  -1 -29 -  -  -1 -6 -  -  -  -1 -3 -  -  -1 -14 -2 -  -  -  -12 -7 -  -  -  -  -5 -5 -  -  -  -14 -14 -1 -1 -13 -6 -  -  -14 -  -  -  -  -  -  -  -  -14 -  -75 -  -  -70 -  -5 -  -14 -  -  -1 -6 -6 -  -6 -2 -  -4 -2 -1 -  -1 -  -2 -  -  -  -2 -2 -  -  -1 -6 -  -  -6 -  -6 -4 -  -  -6 -3 -  -  -6 -1 -  -  -6 -  -  -  -  -1 -  -99 -  -  -78 -1 -  -77 -  -  -  -  -1 -  -7 -6 -5 -  -  -1 -  -  -  -1 -  -46 -  -  -9 -  -  -8 -5 -  -  -  -  -1 - 
    var path = require('path');
    -var clone = require('lodash').clone;
    -var cloneStats = require('clone-stats');
    -var cloneBuffer = require('./lib/cloneBuffer');
    -var isBuffer = require('./lib/isBuffer');
    -var isStream = require('./lib/isStream');
    -var isNull = require('./lib/isNull');
    -var inspectStream = require('./lib/inspectStream');
    -var Stream = require('stream');
    - 
    -function File(file) {
    -  if (!file) file = {};
    - 
    -  // record path change
    -  var history = file.path ? [file.path] : file.history;
    -  this.history = history || [];
    - 
    -  // TODO: should this be moved to vinyl-fs?
    -  this.cwd = file.cwd || process.cwd();
    -  this.base = file.base || this.cwd;
    - 
    -  // stat = fs stats object
    -  // TODO: should this be moved to vinyl-fs?
    -  this.stat = file.stat || null;
    - 
    -  // contents = stream, buffer, or null if not read
    -  this.contents = file.contents || null;
    -}
    - 
    -File.prototype.isBuffer = function() {
    -  return isBuffer(this.contents);
    -};
    - 
    -File.prototype.isStream = function() {
    -  return isStream(this.contents);
    -};
    - 
    -File.prototype.isNull = function() {
    -  return isNull(this.contents);
    -};
    - 
    -// TODO: should this be moved to vinyl-fs?
    -File.prototype.isDirectory = function() {
    -  return this.isNull() && this.stat && this.stat.isDirectory();
    -};
    - 
    -File.prototype.clone = function(opt) {
    -  if (typeof opt === 'boolean') {
    -    opt = {
    -      deep: opt,
    -      contents: true
    -    };
    -  } else if (!opt) {
    -    opt = {
    -      deep: false,
    -      contents: true
    -    };
    -  } else {
    -    opt.deep = opt.deep === true;
    -    opt.contents = opt.contents !== false;
    -  }
    - 
    -  // clone our file contents
    -  var contents;
    -  if (this.isStream()) {
    -    contents = this.contents.pipe(new Stream.PassThrough());
    -    this.contents = this.contents.pipe(new Stream.PassThrough());
    -  } else if (this.isBuffer()) {
    -    contents = opt.contents ? cloneBuffer(this.contents) : this.contents;
    -  }
    - 
    -  var file = new File({
    -    cwd: this.cwd,
    -    base: this.base,
    -    stat: (this.stat ? cloneStats(this.stat) : null),
    -    history: this.history.slice(),
    -    contents: contents
    -  });
    - 
    -  // clone our custom properties
    -  Object.keys(this).forEach(function(key) {
    -    // ignore built-in fields
    -    if (key === '_contents' || key === 'stat' ||
    -      key === 'history' || key === 'path' ||
    -      key === 'base' || key === 'cwd') {
    -      return;
    -    }
    -    file[key] = opt.deep ? clone(this[key], true) : this[key];
    -  }, this);
    -  return file;
    -};
    - 
    -File.prototype.pipe = function(stream, opt) {
    -  if (!opt) opt = {};
    -  if (typeof opt.end === 'undefined') opt.end = true;
    - 
    -  if (this.isStream()) {
    -    return this.contents.pipe(stream, opt);
    -  }
    -  if (this.isBuffer()) {
    -    if (opt.end) {
    -      stream.end(this.contents);
    -    } else {
    -      stream.write(this.contents);
    -    }
    -    return stream;
    -  }
    - 
    -  // isNull
    -  if (opt.end) stream.end();
    -  return stream;
    -};
    - 
    -File.prototype.inspect = function() {
    -  var inspect = [];
    - 
    -  // use relative path if possible
    -  var filePath = (this.base && this.path) ? this.relative : this.path;
    - 
    -  if (filePath) {
    -    inspect.push('"'+filePath+'"');
    -  }
    - 
    -  if (this.isBuffer()) {
    -    inspect.push(this.contents.inspect());
    -  }
    - 
    -  if (this.isStream()) {
    -    inspect.push(inspectStream(this.contents));
    -  }
    - 
    -  return '<File '+inspect.join(' ')+'>';
    -};
    - 
    -// virtual attributes
    -// or stuff with extra logic
    -Object.defineProperty(File.prototype, 'contents', {
    -  get: function() {
    -    return this._contents;
    -  },
    -  set: function(val) {
    -    if (!isBuffer(val) && !isStream(val) && !isNull(val)) {
    -      throw new Error('File.contents can only be a Buffer, a Stream, or null.');
    -    }
    -    this._contents = val;
    -  }
    -});
    - 
    -// TODO: should this be moved to vinyl-fs?
    -Object.defineProperty(File.prototype, 'relative', {
    -  get: function() {
    -    if (!this.base) throw new Error('No base specified! Can not get relative.');
    -    if (!this.path) throw new Error('No path specified! Can not get relative.');
    -    return path.relative(this.base, this.path);
    -  },
    -  set: function() {
    -    throw new Error('File.relative is generated from the base and path attributes. Do not modify it.');
    -  }
    -});
    - 
    -Object.defineProperty(File.prototype, 'path', {
    -  get: function() {
    -    return this.history[this.history.length - 1];
    -  },
    -  set: function(path) {
    -    if (typeof path !== 'string') throw new Error('path should be string');
    - 
    -    // record history only when path changed
    -    if (path && path !== this.path) {
    -      this.history.push(path);
    -    }
    -  }
    -});
    - 
    -module.exports = File;
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html deleted file mode 100644 index db5a686f37..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - Code coverage report for vinyl/lib/cloneBuffer.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/cloneBuffer.js

    -

    - - Statements: 100% (5 / 5)      - - - Branches: 100% (0 / 0)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (5 / 5)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » cloneBuffer.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -81 -  -1 -7 -7 -7 -  - 
    var Buffer = require('buffer').Buffer;
    - 
    -module.exports = function(buf) {
    -  var out = new Buffer(buf.length);
    -  buf.copy(out);
    -  return out;
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html deleted file mode 100644 index e5389556fa..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - Code coverage report for vinyl/lib/ - - - - - - - -
    -

    Code coverage report for vinyl/lib/

    -

    - - Statements: 100% (22 / 22)      - - - Branches: 100% (8 / 8)      - - - Functions: 100% (5 / 5)      - - - Lines: 100% (20 / 20)      - - Ignored: none      -

    -
    All files » vinyl/lib/
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    cloneBuffer.js100%(5 / 5)100%(0 / 0)100%(1 / 1)100%(5 / 5)
    inspectStream.js100%(8 / 8)100%(4 / 4)100%(1 / 1)100%(6 / 6)
    isBuffer.js100%(4 / 4)100%(2 / 2)100%(1 / 1)100%(4 / 4)
    isNull.js100%(2 / 2)100%(0 / 0)100%(1 / 1)100%(2 / 2)
    isStream.js100%(3 / 3)100%(2 / 2)100%(1 / 1)100%(3 / 3)
    -
    -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html deleted file mode 100644 index 4cc79c7d8b..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - Code coverage report for vinyl/lib/inspectStream.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/inspectStream.js

    -

    - - Statements: 100% (8 / 8)      - - - Branches: 100% (4 / 4)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (6 / 6)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » inspectStream.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -121 -  -1 -9 -  -7 -  -7 -  -7 -  - 
    var isStream = require('./isStream');
    - 
    -module.exports = function(stream) {
    -  if (!isStream(stream)) return;
    - 
    -  var streamType = stream.constructor.name;
    -  // avoid StreamStream
    -  if (streamType === 'Stream') streamType = '';
    - 
    -  return '<'+streamType+'Stream>';
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html deleted file mode 100644 index b8d03cf3c7..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - Code coverage report for vinyl/lib/isBuffer.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isBuffer.js

    -

    - - Statements: 100% (4 / 4)      - - - Branches: 100% (2 / 2)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (4 / 4)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isBuffer.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -71 -1 -  -  -1 -108 - 
    var buf = require('buffer');
    -var Buffer = buf.Buffer;
    - 
    -// could use Buffer.isBuffer but this is the same exact thing...
    -module.exports = function(o) {
    -  return typeof o === 'object' && o instanceof Buffer;
    -};
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html deleted file mode 100644 index 7db9769a84..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - Code coverage report for vinyl/lib/isNull.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isNull.js

    -

    - - Statements: 100% (2 / 2)      - - - Branches: 100% (0 / 0)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (2 / 2)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isNull.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -41 -57 -  - 
    module.exports = function(v) {
    -  return v === null;
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html deleted file mode 100644 index 6a28a3dec5..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - Code coverage report for vinyl/lib/isStream.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isStream.js

    -

    - - Statements: 100% (3 / 3)      - - - Branches: 100% (2 / 2)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (3 / 3)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isStream.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -51 -  -1 -99 - 
    var Stream = require('stream').Stream;
    - 
    -module.exports = function(o) {
    -  return !!o && o instanceof Stream;
    -};
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov.info b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov.info deleted file mode 100644 index a4ec23afaf..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/coverage/lcov.info +++ /dev/null @@ -1,280 +0,0 @@ -TN: -SF:/Users/contra/Projects/vinyl/index.js -FN:11,File -FN:30,(anonymous_2) -FN:34,(anonymous_3) -FN:38,(anonymous_4) -FN:43,(anonymous_5) -FN:47,(anonymous_6) -FN:81,(anonymous_7) -FN:93,(anonymous_8) -FN:114,(anonymous_9) -FN:138,(anonymous_10) -FN:141,(anonymous_11) -FN:151,(anonymous_12) -FN:156,(anonymous_13) -FN:162,(anonymous_14) -FN:165,(anonymous_15) -FNF:15 -FNH:15 -FNDA:73,File -FNDA:26,(anonymous_2) -FNDA:29,(anonymous_3) -FNDA:6,(anonymous_4) -FNDA:3,(anonymous_5) -FNDA:14,(anonymous_6) -FNDA:75,(anonymous_7) -FNDA:6,(anonymous_8) -FNDA:6,(anonymous_9) -FNDA:99,(anonymous_10) -FNDA:78,(anonymous_11) -FNDA:7,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:46,(anonymous_14) -FNDA:9,(anonymous_15) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:9,1 -DA:11,1 -DA:12,73 -DA:15,73 -DA:16,73 -DA:19,73 -DA:20,73 -DA:24,73 -DA:27,73 -DA:30,1 -DA:31,26 -DA:34,1 -DA:35,29 -DA:38,1 -DA:39,6 -DA:43,1 -DA:44,3 -DA:47,1 -DA:48,14 -DA:49,2 -DA:53,12 -DA:54,7 -DA:59,5 -DA:60,5 -DA:64,14 -DA:65,14 -DA:66,1 -DA:67,1 -DA:68,13 -DA:69,6 -DA:72,14 -DA:81,14 -DA:83,75 -DA:86,70 -DA:88,5 -DA:90,14 -DA:93,1 -DA:94,6 -DA:95,6 -DA:97,6 -DA:98,2 -DA:100,4 -DA:101,2 -DA:102,1 -DA:104,1 -DA:106,2 -DA:110,2 -DA:111,2 -DA:114,1 -DA:115,6 -DA:118,6 -DA:120,6 -DA:121,4 -DA:124,6 -DA:125,3 -DA:128,6 -DA:129,1 -DA:132,6 -DA:137,1 -DA:139,99 -DA:142,78 -DA:143,1 -DA:145,77 -DA:150,1 -DA:152,7 -DA:153,6 -DA:154,5 -DA:157,1 -DA:161,1 -DA:163,46 -DA:166,9 -DA:169,8 -DA:170,5 -DA:175,1 -LF:82 -LH:82 -BRDA:12,1,0,14 -BRDA:12,1,1,59 -BRDA:15,2,0,25 -BRDA:15,2,1,48 -BRDA:16,3,0,73 -BRDA:16,3,1,33 -BRDA:19,4,0,73 -BRDA:19,4,1,32 -BRDA:20,5,0,73 -BRDA:20,5,1,39 -BRDA:24,6,0,73 -BRDA:24,6,1,65 -BRDA:27,7,0,73 -BRDA:27,7,1,44 -BRDA:44,8,0,3 -BRDA:44,8,1,1 -BRDA:44,8,2,1 -BRDA:48,9,0,2 -BRDA:48,9,1,12 -BRDA:53,10,0,7 -BRDA:53,10,1,5 -BRDA:65,11,0,1 -BRDA:65,11,1,13 -BRDA:68,12,0,6 -BRDA:68,12,1,7 -BRDA:69,13,0,5 -BRDA:69,13,1,1 -BRDA:75,14,0,2 -BRDA:75,14,1,12 -BRDA:83,15,0,70 -BRDA:83,15,1,5 -BRDA:83,16,0,75 -BRDA:83,16,1,61 -BRDA:83,16,2,47 -BRDA:83,16,3,33 -BRDA:83,16,4,33 -BRDA:83,16,5,19 -BRDA:88,17,0,2 -BRDA:88,17,1,3 -BRDA:94,18,0,3 -BRDA:94,18,1,3 -BRDA:95,19,0,3 -BRDA:95,19,1,3 -BRDA:97,20,0,2 -BRDA:97,20,1,4 -BRDA:100,21,0,2 -BRDA:100,21,1,2 -BRDA:101,22,0,1 -BRDA:101,22,1,1 -BRDA:110,23,0,1 -BRDA:110,23,1,1 -BRDA:118,24,0,3 -BRDA:118,24,1,3 -BRDA:118,25,0,6 -BRDA:118,25,1,5 -BRDA:120,26,0,4 -BRDA:120,26,1,2 -BRDA:124,27,0,3 -BRDA:124,27,1,3 -BRDA:128,28,0,1 -BRDA:128,28,1,5 -BRDA:142,29,0,1 -BRDA:142,29,1,77 -BRDA:142,30,0,78 -BRDA:142,30,1,57 -BRDA:142,30,2,46 -BRDA:152,31,0,1 -BRDA:152,31,1,6 -BRDA:153,32,0,1 -BRDA:153,32,1,5 -BRDA:166,33,0,1 -BRDA:166,33,1,8 -BRDA:169,34,0,5 -BRDA:169,34,1,3 -BRDA:169,35,0,8 -BRDA:169,35,1,7 -BRF:76 -BRH:76 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/cloneBuffer.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:7,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,7 -DA:5,7 -DA:6,7 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isBuffer.js -FN:5,(anonymous_1) -FNF:1 -FNH:1 -FNDA:108,(anonymous_1) -DA:1,1 -DA:2,1 -DA:5,1 -DA:6,108 -LF:4 -LH:4 -BRDA:6,1,0,108 -BRDA:6,1,1,107 -BRF:2 -BRH:2 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isStream.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:99,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,99 -LF:3 -LH:3 -BRDA:4,1,0,99 -BRDA:4,1,1,40 -BRF:2 -BRH:2 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isNull.js -FN:1,(anonymous_1) -FNF:1 -FNH:1 -FNDA:57,(anonymous_1) -DA:1,1 -DA:2,57 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/inspectStream.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:9,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,9 -DA:6,7 -DA:8,7 -DA:10,7 -LF:6 -LH:6 -BRDA:4,1,0,2 -BRDA:4,1,1,7 -BRDA:8,2,0,1 -BRDA:8,2,1,6 -BRF:4 -BRH:4 -end_of_record diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/index.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/index.js index 7e1b58454f..9aa47b78f1 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/index.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/index.js @@ -1,175 +1,175 @@ -var path = require('path'); -var clone = require('lodash').clone; -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: false, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; +var path = require('path'); +var clone = require('clone'); +var cloneStats = require('clone-stats'); +var cloneBuffer = require('./lib/cloneBuffer'); +var isBuffer = require('./lib/isBuffer'); +var isStream = require('./lib/isStream'); +var isNull = require('./lib/isNull'); +var inspectStream = require('./lib/inspectStream'); +var Stream = require('stream'); + +function File(file) { + if (!file) file = {}; + + // record path change + var history = file.path ? [file.path] : file.history; + this.history = history || []; + + // TODO: should this be moved to vinyl-fs? + this.cwd = file.cwd || process.cwd(); + this.base = file.base || this.cwd; + + // stat = fs stats object + // TODO: should this be moved to vinyl-fs? + this.stat = file.stat || null; + + // contents = stream, buffer, or null if not read + this.contents = file.contents || null; +} + +File.prototype.isBuffer = function() { + return isBuffer(this.contents); +}; + +File.prototype.isStream = function() { + return isStream(this.contents); +}; + +File.prototype.isNull = function() { + return isNull(this.contents); +}; + +// TODO: should this be moved to vinyl-fs? +File.prototype.isDirectory = function() { + return this.isNull() && this.stat && this.stat.isDirectory(); +}; + +File.prototype.clone = function(opt) { + if (typeof opt === 'boolean') { + opt = { + deep: opt, + contents: true + }; + } else if (!opt) { + opt = { + deep: false, + contents: true + }; + } else { + opt.deep = opt.deep === true; + opt.contents = opt.contents !== false; + } + + // clone our file contents + var contents; + if (this.isStream()) { + contents = this.contents.pipe(new Stream.PassThrough()); + this.contents = this.contents.pipe(new Stream.PassThrough()); + } else if (this.isBuffer()) { + contents = opt.contents ? cloneBuffer(this.contents) : this.contents; + } + + var file = new File({ + cwd: this.cwd, + base: this.base, + stat: (this.stat ? cloneStats(this.stat) : null), + history: this.history.slice(), + contents: contents + }); + + // clone our custom properties + Object.keys(this).forEach(function(key) { + // ignore built-in fields + if (key === '_contents' || key === 'stat' || + key === 'history' || key === 'path' || + key === 'base' || key === 'cwd') { + return; + } + file[key] = opt.deep ? clone(this[key], true) : this[key]; + }, this); + return file; +}; + +File.prototype.pipe = function(stream, opt) { + if (!opt) opt = {}; + if (typeof opt.end === 'undefined') opt.end = true; + + if (this.isStream()) { + return this.contents.pipe(stream, opt); + } + if (this.isBuffer()) { + if (opt.end) { + stream.end(this.contents); + } else { + stream.write(this.contents); + } + return stream; + } + + // isNull + if (opt.end) stream.end(); + return stream; +}; + +File.prototype.inspect = function() { + var inspect = []; + + // use relative path if possible + var filePath = (this.base && this.path) ? this.relative : this.path; + + if (filePath) { + inspect.push('"'+filePath+'"'); + } + + if (this.isBuffer()) { + inspect.push(this.contents.inspect()); + } + + if (this.isStream()) { + inspect.push(inspectStream(this.contents)); + } + + return ''; +}; + +// virtual attributes +// or stuff with extra logic +Object.defineProperty(File.prototype, 'contents', { + get: function() { + return this._contents; + }, + set: function(val) { + if (!isBuffer(val) && !isStream(val) && !isNull(val)) { + throw new Error('File.contents can only be a Buffer, a Stream, or null.'); + } + this._contents = val; + } +}); + +// TODO: should this be moved to vinyl-fs? +Object.defineProperty(File.prototype, 'relative', { + get: function() { + if (!this.base) throw new Error('No base specified! Can not get relative.'); + if (!this.path) throw new Error('No path specified! Can not get relative.'); + return path.relative(this.base, this.path); + }, + set: function() { + throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); + } +}); + +Object.defineProperty(File.prototype, 'path', { + get: function() { + return this.history[this.history.length - 1]; + }, + set: function(path) { + if (typeof path !== 'string') throw new Error('path should be string'); + + // record history only when path changed + if (path && path !== this.path) { + this.history.push(path); + } + } +}); + +module.exports = File; diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/cloneBuffer.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/cloneBuffer.js index 13973712e6..89f09eda13 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/cloneBuffer.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/cloneBuffer.js @@ -1,7 +1,7 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; +var Buffer = require('buffer').Buffer; + +module.exports = function(buf) { + var out = new Buffer(buf.length); + buf.copy(out); + return out; +}; diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/inspectStream.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/inspectStream.js index c484a33dcd..d36df6ff66 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/inspectStream.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/inspectStream.js @@ -1,11 +1,11 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; +var isStream = require('./isStream'); + +module.exports = function(stream) { + if (!isStream(stream)) return; + + var streamType = stream.constructor.name; + // avoid StreamStream + if (streamType === 'Stream') streamType = ''; + + return '<'+streamType+'Stream>'; +}; diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isBuffer.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isBuffer.js index da2bcb2631..0e23782c41 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isBuffer.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isBuffer.js @@ -1,7 +1,7 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; +var buf = require('buffer'); +var Buffer = buf.Buffer; + +// could use Buffer.isBuffer but this is the same exact thing... +module.exports = function(o) { + return typeof o === 'object' && o instanceof Buffer; }; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isNull.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isNull.js index 5d950dc476..7f22c63ae8 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isNull.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isNull.js @@ -1,3 +1,3 @@ -module.exports = function(v) { - return v === null; -}; +module.exports = function(v) { + return v === null; +}; diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isStream.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isStream.js index 33f7850e17..9ce0929b03 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isStream.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/lib/isStream.js @@ -1,5 +1,5 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; +var Stream = require('stream').Stream; + +module.exports = function(o) { + return !!o && o instanceof Stream; }; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/LICENSE.md b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/LICENSE.md index a23ecfb40b..146cb32a7d 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/LICENSE.md +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/LICENSE.md @@ -1,21 +1,21 @@ -## The MIT License (MIT) ## - -Copyright (c) 2014 Hugh Kennedy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +## The MIT License (MIT) ## + +Copyright (c) 2014 Hugh Kennedy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/README.md b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/README.md index 35dfb2ad2e..8b12b6fa5e 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/README.md +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/README.md @@ -1,17 +1,17 @@ -# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) # - -Safely clone node's -[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without -losing their class methods, i.e. `stat.isDirectory()` and co. - -## Usage ## - -[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats) - -### `copy = require('clone-stats')(stat)` ### - -Returns a clone of the original `fs.Stats` instance (`stat`). - -## License ## - -MIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details. +# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) # + +Safely clone node's +[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without +losing their class methods, i.e. `stat.isDirectory()` and co. + +## Usage ## + +[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats) + +### `copy = require('clone-stats')(stat)` ### + +Returns a clone of the original `fs.Stats` instance (`stat`). + +## License ## + +MIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details. diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/index.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/index.js index 23a2e4c8f5..e797cfe6eb 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/index.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/index.js @@ -1,13 +1,13 @@ -var Stat = require('fs').Stats - -module.exports = cloneStats - -function cloneStats(stats) { - var replacement = new Stat - - Object.keys(stats).forEach(function(key) { - replacement[key] = stats[key] - }) - - return replacement -} +var Stat = require('fs').Stats + +module.exports = cloneStats + +function cloneStats(stats) { + var replacement = new Stat + + Object.keys(stats).forEach(function(key) { + replacement[key] = stats[key] + }) + + return replacement +} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/package.json b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/package.json index e8d355860c..76699ca0f0 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/package.json +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/package.json @@ -1,57 +1,57 @@ -{ - "name": "clone-stats", - "description": "Safely clone node's fs.Stats instances without losing their class methods", - "version": "0.0.1", - "main": "index.js", - "browser": "index.js", - "dependencies": {}, - "devDependencies": { - "tape": "~2.3.2" - }, - "scripts": { - "test": "node test" - }, - "author": { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com", - "url": "http://hughsk.io/" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/hughsk/clone-stats" - }, - "bugs": { - "url": "https://github.com/hughsk/clone-stats/issues" - }, - "homepage": "https://github.com/hughsk/clone-stats", - "keywords": [ - "stats", - "fs", - "clone", - "copy", - "prototype" - ], - "readme": "# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #\n\nSafely clone node's\n[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without\nlosing their class methods, i.e. `stat.isDirectory()` and co.\n\n## Usage ##\n\n[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats)\n\n### `copy = require('clone-stats')(stat)` ###\n\nReturns a clone of the original `fs.Stats` instance (`stat`).\n\n## License ##\n\nMIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details.\n", - "readmeFilename": "README.md", - "_id": "clone-stats@0.0.1", - "dist": { - "shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", - "tarball": "http://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - }, - "_from": "clone-stats@^0.0.1", - "_npmVersion": "1.3.22", - "_npmUser": { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - }, - "maintainers": [ - { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - } - ], - "directories": {}, - "_shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", - "_resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" -} +{ + "name": "clone-stats", + "description": "Safely clone node's fs.Stats instances without losing their class methods", + "version": "0.0.1", + "main": "index.js", + "browser": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.3.2" + }, + "scripts": { + "test": "node test" + }, + "author": { + "name": "Hugh Kennedy", + "email": "hughskennedy@gmail.com", + "url": "http://hughsk.io/" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/hughsk/clone-stats" + }, + "bugs": { + "url": "https://github.com/hughsk/clone-stats/issues" + }, + "homepage": "https://github.com/hughsk/clone-stats", + "keywords": [ + "stats", + "fs", + "clone", + "copy", + "prototype" + ], + "readme": "# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #\n\nSafely clone node's\n[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without\nlosing their class methods, i.e. `stat.isDirectory()` and co.\n\n## Usage ##\n\n[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats)\n\n### `copy = require('clone-stats')(stat)` ###\n\nReturns a clone of the original `fs.Stats` instance (`stat`).\n\n## License ##\n\nMIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details.\n", + "readmeFilename": "README.md", + "_id": "clone-stats@0.0.1", + "dist": { + "shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", + "tarball": "http://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" + }, + "_from": "clone-stats@>=0.0.1 <0.0.2", + "_npmVersion": "1.3.22", + "_npmUser": { + "name": "hughsk", + "email": "hughskennedy@gmail.com" + }, + "maintainers": [ + { + "name": "hughsk", + "email": "hughskennedy@gmail.com" + } + ], + "directories": {}, + "_shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", + "_resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" +} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/test.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/test.js index 491d2a3746..e4bb2814d8 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/test.js +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone-stats/test.js @@ -1,36 +1,36 @@ -var test = require('tape') -var clone = require('./') -var fs = require('fs') - -test('file', function(t) { - compare(t, fs.statSync(__filename)) - t.end() -}) - -test('directory', function(t) { - compare(t, fs.statSync(__dirname)) - t.end() -}) - -function compare(t, stat) { - var copy = clone(stat) - - t.deepEqual(stat, copy, 'clone has equal properties') - t.ok(stat instanceof fs.Stats, 'original is an fs.Stat') - t.ok(copy instanceof fs.Stats, 'copy is an fs.Stat') - - ;['isDirectory' - , 'isFile' - , 'isBlockDevice' - , 'isCharacterDevice' - , 'isSymbolicLink' - , 'isFIFO' - , 'isSocket' - ].forEach(function(method) { - t.equal( - stat[method].call(stat) - , copy[method].call(copy) - , 'equal value for stat.' + method + '()' - ) - }) -} +var test = require('tape') +var clone = require('./') +var fs = require('fs') + +test('file', function(t) { + compare(t, fs.statSync(__filename)) + t.end() +}) + +test('directory', function(t) { + compare(t, fs.statSync(__dirname)) + t.end() +}) + +function compare(t, stat) { + var copy = clone(stat) + + t.deepEqual(stat, copy, 'clone has equal properties') + t.ok(stat instanceof fs.Stats, 'original is an fs.Stat') + t.ok(copy instanceof fs.Stats, 'copy is an fs.Stat') + + ;['isDirectory' + , 'isFile' + , 'isBlockDevice' + , 'isCharacterDevice' + , 'isSymbolicLink' + , 'isFIFO' + , 'isSocket' + ].forEach(function(method) { + t.equal( + stat[method].call(stat) + , copy[method].call(copy) + , 'equal value for stat.' + method + '()' + ) + }) +} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.npmignore b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.npmignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.travis.yml b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.travis.yml similarity index 69% rename from node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.travis.yml rename to node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.travis.yml index d4debfb1ea..58f23716ae 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.travis.yml +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/.travis.yml @@ -1,4 +1,5 @@ -language: node_js -node_js: - - 0.10 - - 0.11 +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.10 diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/LICENSE b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/LICENSE new file mode 100644 index 0000000000..fc808cce89 --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/LICENSE @@ -0,0 +1,18 @@ +Copyright © 2011-2014 Paul Vorbach + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/README.md b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/README.md new file mode 100644 index 0000000000..d7231cfca7 --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/README.md @@ -0,0 +1,126 @@ +# clone + +[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) + +offers foolproof _deep cloning_ of variables in JavaScript. + + +## Installation + + npm install clone + +or + + ender build clone + + +## Example + +~~~ javascript +var clone = require('clone'); + +var a, b; + +a = { foo: { bar: 'baz' } }; // initial value of a + +b = clone(a); // clone a -> b +a.foo.bar = 'foo'; // change a + +console.log(a); // show a +console.log(b); // show b +~~~ + +This will print: + +~~~ javascript +{ foo: { bar: 'foo' } } +{ foo: { bar: 'baz' } } +~~~ + +**clone** masters cloning simple objects (even with custom prototype), arrays, +Date objects, and RegExp objects. Everything is cloned recursively, so that you +can clone dates in arrays in objects, for example. + + +## API + +`clone(val, circular, depth)` + + * `val` -- the value that you want to clone, any type allowed + * `circular` -- boolean + + Call `clone` with `circular` set to `false` if you are certain that `obj` + contains no circular references. This will give better performance if needed. + There is no error if `undefined` or `null` is passed as `obj`. + * `depth` -- depth to which the object is to be cloned (optional, + defaults to infinity) + +`clone.clonePrototype(obj)` + + * `obj` -- the object that you want to clone + +Does a prototype clone as +[described by Oran Looney](http://oranlooney.com/functional-javascript/). + + +## Circular References + +~~~ javascript +var a, b; + +a = { hello: 'world' }; + +a.myself = a; +b = clone(a); + +console.log(b); +~~~ + +This will print: + +~~~ javascript +{ hello: "world", myself: [Circular] } +~~~ + +So, `b.myself` points to `b`, not `a`. Neat! + + +## Test + + npm test + + +## Caveat + +Some special objects like a socket or `process.stdout`/`stderr` are known to not +be cloneable. If you find other objects that cannot be cloned, please [open an +issue](https://github.com/pvorb/node-clone/issues/new). + + +## Bugs and Issues + +If you encounter any bugs or issues, feel free to [open an issue at +github](https://github.com/pvorb/node-clone/issues) or send me an email to +. I also always like to hear from you, if you’re using my code. + +## License + +Copyright © 2011-2014 [Paul Vorbach](http://paul.vorba.ch/) and +[contributors](https://github.com/pvorb/node-clone/graphs/contributors). + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/clone.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/clone.js new file mode 100644 index 0000000000..f8fa3159a7 --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/clone.js @@ -0,0 +1,144 @@ +'use strict'; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +// shim for Node's 'util' package +// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). +var util = { + isArray: function (ar) { + return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); + }, + isDate: function (d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; + }, + isRegExp: function (re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; + }, + getRegExpFlags: function (re) { + var flags = ''; + re.global && (flags += 'g'); + re.ignoreCase && (flags += 'i'); + re.multiline && (flags += 'm'); + return flags; + } +}; + + +if (typeof module === 'object') + module.exports = clone; + +/** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). +*/ + +function clone(parent, circular, depth, prototype) { + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth == 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (util.isArray(parent)) { + child = []; + } else if (util.isRegExp(parent)) { + child = new RegExp(parent.source, util.getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (util.isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + child = new Buffer(parent.length); + parent.copy(child); + return child; + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + for (var i in parent) { + var attrs; + if (proto) { + attrs = Object.getOwnPropertyDescriptor(proto, i); + } + + if (attrs && attrs.set == null) { + continue; + } + child[i] = _clone(parent[i], depth - 1); + } + + return child; + } + + return _clone(parent, depth); +} + +/** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ +clone.clonePrototype = function(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); +}; diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/package.json b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/package.json new file mode 100644 index 0000000000..94633177fe --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/package.json @@ -0,0 +1,127 @@ +{ + "name": "clone", + "description": "deep cloning of objects and arrays", + "tags": [ + "clone", + "object", + "array", + "function", + "date" + ], + "version": "0.2.0", + "repository": { + "type": "git", + "url": "git://github.com/pvorb/node-clone.git" + }, + "bugs": { + "url": "https://github.com/pvorb/node-clone/issues" + }, + "main": "clone.js", + "author": { + "name": "Paul Vorbach", + "email": "paul@vorba.ch", + "url": "http://paul.vorba.ch/" + }, + "contributors": [ + { + "name": "Blake Miner", + "email": "miner.blake@gmail.com", + "url": "http://www.blakeminer.com/" + }, + { + "name": "Tian You", + "email": "axqd001@gmail.com", + "url": "http://blog.axqd.net/" + }, + { + "name": "George Stagas", + "email": "gstagas@gmail.com", + "url": "http://stagas.com/" + }, + { + "name": "Tobiasz Cudnik", + "email": "tobiasz.cudnik@gmail.com", + "url": "https://github.com/TobiaszCudnik" + }, + { + "name": "Pavel Lang", + "email": "langpavel@phpskelet.org", + "url": "https://github.com/langpavel" + }, + { + "name": "Dan MacTough", + "url": "http://yabfog.com/" + }, + { + "name": "w1nk", + "url": "https://github.com/w1nk" + }, + { + "name": "Hugh Kennedy", + "url": "http://twitter.com/hughskennedy" + }, + { + "name": "Dustin Diaz", + "url": "http://dustindiaz.com" + }, + { + "name": "Ilya Shaisultanov", + "url": "https://github.com/diversario" + }, + { + "name": "Nathan MacInnes", + "email": "nathan@macinn.es", + "url": "http://macinn.es/" + }, + { + "name": "Benjamin E. Coe", + "email": "ben@npmjs.com", + "url": "https://twitter.com/benjamincoe" + }, + { + "name": "Nathan Zadoks", + "url": "https://github.com/nathan7" + }, + { + "name": "Róbert Oroszi", + "email": "robert+gh@oroszi.net", + "url": "https://github.com/oroce" + } + ], + "license": "MIT", + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": { + "underscore": "*", + "nodeunit": "*" + }, + "optionalDependencies": {}, + "scripts": { + "test": "nodeunit test.js" + }, + "gitHead": "bb11a43363a0f69e8ac014cb5376ce215ea1f8fd", + "homepage": "https://github.com/pvorb/node-clone", + "_id": "clone@0.2.0", + "_shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", + "_from": "clone@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.14", + "_npmUser": { + "name": "pvorb", + "email": "paul@vorba.ch" + }, + "maintainers": [ + { + "name": "pvorb", + "email": "paul@vorb.de" + } + ], + "dist": { + "shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", + "tarball": "http://registry.npmjs.org/clone/-/clone-0.2.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/test.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/test.js new file mode 100644 index 0000000000..cb3d16631a --- /dev/null +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/node_modules/clone/test.js @@ -0,0 +1,289 @@ +if(module.parent === null) { + console.log('Run this test file with nodeunit:'); + console.log('$ nodeunit test.js'); +} + + +var clone = require('./'); +var util = require('util'); +var _ = require('underscore'); + + + +exports["clone string"] = function(test) { + test.expect(2); // how many tests? + + var a = "foo"; + test.strictEqual(clone(a), a); + a = ""; + test.strictEqual(clone(a), a); + + test.done(); +}; + + + +exports["clone number"] = function(test) { + test.expect(5); // how many tests? + + var a = 0; + test.strictEqual(clone(a), a); + a = 1; + test.strictEqual(clone(a), a); + a = -1000; + test.strictEqual(clone(a), a); + a = 3.1415927; + test.strictEqual(clone(a), a); + a = -3.1415927; + test.strictEqual(clone(a), a); + + test.done(); +}; + + + +exports["clone date"] = function(test) { + test.expect(3); // how many tests? + + var a = new Date; + var c = clone(a); + test.ok(a instanceof Date); + test.ok(c instanceof Date); + test.equal(c.getTime(), a.getTime()); + + test.done(); +}; + + + +exports["clone object"] = function(test) { + test.expect(2); // how many tests? + + var a = { foo: { bar: "baz" } }; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + + + +exports["clone array"] = function(test) { + test.expect(2); // how many tests? + + var a = [ + { foo: "bar" }, + "baz" + ]; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + +exports["clone buffer"] = function(test) { + test.expect(1); + + var a = new Buffer("this is a test buffer"); + var b = clone(a); + + // no underscore equal since it has no concept of Buffers + test.deepEqual(b, a); + test.done(); +}; + + + +exports["clone regexp"] = function(test) { + test.expect(5); + + var a = /abc123/gi; + var b = clone(a); + + test.deepEqual(b, a); + + var c = /a/g; + test.ok(c.lastIndex === 0); + + c.exec('123a456a'); + test.ok(c.lastIndex === 4); + + var d = clone(c); + test.ok(d.global); + test.ok(d.lastIndex === 4); + + test.done(); +}; + + +exports["clone object containing array"] = function(test) { + test.expect(2); // how many tests? + + var a = { + arr1: [ { a: '1234', b: '2345' } ], + arr2: [ { c: '345', d: '456' } ] + }; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + + + +exports["clone object with circular reference"] = function(test) { + test.expect(8); // how many tests? + + var _ = test.ok; + var c = [1, "foo", {'hello': 'bar'}, function() {}, false, [2]]; + var b = [c, 2, 3, 4]; + var a = {'b': b, 'c': c}; + a.loop = a; + a.loop2 = a; + c.loop = c; + c.aloop = a; + var aCopy = clone(a); + _(a != aCopy); + _(a.c != aCopy.c); + _(aCopy.c == aCopy.b[0]); + _(aCopy.c.loop.loop.aloop == aCopy); + _(aCopy.c[0] == a.c[0]); + + //console.log(util.inspect(aCopy, true, null) ); + //console.log("------------------------------------------------------------"); + //console.log(util.inspect(a, true, null) ); + _(eq(a, aCopy)); + aCopy.c[0] = 2; + _(!eq(a, aCopy)); + aCopy.c = "2"; + _(!eq(a, aCopy)); + //console.log("------------------------------------------------------------"); + //console.log(util.inspect(aCopy, true, null) ); + + function eq(x, y) { + return util.inspect(x, true, null) === util.inspect(y, true, null); + } + + test.done(); +}; + + + +exports['clonePrototype'] = function(test) { + test.expect(3); // how many tests? + + var a = { + a: "aaa", + x: 123, + y: 45.65 + }; + var b = clone.clonePrototype(a); + + test.strictEqual(b.a, a.a); + test.strictEqual(b.x, a.x); + test.strictEqual(b.y, a.y); + + test.done(); +} + +exports['cloneWithinNewVMContext'] = function(test) { + test.expect(3); + var vm = require('vm'); + var ctx = vm.createContext({ clone: clone }); + var script = "clone( {array: [1, 2, 3], date: new Date(), regex: /^foo$/ig} );"; + var results = vm.runInContext(script, ctx); + test.ok(results.array instanceof Array); + test.ok(results.date instanceof Date); + test.ok(results.regex instanceof RegExp); + test.done(); +} + +exports['cloneObjectWithNoConstructor'] = function(test) { + test.expect(3); + var n = null; + var a = { foo: 'bar' }; + a.__proto__ = n; + test.ok(typeof a === 'object'); + test.ok(typeof a !== null); + var b = clone(a); + test.ok(a.foo, b.foo); + test.done(); +} + +exports['clone object with depth argument'] = function (test) { + test.expect(6); + var a = { + foo: { + bar : { + baz : 'qux' + } + } + }; + var b = clone(a, false, 1); + test.deepEqual(b, a); + test.notEqual(b, a); + test.strictEqual(b.foo, a.foo); + + b = clone(a, true, 2); + test.deepEqual(b, a); + test.notEqual(b.foo, a.foo); + test.strictEqual(b.foo.bar, a.foo.bar); + test.done(); +} + +exports['maintain prototype chain in clones'] = function (test) { + test.expect(1); + function Constructor() {} + var a = new Constructor(); + var b = clone(a); + test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); + test.done(); +} + +exports['parent prototype is overriden with prototype provided'] = function (test) { + test.expect(1); + function Constructor() {} + var a = new Constructor(); + var b = clone(a, true, Infinity, null); + test.strictEqual(b.__defineSetter__, undefined); + test.done(); +} + +exports['clone object with null children'] = function(test) { + test.expect(1); + var a = { + foo: { + bar: null, + baz: { + qux: false + } + } + }; + var b = clone(a); + test.deepEqual(b, a); + test.done(); +} + +exports['clone instance with getter'] = function(test) { + test.expect(1); + function Ctor() {}; + Object.defineProperty(Ctor.prototype, 'prop', { + configurable: true, + enumerable: true, + get: function() { + return 'value'; + } + }); + + var a = new Ctor(); + var b = clone(a); + + test.strictEqual(b.prop, 'value'); + test.done(); +}; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/package.json b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/package.json index 364e495d4e..c94ac8ef65 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/package.json +++ b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/package.json @@ -1,69 +1,75 @@ -{ - "name": "vinyl", - "description": "A virtual file format", - "version": "0.4.3", - "homepage": "http://github.com/wearefractal/vinyl", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "author": { - "name": "Fractal", - "email": "contact@wearefractal.com", - "url": "http://wearefractal.com/" - }, - "main": "./index.js", - "dependencies": { - "clone-stats": "^0.0.1", - "lodash": "^2.4.1" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^4.0.4", - "mocha-lcov-reporter": "^0.0.1", - "coveralls": "^2.6.1", - "istanbul": "^0.3.0", - "rimraf": "^2.2.5", - "jshint": "^2.4.1", - "buffer-equal": "0.0.1", - "lodash.templatesettings": "^2.4.1", - "event-stream": "^3.1.0" - }, - "scripts": { - "test": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter spec && jshint .", - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" - }, - "engines": { - "node": ">= 0.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "gitHead": "6eae432519b007c313a8df83b093adfb97a2944c", - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "_id": "vinyl@0.4.3", - "_shasum": "19f61a1b28e72b4c50697889dbe91d7503943ecf", - "_from": "vinyl@^0.4.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "fractal", - "email": "contact@wearefractal.com" - }, - "maintainers": [ - { - "name": "fractal", - "email": "contact@wearefractal.com" - } - ], - "dist": { - "shasum": "19f61a1b28e72b4c50697889dbe91d7503943ecf", - "tarball": "http://registry.npmjs.org/vinyl/-/vinyl-0.4.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.3.tgz" -} +{ + "name": "vinyl", + "description": "A virtual file format", + "version": "0.4.6", + "homepage": "http://github.com/wearefractal/vinyl", + "repository": { + "type": "git", + "url": "git://github.com/wearefractal/vinyl.git" + }, + "author": { + "name": "Fractal", + "email": "contact@wearefractal.com", + "url": "http://wearefractal.com/" + }, + "main": "./index.js", + "files": [ + "index.js", + "lib" + ], + "dependencies": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + }, + "devDependencies": { + "mocha": "^2.0.0", + "should": "^4.0.4", + "mocha-lcov-reporter": "^0.0.1", + "coveralls": "^2.6.1", + "istanbul": "^0.3.0", + "rimraf": "^2.2.5", + "jshint": "^2.4.1", + "buffer-equal": "0.0.1", + "lodash.templatesettings": "^2.4.1", + "event-stream": "^3.1.0" + }, + "scripts": { + "test": "mocha --reporter spec && jshint lib", + "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engines": { + "node": ">= 0.9" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" + } + ], + "gitHead": "8255a5f1de7fecb1cd5e7ba7ac1ec997395f6be1", + "bugs": { + "url": "https://github.com/wearefractal/vinyl/issues" + }, + "_id": "vinyl@0.4.6", + "_shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", + "_from": "vinyl@>=0.4.3 <0.5.0", + "_npmVersion": "2.1.6", + "_nodeVersion": "0.10.33", + "_npmUser": { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + "maintainers": [ + { + "name": "fractal", + "email": "contact@wearefractal.com" + } + ], + "dist": { + "shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", + "tarball": "http://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/perf/clone.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/perf/clone.js deleted file mode 100644 index f51d7f72d5..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/perf/clone.js +++ /dev/null @@ -1,59 +0,0 @@ -var File = require('../'); - -var contents = new Buffer('blah blah blah'); - -var originalFile = new File({ - path: 'yo.coffee', - contents: contents -}); - -// simulate some history -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; - -originalFile.ast = { - a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { - - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } -}; - -for (var i = 0; i < 10000; i++) { - originalFile.clone(true).ast; -} \ No newline at end of file diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/File.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/File.js deleted file mode 100644 index 0eb97765c9..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/File.js +++ /dev/null @@ -1,753 +0,0 @@ -var Stream = require('stream'); -var fs = require('fs'); -var path = require('path'); -var es = require('event-stream'); -var File = require('../'); - -var should = require('should'); -require('mocha'); - -describe('File', function() { - describe('constructor()', function() { - it('should default cwd to process.cwd', function(done) { - var file = new File(); - file.cwd.should.equal(process.cwd()); - done(); - }); - - it('should default base to cwd', function(done) { - var cwd = '/'; - var file = new File({cwd: cwd}); - file.base.should.equal(cwd); - done(); - }); - - it('should default base to cwd even when none is given', function(done) { - var file = new File(); - file.base.should.equal(process.cwd()); - done(); - }); - - it('should default path to null', function(done) { - var file = new File(); - should.not.exist(file.path); - done(); - }); - - it('should default history to []', function(done) { - var file = new File(); - file.history.should.eql([]); - done(); - }); - - it('should default stat to null', function(done) { - var file = new File(); - should.not.exist(file.stat); - done(); - }); - - it('should default contents to null', function(done) { - var file = new File(); - should.not.exist(file.contents); - done(); - }); - - it('should set base to given value', function(done) { - var val = '/'; - var file = new File({base: val}); - file.base.should.equal(val); - done(); - }); - - it('should set cwd to given value', function(done) { - var val = '/'; - var file = new File({cwd: val}); - file.cwd.should.equal(val); - done(); - }); - - it('should set path to given value', function(done) { - var val = '/test.coffee'; - var file = new File({path: val}); - file.path.should.equal(val); - file.history.should.eql([val]); - done(); - }); - - it('should set history to given value', function(done) { - var val = '/test.coffee'; - var file = new File({history: [val]}); - file.path.should.equal(val); - file.history.should.eql([val]); - done(); - }); - - it('should set stat to given value', function(done) { - var val = {}; - var file = new File({stat: val}); - file.stat.should.equal(val); - done(); - }); - - it('should set contents to given value', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.contents.should.equal(val); - done(); - }); - }); - - describe('isBuffer()', function() { - it('should return true when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isBuffer().should.equal(true); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isBuffer().should.equal(false); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isBuffer().should.equal(false); - done(); - }); - }); - - describe('isStream()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isStream().should.equal(false); - done(); - }); - - it('should return true when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isStream().should.equal(true); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isStream().should.equal(false); - done(); - }); - }); - - describe('isNull()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isNull().should.equal(true); - done(); - }); - }); - - describe('isDirectory()', function() { - var fakeStat = { - isDirectory: function() { - return true; - } - }; - - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null, stat: fakeStat}); - file.isDirectory().should.equal(true); - done(); - }); - }); - - describe('clone()', function() { - it('should copy all attributes over with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.not.equal(file.contents, 'buffer ref should be different'); - file2.contents.toString('utf8').should.equal(file.contents.toString('utf8')); - done(); - }); - - it('should copy buffer\'s reference with option contents: false', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test') - }; - - var file = new File(options); - - var copy1 = file.clone({ contents: false }); - copy1.contents.should.equal(file.contents); - - var copy2 = file.clone({}); - copy2.contents.should.not.equal(file.contents); - - var copy3 = file.clone({ contents: 'any string' }); - copy3.contents.should.not.equal(file.contents); - - done(); - }); - - it('should copy all attributes over with Stream', function(done) { - var contents = new Stream.PassThrough(); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: contents - }; - var file = new File(options); - var file2 = file.clone(); - - contents.write(new Buffer('wa')); - - process.nextTick(function() { - contents.write(new Buffer('dup')); - contents.end(); - }); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.not.equal(file.contents, 'stream ref should not be the same'); - file.contents.pipe(es.wait(function(err, data) { - file2.contents.pipe(es.wait(function(err, data2) { - data2.should.not.equal(data, 'stream contents ref should not be the same'); - data2.should.eql(data, 'stream contents should be the same'); - })); - })); - done(); - }); - - it('should copy all attributes over with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - should.not.exist(file2.contents); - done(); - }); - - it('should properly clone the `stat` property', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test'), - stat: fs.statSync(__filename) - }; - - var file = new File(options); - var copy = file.clone(); - - copy.stat.isFile().should.equal(true); - copy.stat.isDirectory().should.equal(false); - should(file.stat instanceof fs.Stats).equal(true); - should(copy.stat instanceof fs.Stats).equal(true); - - done(); - }); - - it('should properly clone the `history` property', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test'), - stat: fs.statSync(__filename) - }; - - var file = new File(options); - var copy = file.clone(); - - copy.history[0].should.equal(options.path); - copy.path = 'lol'; - file.path.should.not.equal(copy.path); - done(); - }); - - it('should copy custom properties', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.custom = { a: 'custom property' }; - - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.custom.should.equal(file.custom); - file2.custom.a.should.equal(file.custom.a); - - done(); - }); - - it('should copy history', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.path = '/test/test.js'; - file.path = '/test/test-938di2s.js'; - var file2 = file.clone(); - - file2.history.should.eql([ - '/test/test.coffee', - '/test/test.js', - '/test/test-938di2s.js' - ]); - file2.history.should.not.equal([ - '/test/test.coffee', - '/test/test.js', - '/test/test-938di2s.js' - ]); - file2.path.should.eql('/test/test-938di2s.js'); - - done(); - }); - - it('should copy all attributes deeply', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.custom = { a: 'custom property' }; - - var file2 = file.clone(true); - file2.custom.should.eql(file.custom); - file2.custom.should.not.equal(file.custom); - file2.custom.a.should.equal(file.custom.a); - - var file3 = file.clone({ deep: true }); - file3.custom.should.eql(file.custom); - file3.custom.should.not.equal(file.custom); - file3.custom.a.should.equal(file.custom.a); - - var file4 = file.clone(false); - file4.custom.should.eql(file.custom); - file4.custom.should.equal(file.custom); - file4.custom.a.should.equal(file.custom.a); - - var file5 = file.clone({ deep: false }); - file5.custom.should.eql(file.custom); - file5.custom.should.equal(file.custom); - file5.custom.a.should.equal(file.custom.a); - - done(); - }); - }); - - describe('pipe()', function() { - it('should write to stream with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - }); - stream.on('end', function() { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer('test'); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function() { - throw new Error('should not write'); - }); - stream.on('end', function() { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should write to stream with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - done(); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer('test'); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function() { - throw new Error('should not write'); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - process.nextTick(done); - }); - }); - - describe('inspect()', function() { - it('should return correct format when no contents and no path', function(done) { - var file = new File(); - file.inspect().should.equal(''); - done(); - }); - - it('should return correct format when Buffer and no path', function(done) { - var val = new Buffer('test'); - var file = new File({ - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and relative path', function(done) { - var val = new Buffer('test'); - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and only path and no base', function(done) { - var val = new Buffer('test'); - var file = new File({ - cwd: '/', - path: '/test/test.coffee', - contents: val - }); - delete file.base; - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Stream and relative path', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when null and relative path', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }); - file.inspect().should.equal(''); - done(); - }); - }); - - describe('contents get/set', function() { - it('should work with Buffer', function(done) { - var val = new Buffer('test'); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with Stream', function(done) { - var val = new Stream.PassThrough(); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with null', function(done) { - var val = null; - var file = new File(); - file.contents = val; - (file.contents === null).should.equal(true); - done(); - }); - - it('should not work with string', function(done) { - var val = 'test'; - var file = new File(); - try { - file.contents = val; - } catch (err) { - should.exist(err); - done(); - } - }); - }); - - describe('relative get/set', function() { - it('should error on set', function(done) { - var file = new File(); - try { - file.relative = 'test'; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no base', function(done) { - var a; - var file = new File(); - delete file.base; - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no path', function(done) { - var a; - var file = new File(); - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should return a relative path from base', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee' - }); - file.relative.should.equal('test.coffee'); - done(); - }); - - it('should return a relative path from cwd', function(done) { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - file.relative.should.equal(path.join('test','test.coffee')); - done(); - }); - }); - - describe('path get/set', function() { - - it('should record history when instantiation', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - }); - - it('should record history when path change', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path = '/test/test.js'; - file.path.should.eql('/test/test.js'); - file.history.should.eql(['/test/test.coffee', '/test/test.js']); - - file.path = '/test/test.coffee'; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee', '/test/test.js', '/test/test.coffee']); - }); - - it('should not record history when set the same path', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path = '/test/test.coffee'; - file.path = '/test/test.coffee'; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - - // ignore when set empty string - file.path = ''; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - }); - - it('should throw when set path null', function() { - var file = new File({ - cwd: '/', - path: null - }); - - should.not.exist(file.path); - file.history.should.eql([]); - - (function() { - file.path = null; - }).should.throw('path should be string'); - }); - }); -}); diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/cloneBuffer.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/cloneBuffer.js deleted file mode 100644 index 31f30fe8ac..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/cloneBuffer.js +++ /dev/null @@ -1,27 +0,0 @@ -var cloneBuffer = require('../lib/cloneBuffer'); -var should = require('should'); -require('mocha'); - -describe('cloneBuffer()', function() { - it('should return a new Buffer reference', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - should.exist(testBuffer2, 'should return something'); - (testBuffer2 instanceof Buffer).should.equal(true, 'should return a Buffer'); - testBuffer2.should.not.equal(testBuffer, 'pointer should change'); - done(); - }); - - it('should not replicate modifications to the original buffer', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - // test that changes dont modify both pointers - testBuffer2.write('w'); - - testBuffer.toString('utf8').should.equal('test', 'original should stay the same'); - testBuffer2.toString('utf8').should.equal('west', 'new buffer should be modified'); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/inspectStream.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/inspectStream.js deleted file mode 100644 index 4bef458ae6..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/inspectStream.js +++ /dev/null @@ -1,53 +0,0 @@ -var inspectStream = require('../lib/inspectStream'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('inspectStream()', function() { - it('should work on a core Stream', function(done) { - var testStream = new Stream(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Readable Stream', function(done) { - var testStream = new Stream.Readable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Writable Stream', function(done) { - var testStream = new Stream.Writable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Duplex Stream', function(done) { - var testStream = new Stream.Duplex(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Transform Stream', function(done) { - var testStream = new Stream.Transform(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core PassThrough Stream', function(done) { - var testStream = new Stream.PassThrough(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should not work on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - should.not.exist(inspectStream(testBuffer)); - done(); - }); - - it('should not work on a null', function(done) { - should.not.exist(inspectStream(null)); - done(); - }); -}); \ No newline at end of file diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isBuffer.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isBuffer.js deleted file mode 100644 index 6796844e9a..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isBuffer.js +++ /dev/null @@ -1,29 +0,0 @@ -var isBuffer = require('../lib/isBuffer'); -var Stream = require('stream'); -require('should'); -require('mocha'); - -describe('isBuffer()', function() { - it('should return true on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isBuffer(testBuffer).should.equal(true); - done(); - }); - - it('should return false on a Stream', function(done) { - var testStream = new Stream(); - isBuffer(testStream).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isBuffer(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isBuffer(testArray).should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isNull.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isNull.js deleted file mode 100644 index 7e741f706d..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isNull.js +++ /dev/null @@ -1,22 +0,0 @@ -var isNull = require('../lib/isNull'); -require('should'); -require('mocha'); - -describe('isNull()', function() { - it('should return true on null', function(done) { - isNull(null).should.equal(true); - done(); - }); - - it('should return false on undefined', function(done) { - isNull().should.equal(false); - isNull(undefined).should.equal(false); - done(); - }); - - it('should return false on defined values', function(done) { - isNull(1).should.equal(false); - isNull('test').should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isStream.js b/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isStream.js deleted file mode 100644 index be033352b9..0000000000 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/test/isStream.js +++ /dev/null @@ -1,29 +0,0 @@ -var isStream = require('../lib/isStream'); -var Stream = require('stream'); -require('should'); -require('mocha'); - -describe('isStream()', function() { - it('should return true on a Stream', function(done) { - var testStream = new Stream(); - isStream(testStream).should.equal(true); - done(); - }); - - it('should return false on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isStream(testBuffer).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isStream(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isStream(testArray).should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/gulp-util/package.json b/node_modules/gulp/node_modules/gulp-util/package.json index 5f5cc2cb0f..1fc1e4703d 100644 --- a/node_modules/gulp/node_modules/gulp-util/package.json +++ b/node_modules/gulp/node_modules/gulp-util/package.json @@ -1,76 +1,91 @@ -{ - "name": "gulp-util", - "description": "Utility functions for gulp plugins", - "version": "3.0.1", - "homepage": "http://github.com/wearefractal/gulp-util", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/gulp-util.git" - }, - "author": { - "name": "Fractal", - "email": "contact@wearefractal.com", - "url": "http://wearefractal.com/" - }, - "main": "./index.js", - "dependencies": { - "chalk": "^0.5.0", - "dateformat": "^1.0.7-1.2.3", - "lodash": "^2.4.1", - "lodash._reinterpolate": "^2.4.1", - "lodash.template": "^2.4.1", - "minimist": "^1.1.0", - "multipipe": "^0.1.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^4.0.0", - "mocha-lcov-reporter": "^0.0.1", - "coveralls": "^2.7.0", - "istanbul": "^0.3.0", - "rimraf": "^2.2.5", - "jshint": "^2.4.1", - "buffer-equal": "~0.0.1", - "lodash.templatesettings": "^2.4.1", - "event-stream": "^3.1.0" - }, - "scripts": { - "test": "mocha --reporter spec && jshint", - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" - }, - "engines": { - "node": ">= 0.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/gulp-util/raw/master/LICENSE" - } - ], - "gitHead": "f6336c8ac9f52930b36ad14002cf267c06f801df", - "bugs": { - "url": "https://github.com/wearefractal/gulp-util/issues" - }, - "_id": "gulp-util@3.0.1", - "_shasum": "8214894d05c2bb6cc7f5544918a51ddf88180f00", - "_from": "gulp-util@^3.0.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "fractal", - "email": "contact@wearefractal.com" - }, - "maintainers": [ - { - "name": "fractal", - "email": "contact@wearefractal.com" - } - ], - "dist": { - "shasum": "8214894d05c2bb6cc7f5544918a51ddf88180f00", - "tarball": "http://registry.npmjs.org/gulp-util/-/gulp-util-3.0.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.1.tgz" -} +{ + "name": "gulp-util", + "description": "Utility functions for gulp plugins", + "version": "3.0.4", + "repository": { + "type": "git", + "url": "https://github.com/wearefractal/gulp-util" + }, + "author": { + "name": "Fractal", + "email": "contact@wearefractal.com", + "url": "http://wearefractal.com/" + }, + "files": [ + "index.js", + "lib" + ], + "dependencies": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^1.0.11", + "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": "^2.0.0", + "replace-ext": "0.0.1", + "through2": "^0.6.3", + "vinyl": "^0.4.3" + }, + "devDependencies": { + "buffer-equal": "^0.0.1", + "coveralls": "^2.11.2", + "event-stream": "^3.1.7", + "istanbul": "^0.3.5", + "istanbul-coveralls": "^1.0.1", + "jshint": "^2.5.11", + "lodash.templatesettings": "^3.0.0", + "mocha": "^2.0.1", + "rimraf": "^2.2.8", + "should": "^5.0.1" + }, + "scripts": { + "test": "jshint *.js lib/*.js test/*.js && mocha", + "coveralls": "istanbul cover _mocha --report lcovonly && istanbul-coveralls" + }, + "engines": { + "node": ">=0.10" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/gulp-util/raw/master/LICENSE" + } + ], + "gitHead": "d17e0f99e9fa8d90499757e823983e229561ac75", + "bugs": { + "url": "https://github.com/wearefractal/gulp-util/issues" + }, + "homepage": "https://github.com/wearefractal/gulp-util", + "_id": "gulp-util@3.0.4", + "_shasum": "ec73553090fdb23d88fa02812ad1b61225854881", + "_from": "gulp-util@>=3.0.0 <4.0.0", + "_npmVersion": "2.6.0", + "_nodeVersion": "0.10.35", + "_npmUser": { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + "maintainers": [ + { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + { + "name": "phated", + "email": "blaine@iceddev.com" + } + ], + "dist": { + "shasum": "ec73553090fdb23d88fa02812ad1b61225854881", + "tarball": "http://registry.npmjs.org/gulp-util/-/gulp-util-3.0.4.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.4.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/interpret/CHANGELOG b/node_modules/gulp/node_modules/interpret/CHANGELOG index 9071c0b9f7..51e0f0197b 100644 --- a/node_modules/gulp/node_modules/interpret/CHANGELOG +++ b/node_modules/gulp/node_modules/interpret/CHANGELOG @@ -1,32 +1,44 @@ -v0.3.7: - date: 2014-09-08 - changes: - - Add support for [TypeScript](http://www.typescriptlang.org/). -v0.3.6: - date: 2014-08-25 - changes: - - Add support for coffee.md. -v0.3.5: - date: 2014-07-03 - changes: - - Add support for jsx. -v0.3.4: - date: 2014-06-27 - changes: - - Make .js first jsVariant entry. -v0.3.3: - date: 2014-06-02 - changes: - - Fix casing on livescript dependency. -v0.3.0: - date: 2014-04-20 - changes: - - Simplify loading of coffee-script and iced-coffee-script. -v0.2.0: - date: 2014-04-20 - changes: - - Move module loading into rechoir. -v0.1.0: - date: 2014-04-20 - changes: - - Initial public release. +v0.3.10: + date: 2014-12-17 + changes: + - Add support for json5. +v0.3.9: + date: 2014-12-08 + changes: + - Add support for literate iced coffee. +v0.3.8: + date: 2014-11-20 + changes: + - Add support for [cjsx](https://github.com/jsdf/coffee-react). +v0.3.7: + date: 2014-09-08 + changes: + - Add support for [TypeScript](http://www.typescriptlang.org/). +v0.3.6: + date: 2014-08-25 + changes: + - Add support for coffee.md. +v0.3.5: + date: 2014-07-03 + changes: + - Add support for jsx. +v0.3.4: + date: 2014-06-27 + changes: + - Make .js first jsVariant entry. +v0.3.3: + date: 2014-06-02 + changes: + - Fix casing on livescript dependency. +v0.3.0: + date: 2014-04-20 + changes: + - Simplify loading of coffee-script and iced-coffee-script. +v0.2.0: + date: 2014-04-20 + changes: + - Move module loading into rechoir. +v0.1.0: + date: 2014-04-20 + changes: + - Initial public release. diff --git a/node_modules/gulp/node_modules/interpret/LICENSE b/node_modules/gulp/node_modules/interpret/LICENSE index 21163f73e2..a55f5b74bd 100644 --- a/node_modules/gulp/node_modules/interpret/LICENSE +++ b/node_modules/gulp/node_modules/interpret/LICENSE @@ -1,22 +1,22 @@ -Copyright (c) 2014 Tyler Kellen - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2014 Tyler Kellen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/interpret/README.md b/node_modules/gulp/node_modules/interpret/README.md index 3cdca71006..4e18b47e27 100644 --- a/node_modules/gulp/node_modules/interpret/README.md +++ b/node_modules/gulp/node_modules/interpret/README.md @@ -1,61 +1,108 @@ -# interpret -> A dictionary of file extensions and associated module loaders. - -[![NPM](https://nodei.co/npm/interpret.png)](https://nodei.co/npm/interpret/) - -## What is it -This is used by [Liftoff](http://github.com/tkellen/node-liftoff) to automatically require dependencies for configuration files, and by [rechoir](http://github.com/tkellen/node-rechoir) for registering module loaders. - -## API - -### extensions -Map file types to modules which provide a [require.extensions] loader. -```js -{ - '.co': 'coco', - '.coffee': 'coffee-script/register', - '.coffee.md': 'coffee-script/register', - '.csv': 'require-csv', - '.iced': 'iced-coffee-script/register', - '.ini': 'require-ini', - '.js': null, - '.json': null, - '.jsx': 'node-jsx', - '.litcoffee': 'coffee-script/register', - '.ls': 'livescript', - '.toml': 'toml-require', - '.ts': 'typescript-require', - '.xml': 'require-xml', - '.yaml': 'require-yaml', - '.yml': 'require-yaml' -} -``` - -### register -Check here to see if setup is needed for the module register itself with [require.extensions]. If a method is returned, call it with the module. -```js -{ - 'toml-require': function (module) { - module.install(); - } -} -``` - -### jsVariants -Extensions which are javascript variants. - -```js -{ - '.js': null, - '.co': 'coco', - '.coffee': 'coffee-script/register', - '.coffee.md': 'coffee-script/register', - '.iced': 'iced-coffee-script/register', - '.jsx': 'node-jsx', - '.litcoffee': 'coffee-script/register', - '.ls': 'livescript', - '.ts': 'typescript-require' -} -``` - -[require.extensions]: http://nodejs.org/api/globals.html#globals_require_extensions +# interpret +> A dictionary of file extensions and associated module loaders. + +[![NPM](https://nodei.co/npm/interpret.png)](https://nodei.co/npm/interpret/) + +## What is it +This is used by [Liftoff](http://github.com/tkellen/node-liftoff) to automatically require dependencies for configuration files, and by [rechoir](http://github.com/tkellen/node-rechoir) for registering module loaders. + +## API + +### extensions +Map file types to modules which provide a [require.extensions] loader. +```js +{ + '.cjsx': 'node-cjsx/register', + '.co': 'coco', + '.coffee': 'coffee-script/register', + '.coffee.md': 'coffee-script/register', + '.csv': 'require-csv', + '.iced': 'iced-coffee-script/register', + '.iced.md': 'iced-coffee-script/register', + '.ini': 'require-ini', + '.js': null, + '.json': null, + '.json5': 'json5/lib/require', + '.jsx': 'node-jsx', + '.litcoffee': 'coffee-script/register', + '.liticed': 'iced-coffee-script/register', + '.ls': 'livescript', + '.toml': 'toml-require', + '.ts': 'typescript-require', + '.xml': 'require-xml', + '.yaml': 'require-yaml', + '.yml': 'require-yaml' +} +``` + +### register +Check here to see if setup is needed for the module register itself with [require.extensions]. If a method is returned, call it with the module. +```js +{ + 'toml-require': function (module) { + module.install(); + } +} +``` + +### jsVariants +Extensions which are javascript variants. + +```js +{ + '.cjsx': 'node-cjsx/register', + '.js': null, + '.co': 'coco', + '.coffee': 'coffee-script/register', + '.coffee.md': 'coffee-script/register', + '.iced': 'iced-coffee-script/register', + '.iced.md': 'iced-coffee-script/register', + '.jsx': 'node-jsx', + '.litcoffee': 'coffee-script/register', + '.liticed': 'iced-coffee-script/register', + '.ls': 'livescript', + '.ts': 'typescript-require' +} +``` + +[require.extensions]: http://nodejs.org/api/globals.html#globals_require_extensions + + +### Example Usage +```js +const interpret = require('interpret'); +const path = require('path'); +const resolve = require('resolve'); + +// register support for a defined extension +function register(filepath, cwd) { + // find the extension of the requested filename + var ext = path.extname(filepath); + // see if this extension is already supported + if (Object.keys(require.extensions).indexOf(ext) !== -1) { + return; + } + // if no cwd is specified, assume we want to use the + // directory the requested file exists in + if (!cwd) { + cwd = path.dirname(path.resolve(filepath)); + } + // find out which module is needed to read this extension + var moduleName = interpret.extensions[ext]; + // if a module exists for this extension, make it usable + if (moduleName) { + // find the module relative to cwd that can add support for this extension + var module = resolve.sync(moduleName, {basedir: cwd}) + // require it + var compiler = require(module); + // see if there is a method needed beyond requiring to enable support + var register = interpret.register[moduleName]; + // if there is, run it + if (register) { + register(compiler); + } + } +} +``` + +Note: this is more or less exactly how [rechoir](http://github.com/tkellen/node-rechoir) works. diff --git a/node_modules/gulp/node_modules/interpret/index.js b/node_modules/gulp/node_modules/interpret/index.js index 7ed3247f52..38758e0dad 100644 --- a/node_modules/gulp/node_modules/interpret/index.js +++ b/node_modules/gulp/node_modules/interpret/index.js @@ -1,48 +1,55 @@ -var extensions = { - '.co': 'coco', - '.coffee': 'coffee-script/register', - '.coffee.md': 'coffee-script/register', - '.csv': 'require-csv', - '.iced': 'iced-coffee-script/register', - '.ini': 'require-ini', - '.js': null, - '.json': null, - '.jsx': 'node-jsx', - '.litcoffee': 'coffee-script/register', - '.ls': 'LiveScript', - '.toml': 'toml-require', - '.ts': 'typescript-require', - '.xml': 'require-xml', - '.yaml': 'require-yaml', - '.yml': 'require-yaml' -}; - -var register = { - 'node-jsx': function (module) { - module.install({ extension: '.jsx', harmony: true }); - }, - 'toml-require': function (module) { - module.install(); - } -}; - -var jsVariantExtensions = [ - '.js', - '.co', - '.coffee', - '.coffee.md', - '.iced', - '.jsx', - '.litcoffee', - '.ls', - '.ts' -]; - -module.exports = { - extensions: extensions, - register: register, - jsVariants: jsVariantExtensions.reduce(function (result, ext) { - result[ext] = extensions[ext]; - return result; - }, {}) -}; +var extensions = { + '.cjsx': 'node-cjsx/register', + '.co': 'coco', + '.coffee': 'coffee-script/register', + '.coffee.md': 'coffee-script/register', + '.csv': 'require-csv', + '.iced': 'iced-coffee-script/register', + '.iced.md': 'iced-coffee-script/register', + '.ini': 'require-ini', + '.js': null, + '.json': null, + '.json5': 'json5/lib/require', + '.jsx': 'node-jsx', + '.litcoffee': 'coffee-script/register', + '.liticed': 'iced-coffee-script/register', + '.ls': 'LiveScript', + '.toml': 'toml-require', + '.ts': 'typescript-require', + '.xml': 'require-xml', + '.yaml': 'require-yaml', + '.yml': 'require-yaml' +}; + +var register = { + 'node-jsx': function (module) { + module.install({ extension: '.jsx', harmony: true }); + }, + 'toml-require': function (module) { + module.install(); + } +}; + +var jsVariantExtensions = [ + '.js', + '.cjsx', + '.co', + '.coffee', + '.coffee.md', + '.iced', + '.iced.md', + '.jsx', + '.litcoffee', + '.liticed', + '.ls', + '.ts' +]; + +module.exports = { + extensions: extensions, + register: register, + jsVariants: jsVariantExtensions.reduce(function (result, ext) { + result[ext] = extensions[ext]; + return result; + }, {}) +}; diff --git a/node_modules/gulp/node_modules/interpret/package.json b/node_modules/gulp/node_modules/interpret/package.json index 854bf4fa26..f9612a0447 100644 --- a/node_modules/gulp/node_modules/interpret/package.json +++ b/node_modules/gulp/node_modules/interpret/package.json @@ -1,61 +1,62 @@ -{ - "name": "interpret", - "description": "A dictionary of file extensions and associated module loaders.", - "version": "0.3.7", - "homepage": "https://github.com/tkellen/node-interpret", - "author": { - "name": "Tyler Kellen", - "url": "http://goingslowly.com/" - }, - "repository": { - "type": "git", - "url": "git://github.com/tkellen/node-interpret.git" - }, - "bugs": { - "url": "https://github.com/tkellen/node-interpret/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/tkellen/node-interpret/blob/master/LICENSE" - } - ], - "main": "index.js", - "keywords": [ - "coco", - "coffee-script", - "csv", - "iced-coffee-script", - "ini", - "jsx", - "livescript", - "react", - "toml", - "typescript", - "xml", - "yaml", - "yml" - ], - "gitHead": "df5960ce9d1bedb1fdf8163c96f70d92df6903fb", - "_id": "interpret@0.3.7", - "scripts": {}, - "_shasum": "18727eda04d50632ffa4b5eafb342b7ff398b36e", - "_from": "interpret@^0.3.2", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "tkellen", - "email": "tyler@sleekcode.net" - }, - "maintainers": [ - { - "name": "tkellen", - "email": "tyler@sleekcode.net" - } - ], - "dist": { - "shasum": "18727eda04d50632ffa4b5eafb342b7ff398b36e", - "tarball": "http://registry.npmjs.org/interpret/-/interpret-0.3.7.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/interpret/-/interpret-0.3.7.tgz" -} +{ + "name": "interpret", + "description": "A dictionary of file extensions and associated module loaders.", + "version": "0.3.10", + "homepage": "https://github.com/tkellen/node-interpret", + "author": { + "name": "Tyler Kellen", + "url": "http://goingslowly.com/" + }, + "repository": { + "type": "git", + "url": "git://github.com/tkellen/node-interpret.git" + }, + "bugs": { + "url": "https://github.com/tkellen/node-interpret/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/tkellen/node-interpret/blob/master/LICENSE" + } + ], + "main": "index.js", + "keywords": [ + "coco", + "coffee-script", + "csv", + "iced-coffee-script", + "ini", + "jsx", + "livescript", + "react", + "toml", + "typescript", + "xml", + "yaml", + "yml" + ], + "gitHead": "8653404e7b61ea1aa00e0f39ef2a9192d62ba69e", + "_id": "interpret@0.3.10", + "scripts": {}, + "_shasum": "088c25de731c6c5b112a90f0071cfaf459e5a7bb", + "_from": "interpret@>=0.3.2 <0.4.0", + "_npmVersion": "2.0.0", + "_npmUser": { + "name": "tkellen", + "email": "tyler@sleekcode.net" + }, + "maintainers": [ + { + "name": "tkellen", + "email": "tyler@sleekcode.net" + } + ], + "dist": { + "shasum": "088c25de731c6c5b112a90f0071cfaf459e5a7bb", + "tarball": "http://registry.npmjs.org/interpret/-/interpret-0.3.10.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/interpret/-/interpret-0.3.10.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/.jshintrc b/node_modules/gulp/node_modules/liftoff/.jshintrc index 2277e9e53a..6871084031 100644 --- a/node_modules/gulp/node_modules/liftoff/.jshintrc +++ b/node_modules/gulp/node_modules/liftoff/.jshintrc @@ -1,11 +1,11 @@ -{ - "undef": true, - "unused": true, - "node": true, - "esnext": true, - "expr": true, - "globals": { - "describe": true, - "it": true - } -} +{ + "undef": true, + "unused": true, + "node": true, + "esnext": true, + "expr": true, + "globals": { + "describe": true, + "it": true + } +} diff --git a/node_modules/gulp/node_modules/liftoff/.npmignore b/node_modules/gulp/node_modules/liftoff/.npmignore index 77356c3140..9c9c73b8c6 100644 --- a/node_modules/gulp/node_modules/liftoff/.npmignore +++ b/node_modules/gulp/node_modules/liftoff/.npmignore @@ -1 +1,2 @@ -test +test +artwork diff --git a/node_modules/gulp/node_modules/liftoff/.travis.yml b/node_modules/gulp/node_modules/liftoff/.travis.yml deleted file mode 100644 index 7945a2acd2..0000000000 --- a/node_modules/gulp/node_modules/liftoff/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" -matrix: - fast_finish: true - allow_failures: - - node_js: 0.11 diff --git a/node_modules/gulp/node_modules/liftoff/CHANGELOG b/node_modules/gulp/node_modules/liftoff/CHANGELOG index 1dd3514215..8300a1ad5f 100644 --- a/node_modules/gulp/node_modules/liftoff/CHANGELOG +++ b/node_modules/gulp/node_modules/liftoff/CHANGELOG @@ -1,87 +1,115 @@ -v0.13.5: - date: 2014-10-10 - changes: - - Only attempt to resolve the real path of configFile if it is actually a symlink. -v0.13.4: - date: 2014-10-07 - changes: - - Set configBase to the directory of the symlink, not the directory of its real location. -v0.13.3: - date: 2014-10-06 - changes: - - Return the real location of symlinked config files. -v0.13.2: - date: 2014-09-12 - changes: - - Include flags in respawn event. I really miss `npm publish --force`. -v0.13.1: - date: 2014-09-12 - changes: - - Slight performance tweak. -v0.13.0: - date: 2014-09-12 - changes: - - Support passing flags to node with `nodeFlags` option. -v0.12.1: - date: 2014-06-27 - changes: - - Support preloading modules for compound extensions like `.coffee.md`. -v0.12.0: - date: 2014-06-27 - changes: - - Respect order of extensions when searching for config. - - Rename `configNameRegex` environment property to `configNameSearch`. -v0.11.3: - date: 2014-06-09 - changes: - - Make cwd match configBase if cwd isn't explictly provided -v0.11.2: - date: 2014-06-04 - changes: - - Regression fix: coerce preloads into array before attempting to push more -v0.11.1: - date: 2014-06-02 - changes: - - Update dependencies. -v0.11.0: - date: 2014-05-27 - changes: - - Refactor and remove options parsing. -v0.10.0: - date: 2014-05-06 - changes: - - Remove `addExtension` in favor of `extension` option. - - Support preloading modules based on extension. -v0.9.7: - date: 2014-04-28 - changes: - - Locate local module in cwd even if config isn't present. -v0.9.6: - date: 2014-04-02 - changes: - - Fix regression where external modules are not properly required. - - Ignore configPathFlag / cwdFlag if the value isn't a string -v0.9.3: - date: 2014-02-28 - changes: - - Fix regression where developing against self doesn't correctly set cwd. -v0.9.0: - date: 2014-02-28 - changes: - - Use liftoff instance as context (`this`) for launch callback. - - Support split --cwd and --configfile locations. - - Rename `configLocationFlag` to `configPathFlag` - - Support node 0.8+ -v0.8.7: - date: 2014-02-24 - changes: - - Pass environment as first argument to `launch`. -v0.8.5: - date: 2014-02-19 - changes: - - Implement `addExtensions` option. - - Default to `index.js` if `modulePackage` has no `main` property. -v0.8.4: - date: 2014-02-05 - changes: - - Initial public release. +v2.0.3: + date: 2015-03-31 + changes: + - Internal bugfix, don't wrap callback error in another error, idiot. +v2.0.2: + date: 2015-02-24 + changes: + - Support process.env.NODE_PATH when resolving module. +v2.0.1: + date: 2015-02-01 + changes: + - Find modulePath correctly when devving against yourself. +v2.0.0: + date: 2015-01-15 + changes: + - Rename `nodeFlags` to `v8Flags` and make it async. +v1.0.4: + date: 2015-01-04 + changes: + - Detect config extension using basename, not full path. +v1.0.0: + date: 2014-12-16 + changes: + - Update dependencies +v0.13.6: + date: 2014-11-07 + changes: + - Don't include artwork on npm. +v0.13.5: + date: 2014-10-10 + changes: + - Only attempt to resolve the real path of configFile if it is actually a symlink. +v0.13.4: + date: 2014-10-07 + changes: + - Set configBase to the directory of the symlink, not the directory of its real location. +v0.13.3: + date: 2014-10-06 + changes: + - Return the real location of symlinked config files. +v0.13.2: + date: 2014-09-12 + changes: + - Include flags in respawn event. I really miss `npm publish --force`. +v0.13.1: + date: 2014-09-12 + changes: + - Slight performance tweak. +v0.13.0: + date: 2014-09-12 + changes: + - Support passing flags to node with `nodeFlags` option. +v0.12.1: + date: 2014-06-27 + changes: + - Support preloading modules for compound extensions like `.coffee.md`. +v0.12.0: + date: 2014-06-27 + changes: + - Respect order of extensions when searching for config. + - Rename `configNameRegex` environment property to `configNameSearch`. +v0.11.3: + date: 2014-06-09 + changes: + - Make cwd match configBase if cwd isn't explictly provided +v0.11.2: + date: 2014-06-04 + changes: + - Regression fix: coerce preloads into array before attempting to push more +v0.11.1: + date: 2014-06-02 + changes: + - Update dependencies. +v0.11.0: + date: 2014-05-27 + changes: + - Refactor and remove options parsing. +v0.10.0: + date: 2014-05-06 + changes: + - Remove `addExtension` in favor of `extension` option. + - Support preloading modules based on extension. +v0.9.7: + date: 2014-04-28 + changes: + - Locate local module in cwd even if config isn't present. +v0.9.6: + date: 2014-04-02 + changes: + - Fix regression where external modules are not properly required. + - Ignore configPathFlag / cwdFlag if the value isn't a string +v0.9.3: + date: 2014-02-28 + changes: + - Fix regression where developing against self doesn't correctly set cwd. +v0.9.0: + date: 2014-02-28 + changes: + - Use liftoff instance as context (`this`) for launch callback. + - Support split --cwd and --configfile locations. + - Rename `configLocationFlag` to `configPathFlag` + - Support node 0.8+ +v0.8.7: + date: 2014-02-24 + changes: + - Pass environment as first argument to `launch`. +v0.8.5: + date: 2014-02-19 + changes: + - Implement `addExtensions` option. + - Default to `index.js` if `modulePackage` has no `main` property. +v0.8.4: + date: 2014-02-05 + changes: + - Initial public release. diff --git a/node_modules/gulp/node_modules/liftoff/LICENSE b/node_modules/gulp/node_modules/liftoff/LICENSE index 21163f73e2..a55f5b74bd 100644 --- a/node_modules/gulp/node_modules/liftoff/LICENSE +++ b/node_modules/gulp/node_modules/liftoff/LICENSE @@ -1,22 +1,22 @@ -Copyright (c) 2014 Tyler Kellen - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2014 Tyler Kellen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/README.md b/node_modules/gulp/node_modules/liftoff/README.md index bd48c40743..a6fec12c88 100644 --- a/node_modules/gulp/node_modules/liftoff/README.md +++ b/node_modules/gulp/node_modules/liftoff/README.md @@ -1,301 +1,304 @@ -

    - - - -

    - -# liftoff [![Build Status](https://secure.travis-ci.org/tkellen/node-liftoff.png)](http://travis-ci.org/tkellen/node-liftoff) -> Launch your command line tool with ease. - -[![NPM](https://nodei.co/npm/liftoff.png)](https://nodei.co/npm/liftoff/) - -## What is it? -[See this blog post](http://weblog.bocoup.com/building-command-line-tools-in-node-with-liftoff/), [check out this proof of concept](http://github.com/tkellen/node-hacker), or read on. - -Say you're writing a CLI tool. Let's call it [hacker](http://github.com/tkellen/node-hacker). You want to configure it using a `Hackerfile`. This is node, so you install `hacker` locally for each project you use it in. But, in order to get the `hacker` command in your PATH, you also install it globally. - -Now, when you run `hacker`, you want to configure what it does using the `Hackerfile` in your current directory, and you want it to execute using the local installation of your tool. Also, it'd be nice if the `hacker` command was smart enough to traverse up your folders until it finds a `Hackerfile`—for those times when you're not in the root directory of your project. Heck, you might even want to launch `hacker` from a folder outside of your project by manually specifying a working directory. Liftoff manages this for you. - -So, everything is working great. Now you can find your local `hacker` and `Hackerfile` with ease. Unfortunately, it turns out you've authored your `Hackerfile` in coffee-script, or some other JS variant. In order to support *that*, you have to load the compiler for it, and then register the extension for it with node. Good news, Liftoff can do that, and a whole lot more, too. - -## API - -### constructor(opts) - -Create an instance of Liftoff to invoke your application. - -An example utilizing all options: -```js -const Hacker = new Liftoff({ - name: 'hacker', - processTitle: 'hacker', - moduleName: 'hacker', - configName: 'hackerfile', - extensions: { - '.js': null, - '.json': null, - '.coffee': 'coffee-script/register' - }, - nodeFlags: ['--harmony'] // or require('v8flags').fetch(); -}); -``` - -#### opts.name - -Sugar for setting `processTitle`, `moduleName`, `configName` automatically. - -Type: `String` -Default: `null` - -These are equivalent: -```js -const Hacker = Liftoff({ - processTitle: 'hacker', - moduleName: 'hacker', - configName: 'hackerfile' -}); -``` -```js -const Hacker = Liftoff({name:'hacker'}); -``` - -#### opts.moduleName - -Sets which module your application expects to find locally when being run. - -Type: `String` -Default: `null` - -#### opts.configName - -Sets the name of the configuration file Liftoff will attempt to find. Case-insensitive. - -Type: `String` -Default: `null` - -#### opts.extensions - -Set extensions to include when searching for a configuration file. If an external module is needed to load a given extension (e.g. `.coffee`), the module name should be specified as the value for the key. - -Type: `Object` -Default: `{".js":null,".json":null}` - -**Examples:** - -In this example Liftoff will look for `myappfile{.js,.json,.coffee}`. If a config with the extension `.coffee` is found, Liftoff will try to require `coffee-script/require` from the current working directory. -```js -const MyApp = new Liftoff({ - name: 'myapp' - extensions: { - '.js': null, - '.json': null, - '.coffee': 'coffee-script/register' - } -}); -``` - -In this example, Liftoff will look for `.myapp{rc}`. -```js -const MyApp = new Liftoff({ - name: 'myapp', - configName: '.myapp', - extensions: { - 'rc': null - } -}); -``` - -In this example, Liftoff will automatically attempt to load the correct module for any javascript variant supported by [node-interpret](https://github.com/tkellen/node-interpret) (as long as it does not require a register method). - -```js -const MyApp = new Liftoff({ - name: 'myapp', - extensions: require('interpret').jsVariants -}); -``` -#### opts.nodeFlags - -Any flag specified here will be applied to node, not your program. Useful for supporting invocations like `myapp --harmony command`, where `--harmony` should be passed to node, not your program. This functionality is implemented using [flagged-respawn](http://github.com/tkellen/node-flagged-respawn). To support all v8flags, see [node-v8flags](https://github.com/tkellen/node-v8flags). - -Type: `Array` -Default: `null` - -#### opts.processTitle - -Sets what the [process title](http://nodejs.org/api/process.html#process_process_title) will be. - -Type: `String` -Default: `null` - -#### opts.completions(type) - -A method to handle bash/zsh/whatever completions. - -Type: `Function` -Default: `null` - -## launch(opts, callback(env)) -Launches your application with provided options, builds an environment, and invokes your callback, passing the calculated environment as the first argument. - -##### Example Configuration w/ Options Parsing: -```js -const Liftoff = require('liftoff'); -const MyApp = new Liftoff({name:'myapp'}); -const argv = require('minimist')(process.argv.slice(2)); -const invoke = function (env) { - console.log('my environment is:', env); - console.log('my cli options are:', argv); - console.log('my liftoff config is:', this); -}; -MyApp.launch({ - cwd: argv.cwd, - configPath: argv.myappfile, - require: argv.require, - completion: argv.completion -}, invoke); -``` - -#### opts.cwd - -Change the current working directory for this launch. Relative paths are calculated against `process.cwd()`. - -Type: `String` -Default: `process.cwd()` - -**Example Configuration:** -```js -const argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - cwd: argv.cwd -}, invoke); -``` - -**Matching CLI Invocation:** -``` -myapp --cwd ../ -``` - -#### opts.configPath - -Don't search for a config, use the one provided. **Note:** Liftoff will assume the current working directory is the directory containing the config file unless an alternate location is explicitly specified using `cwd`. - -Type: `String` -Default: `null` - -**Example Configuration:** -```js -var argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - configPath: argv.myappfile -}, invoke); -``` - -**Matching CLI Invocation:** -``` -myapp --myappfile /var/www/project/Myappfile.js -``` - -**Examples using `cwd` and `configPath` together:** - -These are functionally identical: -``` -myapp --myappfile /var/www/project/Myappfile.js -myapp --cwd /var/www/project -``` - -These can run myapp from a shared directory as though it were located in another project: -``` -myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project1 -myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project2 -``` - -#### opts.require - -A string or array of modules to attempt requiring from the local working directory before invoking the launch callback. - -Type: `String|Array` -Default: `null` - -**Example Configuration:** -```js -var argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - require: argv.require -}, invoke); -``` - -**Matching CLI Invocation:** -```js -myapp --require coffee-script/register -``` - -#### callback(env) - -A function to start your application. When invoked, `this` will be your instance of Liftoff. The `env` param will contain the following keys: - -- `cwd`: the current working directory -- `require`: an array of modules that liftoff tried to pre-load -- `configNameSearch`: the config files searched for -- `configPath`: the full path to your configuration file (if found) -- `configBase`: the base directory of your configuration file (if found) -- `modulePath`: the full path to the local module your project relies on (if found) -- `modulePackage`: the contents of the local module's package.json (if found) - -### events - -#### require(name, module) - -Emitted when a module is pre-loaded. - -```js -var Hacker = new Liftoff({name:'hacker'}); -Hacker.on('require', function (name, module) { - console.log('Requiring external module: '+name+'...'); - // automatically register coffee-script extensions - if (name === 'coffee-script') { - module.register(); - } -}); -``` - -#### requireFail(name, err) - -Emitted when a requested module cannot be preloaded. - -```js -var Hacker = new Liftoff({name:'hacker'}); -Hacker.on('requireFail', function (name, err) { - console.log('Unable to load:', name, err); -}); -``` - -#### respawn(flags, child) - -Emitted when Liftoff re-spawns your process (when a [`nodeFlag`](#optsnodeflags) is detected). - -```js -var Hacker = new Liftoff({ - name: 'hacker', - nodeFlags: ['--harmony'] -}); -Hacker.on('respawn', function (flags, child) { - console.log('Detected node flags:', flags); - console.log('Respawned to PID:', child.pid); -}); -``` - -Event will be triggered for this command: -`hacker --harmony commmand` - -## Examples - -Check out how [gulp](https://github.com/gulpjs/gulp/blob/master/bin/gulp.js) uses Liftoff. - -For a bare-bones example, try [the hacker project](https://github.com/tkellen/node-hacker/blob/master/bin/hacker.js). - -To try the example, do the following: - -1. Install the sample project `hacker` with `npm install -g hacker`. -2. Make a `Hackerfile.js` with some arbitrary javascript it. -3. Install hacker next to it with `npm install hacker`. -3. Run `hacker` while in the same parent folder. +

    + + + +

    + +# liftoff [![Build Status](https://secure.travis-ci.org/tkellen/js-liftoff.png)](http://travis-ci.org/tkellen/js-liftoff) [![Build status](https://ci.appveyor.com/api/projects/status/5a6w8xuq8ed1ilc4/branch/master?svg=true)](https://ci.appveyor.com/project/tkellen/js-liftoff/branch/master) + +> Launch your command line tool with ease. + +[![NPM](https://nodei.co/npm/liftoff.png)](https://nodei.co/npm/liftoff/) + +## What is it? +[See this blog post](http://weblog.bocoup.com/building-command-line-tools-in-node-with-liftoff/), [check out this proof of concept](http://github.com/tkellen/node-hacker), or read on. + +Say you're writing a CLI tool. Let's call it [hacker](http://github.com/tkellen/node-hacker). You want to configure it using a `Hackerfile`. This is node, so you install `hacker` locally for each project you use it in. But, in order to get the `hacker` command in your PATH, you also install it globally. + +Now, when you run `hacker`, you want to configure what it does using the `Hackerfile` in your current directory, and you want it to execute using the local installation of your tool. Also, it'd be nice if the `hacker` command was smart enough to traverse up your folders until it finds a `Hackerfile`—for those times when you're not in the root directory of your project. Heck, you might even want to launch `hacker` from a folder outside of your project by manually specifying a working directory. Liftoff manages this for you. + +So, everything is working great. Now you can find your local `hacker` and `Hackerfile` with ease. Unfortunately, it turns out you've authored your `Hackerfile` in coffee-script, or some other JS variant. In order to support *that*, you have to load the compiler for it, and then register the extension for it with node. Good news, Liftoff can do that, and a whole lot more, too. + +## API + +### constructor(opts) + +Create an instance of Liftoff to invoke your application. + +An example utilizing all options: +```js +const Hacker = new Liftoff({ + name: 'hacker', + processTitle: 'hacker', + moduleName: 'hacker', + configName: 'hackerfile', + extensions: { + '.js': null, + '.json': null, + '.coffee': 'coffee-script/register' + }, + v8flags: ['--harmony'] // or v8flags: require('v8flags'); +}); +``` + +#### opts.name + +Sugar for setting `processTitle`, `moduleName`, `configName` automatically. + +Type: `String` +Default: `null` + +These are equivalent: +```js +const Hacker = Liftoff({ + processTitle: 'hacker', + moduleName: 'hacker', + configName: 'hackerfile' +}); +``` +```js +const Hacker = Liftoff({name:'hacker'}); +``` + +#### opts.moduleName + +Sets which module your application expects to find locally when being run. + +Type: `String` +Default: `null` + +#### opts.configName + +Sets the name of the configuration file Liftoff will attempt to find. Case-insensitive. + +Type: `String` +Default: `null` + +#### opts.extensions + +Set extensions to include when searching for a configuration file. If an external module is needed to load a given extension (e.g. `.coffee`), the module name should be specified as the value for the key. + +Type: `Object` +Default: `{".js":null,".json":null}` + +**Examples:** + +In this example Liftoff will look for `myappfile{.js,.json,.coffee}`. If a config with the extension `.coffee` is found, Liftoff will try to require `coffee-script/require` from the current working directory. +```js +const MyApp = new Liftoff({ + name: 'myapp' + extensions: { + '.js': null, + '.json': null, + '.coffee': 'coffee-script/register' + } +}); +``` + +In this example, Liftoff will look for `.myapp{rc}`. +```js +const MyApp = new Liftoff({ + name: 'myapp', + configName: '.myapp', + extensions: { + 'rc': null + } +}); +``` + +In this example, Liftoff will automatically attempt to load the correct module for any javascript variant supported by [node-interpret](https://github.com/tkellen/node-interpret) (as long as it does not require a register method). + +```js +const MyApp = new Liftoff({ + name: 'myapp', + extensions: require('interpret').jsVariants +}); +``` +#### opts.v8flags + +Any flag specified here will be applied to node, not your program. Useful for supporting invocations like `myapp --harmony command`, where `--harmony` should be passed to node, not your program. This functionality is implemented using [flagged-respawn](http://github.com/tkellen/node-flagged-respawn). To support all v8flags, see [node-v8flags](https://github.com/tkellen/node-v8flags). + +Type: `Array|Function` +Default: `null` + +If this method is a function, it should take a node-style callback that yields an array of flags. + +#### opts.processTitle + +Sets what the [process title](http://nodejs.org/api/process.html#process_process_title) will be. + +Type: `String` +Default: `null` + +#### opts.completions(type) + +A method to handle bash/zsh/whatever completions. + +Type: `Function` +Default: `null` + +## launch(opts, callback(env)) +Launches your application with provided options, builds an environment, and invokes your callback, passing the calculated environment as the first argument. + +##### Example Configuration w/ Options Parsing: +```js +const Liftoff = require('liftoff'); +const MyApp = new Liftoff({name:'myapp'}); +const argv = require('minimist')(process.argv.slice(2)); +const invoke = function (env) { + console.log('my environment is:', env); + console.log('my cli options are:', argv); + console.log('my liftoff config is:', this); +}; +MyApp.launch({ + cwd: argv.cwd, + configPath: argv.myappfile, + require: argv.require, + completion: argv.completion +}, invoke); +``` + +#### opts.cwd + +Change the current working directory for this launch. Relative paths are calculated against `process.cwd()`. + +Type: `String` +Default: `process.cwd()` + +**Example Configuration:** +```js +const argv = require('minimist')(process.argv.slice(2)); +MyApp.launch({ + cwd: argv.cwd +}, invoke); +``` + +**Matching CLI Invocation:** +``` +myapp --cwd ../ +``` + +#### opts.configPath + +Don't search for a config, use the one provided. **Note:** Liftoff will assume the current working directory is the directory containing the config file unless an alternate location is explicitly specified using `cwd`. + +Type: `String` +Default: `null` + +**Example Configuration:** +```js +var argv = require('minimist')(process.argv.slice(2)); +MyApp.launch({ + configPath: argv.myappfile +}, invoke); +``` + +**Matching CLI Invocation:** +``` +myapp --myappfile /var/www/project/Myappfile.js +``` + +**Examples using `cwd` and `configPath` together:** + +These are functionally identical: +``` +myapp --myappfile /var/www/project/Myappfile.js +myapp --cwd /var/www/project +``` + +These can run myapp from a shared directory as though it were located in another project: +``` +myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project1 +myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project2 +``` + +#### opts.require + +A string or array of modules to attempt requiring from the local working directory before invoking the launch callback. + +Type: `String|Array` +Default: `null` + +**Example Configuration:** +```js +var argv = require('minimist')(process.argv.slice(2)); +MyApp.launch({ + require: argv.require +}, invoke); +``` + +**Matching CLI Invocation:** +```js +myapp --require coffee-script/register +``` + +#### callback(env) + +A function to start your application. When invoked, `this` will be your instance of Liftoff. The `env` param will contain the following keys: + +- `cwd`: the current working directory +- `require`: an array of modules that liftoff tried to pre-load +- `configNameSearch`: the config files searched for +- `configPath`: the full path to your configuration file (if found) +- `configBase`: the base directory of your configuration file (if found) +- `modulePath`: the full path to the local module your project relies on (if found) +- `modulePackage`: the contents of the local module's package.json (if found) + +### events + +#### require(name, module) + +Emitted when a module is pre-loaded. + +```js +var Hacker = new Liftoff({name:'hacker'}); +Hacker.on('require', function (name, module) { + console.log('Requiring external module: '+name+'...'); + // automatically register coffee-script extensions + if (name === 'coffee-script') { + module.register(); + } +}); +``` + +#### requireFail(name, err) + +Emitted when a requested module cannot be preloaded. + +```js +var Hacker = new Liftoff({name:'hacker'}); +Hacker.on('requireFail', function (name, err) { + console.log('Unable to load:', name, err); +}); +``` + +#### respawn(flags, child) + +Emitted when Liftoff re-spawns your process (when a [`nodeFlag`](#optsnodeflags) is detected). + +```js +var Hacker = new Liftoff({ + name: 'hacker', + nodeFlags: ['--harmony'] +}); +Hacker.on('respawn', function (flags, child) { + console.log('Detected node flags:', flags); + console.log('Respawned to PID:', child.pid); +}); +``` + +Event will be triggered for this command: +`hacker --harmony commmand` + +## Examples + +Check out how [gulp](https://github.com/gulpjs/gulp/blob/master/bin/gulp.js) uses Liftoff. + +For a bare-bones example, try [the hacker project](https://github.com/tkellen/node-hacker/blob/master/bin/hacker.js). + +To try the example, do the following: + +1. Install the sample project `hacker` with `npm install -g hacker`. +2. Make a `Hackerfile.js` with some arbitrary javascript it. +3. Install hacker next to it with `npm install hacker`. +3. Run `hacker` while in the same parent folder. diff --git a/node_modules/gulp/node_modules/liftoff/UPGRADING.md b/node_modules/gulp/node_modules/liftoff/UPGRADING.md index 05b5db7d9d..7f95e3ee8b 100644 --- a/node_modules/gulp/node_modules/liftoff/UPGRADING.md +++ b/node_modules/gulp/node_modules/liftoff/UPGRADING.md @@ -1,26 +1,28 @@ -# 0.11 -> 0.12 -For the environment passed into the `launch` callback, `configNameRegex` has been renamed to `configNameSearch`. It now returns an array of valid config names instead of a regular expression. - - -# 0.10 -> 0.11 -The method signature for `launch` was changed in this version of Liftoff. - -You must now provide your own options parser and pass your desired params directly into `launch` as the first argument. The second argument is now the invocation callback that starts your application. - -To replicate the default functionality of 0.10, use the following: -```js -const Liftoff = require('liftoff'); -const MyApp = new Liftoff({name:'myapp'}); -const argv = require('minimist')(process.argv.slice(2)); -const invoke = function (env) { - console.log('my environment is:', env); - console.log('my cli options are:', argv); - console.log('my liftoff config is:', this); -}; -MyApp.launch({ - cwd: argv.cwd, - configPath: argv.myappfile, - require: argv.require, - completion: argv.completion -}, invoke); -``` +# 1.0.0 -> 2.0.0 +The option `nodeFlags` was renamed to `v8flags` for accuracy. It can now be a callback taking method that yields an array of flags, **or** an array literal. + +# 0.11 -> 0.12 +For the environment passed into the `launch` callback, `configNameRegex` has been renamed to `configNameSearch`. It now returns an array of valid config names instead of a regular expression. + +# 0.10 -> 0.11 +The method signature for `launch` was changed in this version of Liftoff. + +You must now provide your own options parser and pass your desired params directly into `launch` as the first argument. The second argument is now the invocation callback that starts your application. + +To replicate the default functionality of 0.10, use the following: +```js +const Liftoff = require('liftoff'); +const MyApp = new Liftoff({name:'myapp'}); +const argv = require('minimist')(process.argv.slice(2)); +const invoke = function (env) { + console.log('my environment is:', env); + console.log('my cli options are:', argv); + console.log('my liftoff config is:', this); +}; +MyApp.launch({ + cwd: argv.cwd, + configPath: argv.myappfile, + require: argv.require, + completion: argv.completion +}, invoke); +``` diff --git a/node_modules/gulp/node_modules/liftoff/appveyor.yml b/node_modules/gulp/node_modules/liftoff/appveyor.yml index 023d1f5518..961d4101c0 100644 --- a/node_modules/gulp/node_modules/liftoff/appveyor.yml +++ b/node_modules/gulp/node_modules/liftoff/appveyor.yml @@ -1,28 +1,26 @@ -init: - - git config --global core.autocrlf input - -environment: - matrix: - - nodejs_version: "0.10" - - nodejs_version: "0.8" - - nodejs_version: "0.11" - -matrix: - allow_failures: - - nodejs_version: "0.11" - -install: - - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) - - npm install - -test_script: - - node --version - - npm --version - # power shell - - ps: "npm test # PowerShell" - # standard command line - - cmd: npm test - -build: off - -version: "{build}" +# http://www.appveyor.com/docs/appveyor-yml +# http://www.appveyor.com/docs/lang/nodejs-iojs + +environment: + matrix: + # node.js + - nodejs_version: "0.10" + - nodejs_version: "0.12" + # io.js + - nodejs_version: "1" + +install: + - ps: Install-Product node $env:nodejs_version + - npm install + +test_script: + - node --version + - npm --version + # power shell + - ps: "npm test" + # standard command line + - cmd: npm test + +build: off + +version: "{build}" diff --git a/node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.eps b/node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.eps deleted file mode 100644 index 8181f0097cffe0eff8dc959f9be3cbe64a82014e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520682 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

    ^|FKuMSOq8Lh-&+} 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 diff --git a/node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.svg b/node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.svg deleted file mode 100644 index bd7359ef9d..0000000000 --- a/node_modules/gulp/node_modules/liftoff/artwork/liftoff-icon.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/gulp/node_modules/liftoff/artwork/liftoff.eps b/node_modules/gulp/node_modules/liftoff/artwork/liftoff.eps deleted file mode 100644 index ad5ec7ef6886ebee29c9ee0cbd7baa177690f3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551958 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

    K2K`kLa-eS1o}?0>g$fll%hE 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�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%0AMn&UrT5Bw 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 diff --git a/node_modules/gulp/node_modules/liftoff/artwork/liftoff.png b/node_modules/gulp/node_modules/liftoff/artwork/liftoff.png deleted file mode 100644 index 0403fa6a0483f3967ccd9c277b69850b90ba80dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10492 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 - - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/gulp/node_modules/liftoff/index.js b/node_modules/gulp/node_modules/liftoff/index.js index 8b6b03fefd..f5709af514 100644 --- a/node_modules/gulp/node_modules/liftoff/index.js +++ b/node_modules/gulp/node_modules/liftoff/index.js @@ -1,168 +1,193 @@ -const fs = require('fs'); -const util = require('util'); -const path = require('path'); -const EE = require('events').EventEmitter; - -const extend = require('extend'); -const resolve = require('resolve'); -const flaggedRespawn = require('flagged-respawn'); - -const findCwd = require('./lib/find_cwd'); -const findConfig = require('./lib/find_config'); -const fileSearch = require('./lib/file_search'); -const parseOptions = require('./lib/parse_options'); -const silentRequire = require('./lib/silent_require'); -const buildConfigName = require('./lib/build_config_name'); - -function Liftoff (opts) { - EE.call(this); - extend(this, parseOptions(opts)); -} -util.inherits(Liftoff, EE); - -Liftoff.prototype.requireLocal = function (module, basedir) { - try { - var result = require(resolve.sync(module, {basedir: basedir})); - this.emit('require', module, result); - return result; - } catch (e) { - this.emit('requireFail', module, e); - } -}; - -Liftoff.prototype.buildEnvironment = function (opts) { - opts = opts||{}; - - // get modules we want to preload - var preload = opts.require||[]; - - // ensure items to preload is an array - if (!Array.isArray(preload)) { - preload = [preload]; - } - - // make a copy of search paths that can be mutated for this run - var searchPaths = this.searchPaths.slice(); - - // calculate current cwd - var cwd = findCwd(opts); - - // if cwd was provided explicitly, only use it for searching config - if (opts.cwd) { - searchPaths = [cwd]; - } else { - // otherwise just search in cwd first - searchPaths.unshift(cwd); - } - - // calculate the regex to use for finding the config file - var configNameSearch = buildConfigName({ - configName: this.configName, - extensions: Object.keys(this.extensions) - }); - - // calculate configPath - var configPath = findConfig({ - configNameSearch: configNameSearch, - searchPaths: searchPaths, - configPath: opts.configPath - }); - - // if we have a config path, save the directory it resides in. - var configBase; - if (configPath) { - configBase = path.dirname(configPath); - // if cwd wasn't provided explicitly, it should match configBase - if (!opts.cwd) { - cwd = configBase; - } - // resolve symlink if needed - if(fs.lstatSync(configPath).isSymbolicLink()) { - configPath = fs.realpathSync(configPath); - } - } - - // TODO: break this out into lib/ - // locate local module and package next to config or explicitly provided cwd - var modulePath, modulePackage; - try { - modulePath = resolve.sync(this.moduleName, {basedir: configBase || cwd}); - modulePackage = silentRequire(fileSearch('package.json', [modulePath])); - } catch (e) {} - - // if we have a configuration but we failed to find a local module, maybe - // we are developing against ourselves? - if (!modulePath && configPath) { - // check the package.json sibling to our config to see if its `name` - // matches the module we're looking for - modulePackage = silentRequire(fileSearch('package.json', [configBase])); - if (modulePackage && modulePackage.name === this.moduleName) { - // if it does, our module path is `main` inside package.json - modulePath = path.join(configBase, modulePackage.main||'index.js'); - cwd = configBase; - } else { - // clear if we just required a package for some other project - modulePackage = {}; - } - } - - // get extension of config name, taking anything after the -first- dot - var configExtension = /(\.[^\/]*)?$/.exec(configPath)[0]; - - // preload module needed for config if any has been specified. - var requireForExtension = this.extensions[configExtension]; - if (requireForExtension) { - preload.push(requireForExtension); - } - - // preload modules, if any - if (preload.length) { - // unique results first - preload.filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (dep) { - this.requireLocal(dep, findCwd(opts)); - }, this); - } - - return { - cwd: cwd, - require: preload, - configNameSearch: configNameSearch, - configPath: configPath, - configBase: configBase, - modulePath: modulePath, - modulePackage: modulePackage||{} - }; -}; - -Liftoff.prototype.launch = function (opts, fn) { - if (typeof fn !== 'function') { - throw new Error('You must provide a callback function.'); - } - - process.title = this.processTitle; - - var completion = opts.completion; - if (completion && this.completions) { - return this.completions(completion); - } - - if (this.nodeFlags) { - flaggedRespawn(this.nodeFlags, process.argv, function (ready, child) { - if (child !== process) { - this.emit('respawn', process.argv.filter(function (flag) { - return this.nodeFlags.indexOf(flag) !== -1; - }.bind(this)), child); - } - if (ready) { - fn.call(this, this.buildEnvironment(opts)); - } - }.bind(this)); - } else { - fn.call(this, this.buildEnvironment(opts)); - } - -}; - -module.exports = Liftoff; +const fs = require('fs'); +const util = require('util'); +const path = require('path'); +const EE = require('events').EventEmitter; + +const extend = require('extend'); +const resolve = require('resolve'); +const flaggedRespawn = require('flagged-respawn'); + +const findCwd = require('./lib/find_cwd'); +const findConfig = require('./lib/find_config'); +const fileSearch = require('./lib/file_search'); +const parseOptions = require('./lib/parse_options'); +const silentRequire = require('./lib/silent_require'); +const buildConfigName = require('./lib/build_config_name'); + +function Liftoff (opts) { + EE.call(this); + extend(this, parseOptions(opts)); +} +util.inherits(Liftoff, EE); + +Liftoff.prototype.requireLocal = function (module, basedir) { + try { + var result = require(resolve.sync(module, {basedir: basedir})); + this.emit('require', module, result); + return result; + } catch (e) { + this.emit('requireFail', module, e); + } +}; + +Liftoff.prototype.buildEnvironment = function (opts) { + opts = opts||{}; + + // get modules we want to preload + var preload = opts.require||[]; + + // ensure items to preload is an array + if (!Array.isArray(preload)) { + preload = [preload]; + } + + // make a copy of search paths that can be mutated for this run + var searchPaths = this.searchPaths.slice(); + + // calculate current cwd + var cwd = findCwd(opts); + + // if cwd was provided explicitly, only use it for searching config + if (opts.cwd) { + searchPaths = [cwd]; + } else { + // otherwise just search in cwd first + searchPaths.unshift(cwd); + } + + // calculate the regex to use for finding the config file + var configNameSearch = buildConfigName({ + configName: this.configName, + extensions: Object.keys(this.extensions) + }); + + // calculate configPath + var configPath = findConfig({ + configNameSearch: configNameSearch, + searchPaths: searchPaths, + configPath: opts.configPath + }); + + // if we have a config path, save the directory it resides in. + var configBase; + if (configPath) { + configBase = path.dirname(configPath); + // if cwd wasn't provided explicitly, it should match configBase + if (!opts.cwd) { + cwd = configBase; + } + // resolve symlink if needed + if(fs.lstatSync(configPath).isSymbolicLink()) { + configPath = fs.realpathSync(configPath); + } + } + + // TODO: break this out into lib/ + // locate local module and package next to config or explicitly provided cwd + var modulePath, modulePackage; + try { + var delim = (process.platform === 'win32' ? ';' : ':'), + paths = (process.env.NODE_PATH ? process.env.NODE_PATH.split(delim) : []); + modulePath = resolve.sync(this.moduleName, {basedir: configBase || cwd, paths: paths}); + modulePackage = silentRequire(fileSearch('package.json', [modulePath])); + } catch (e) {} + + // if we have a configuration but we failed to find a local module, maybe + // we are developing against ourselves? + if (!modulePath && configPath) { + // check the package.json sibling to our config to see if its `name` + // matches the module we're looking for + var modulePackagePath = fileSearch('package.json', [configBase]); + modulePackage = silentRequire(modulePackagePath); + if (modulePackage && modulePackage.name === this.moduleName) { + // if it does, our module path is `main` inside package.json + modulePath = path.join(path.dirname(modulePackagePath), modulePackage.main||'index.js'); + cwd = configBase; + } else { + // clear if we just required a package for some other project + modulePackage = {}; + } + } + + // get extension of config name, taking anything after the -first- dot + var configExtension = /(\.[^\/\\]*)?$/.exec(path.basename(configPath))[0]; + + // preload module needed for config if any has been specified. + var requireForExtension = this.extensions[configExtension]; + if (requireForExtension) { + preload.push(requireForExtension); + } + + // preload modules, if any + if (preload.length) { + // unique results first + preload.filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (dep) { + this.requireLocal(dep, findCwd(opts)); + }, this); + } + + return { + cwd: cwd, + require: preload, + configNameSearch: configNameSearch, + configPath: configPath, + configBase: configBase, + modulePath: modulePath, + modulePackage: modulePackage||{} + }; +}; + +Liftoff.prototype.handleFlags = function (cb) { + if (typeof this.v8flags === 'function') { + this.v8flags(function (err, flags) { + if (err) { + cb(err); + } else { + cb(null, flags); + } + }); + } else { + process.nextTick(function () { + cb(null, this.v8flags); + }.bind(this)); + } +}; + +Liftoff.prototype.launch = function (opts, fn) { + if (typeof fn !== 'function') { + throw new Error('You must provide a callback function.'); + } + process.title = this.processTitle; + + var completion = opts.completion; + if (completion && this.completions) { + return this.completions(completion); + } + + this.handleFlags(function (err, flags) { + if (err) { + throw err; + } else { + if (flags) { + flaggedRespawn(flags, process.argv, function (ready, child) { + if (child !== process) { + this.emit('respawn', process.argv.filter(function (flag) { + return flags.indexOf(flag) !== -1; + }.bind(this)), child); + } + if (ready) { + fn.call(this, this.buildEnvironment(opts)); + } + }.bind(this)); + } else { + fn.call(this, this.buildEnvironment(opts)); + } + } + }.bind(this)); +}; + + + +module.exports = Liftoff; diff --git a/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js b/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js index cc2286b76b..31f1882ec9 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js +++ b/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js @@ -1,17 +1,17 @@ -module.exports = function (opts) { - opts = opts || {}; - var configName = opts.configName; - var extensions = opts.extensions; - if (!configName) { - throw new Error('Please specify a configName.'); - } - if (configName instanceof RegExp) { - return [configName]; - } - if (!Array.isArray(extensions)) { - throw new Error('Please provide an array of valid extensions.'); - } - return extensions.map(function (ext) { - return configName+ext; - }); -}; +module.exports = function (opts) { + opts = opts || {}; + var configName = opts.configName; + var extensions = opts.extensions; + if (!configName) { + throw new Error('Please specify a configName.'); + } + if (configName instanceof RegExp) { + return [configName]; + } + if (!Array.isArray(extensions)) { + throw new Error('Please provide an array of valid extensions.'); + } + return extensions.map(function (ext) { + return configName+ext; + }); +}; diff --git a/node_modules/gulp/node_modules/liftoff/lib/file_search.js b/node_modules/gulp/node_modules/liftoff/lib/file_search.js index 4ca5e4c75a..c985d38a5a 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/file_search.js +++ b/node_modules/gulp/node_modules/liftoff/lib/file_search.js @@ -1,14 +1,14 @@ -const findup = require('findup-sync'); - -module.exports = function (search, paths) { - var path; - var len = paths.length; - for (var i=0; i < len; i++) { - if (path) { - break; - } else { - path = findup(search, {cwd: paths[i], nocase: true}); - } - } - return path; -}; +const findup = require('findup-sync'); + +module.exports = function (search, paths) { + var path; + var len = paths.length; + for (var i=0; i < len; i++) { + if (path) { + break; + } else { + path = findup(search, {cwd: paths[i], nocase: true}); + } + } + return path; +}; diff --git a/node_modules/gulp/node_modules/liftoff/lib/find_config.js b/node_modules/gulp/node_modules/liftoff/lib/find_config.js index 075b48c62d..71c3f077d7 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/find_config.js +++ b/node_modules/gulp/node_modules/liftoff/lib/find_config.js @@ -1,25 +1,25 @@ -const fs = require('fs'); -const path = require('path'); -const fileSearch = require('./file_search'); - -module.exports = function (opts) { - opts = opts || {}; - var configNameSearch = opts.configNameSearch; - var configPath = opts.configPath; - var searchPaths = opts.searchPaths; - // only search for a config if a path to one wasn't explicitly provided - if (!configPath) { - if (!Array.isArray(searchPaths)) { - throw new Error('Please provide an array of paths to search for config in.'); - } - if (!configNameSearch) { - throw new Error('Please provide a configNameSearch.'); - } - configPath = fileSearch(configNameSearch, searchPaths); - } - // confirm the configPath exists and return an absolute path to it - if (fs.existsSync(configPath)) { - return path.resolve(configPath); - } - return null; -}; +const fs = require('fs'); +const path = require('path'); +const fileSearch = require('./file_search'); + +module.exports = function (opts) { + opts = opts || {}; + var configNameSearch = opts.configNameSearch; + var configPath = opts.configPath; + var searchPaths = opts.searchPaths; + // only search for a config if a path to one wasn't explicitly provided + if (!configPath) { + if (!Array.isArray(searchPaths)) { + throw new Error('Please provide an array of paths to search for config in.'); + } + if (!configNameSearch) { + throw new Error('Please provide a configNameSearch.'); + } + configPath = fileSearch(configNameSearch, searchPaths); + } + // confirm the configPath exists and return an absolute path to it + if (fs.existsSync(configPath)) { + return path.resolve(configPath); + } + return null; +}; diff --git a/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js b/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js index 37d1bf50fe..55330e519f 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js +++ b/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js @@ -1,16 +1,16 @@ -const path = require('path'); - -module.exports = function (opts) { - opts = opts||{}; - var cwd = opts.cwd; - var configPath = opts.configPath; - // if a path to the desired config was specified - // but no cwd was provided, use configPath dir - if (typeof configPath === 'string' && !cwd) { - cwd = path.dirname(path.resolve(configPath)); - } - if (typeof cwd === 'string') { - return path.resolve(cwd); - } - return process.cwd(); -}; +const path = require('path'); + +module.exports = function (opts) { + opts = opts||{}; + var cwd = opts.cwd; + var configPath = opts.configPath; + // if a path to the desired config was specified + // but no cwd was provided, use configPath dir + if (typeof configPath === 'string' && !cwd) { + cwd = path.dirname(path.resolve(configPath)); + } + if (typeof cwd === 'string') { + return path.resolve(cwd); + } + return process.cwd(); +}; diff --git a/node_modules/gulp/node_modules/liftoff/lib/parse_options.js b/node_modules/gulp/node_modules/liftoff/lib/parse_options.js index 7f9fe2affd..de1dabfdcb 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/parse_options.js +++ b/node_modules/gulp/node_modules/liftoff/lib/parse_options.js @@ -1,33 +1,33 @@ -const extend = require('extend'); - -module.exports = function (opts) { - var defaults = { - extensions: { - '.js': null, - '.json': null - }, - searchPaths: [] - }; - opts = opts||{}; - if (opts.name) { - if (!opts.processTitle) { - opts.processTitle = opts.name; - } - if (!opts.configName) { - opts.configName = opts.name+'file'; - } - if (!opts.moduleName) { - opts.moduleName = opts.name; - } - } - if (!opts.processTitle) { - throw new Error('You must specify a processTitle.'); - } - if (!opts.configName) { - throw new Error('You must specify a configName.'); - } - if (!opts.moduleName) { - throw new Error('You must specify a moduleName.'); - } - return extend(defaults, opts); -}; +const extend = require('extend'); + +module.exports = function (opts) { + var defaults = { + extensions: { + '.js': null, + '.json': null + }, + searchPaths: [] + }; + opts = opts||{}; + if (opts.name) { + if (!opts.processTitle) { + opts.processTitle = opts.name; + } + if (!opts.configName) { + opts.configName = opts.name+'file'; + } + if (!opts.moduleName) { + opts.moduleName = opts.name; + } + } + if (!opts.processTitle) { + throw new Error('You must specify a processTitle.'); + } + if (!opts.configName) { + throw new Error('You must specify a configName.'); + } + if (!opts.moduleName) { + throw new Error('You must specify a moduleName.'); + } + return extend(defaults, opts); +}; diff --git a/node_modules/gulp/node_modules/liftoff/lib/silent_require.js b/node_modules/gulp/node_modules/liftoff/lib/silent_require.js index f30d0ca2bd..7b4dfe4e54 100644 --- a/node_modules/gulp/node_modules/liftoff/lib/silent_require.js +++ b/node_modules/gulp/node_modules/liftoff/lib/silent_require.js @@ -1,5 +1,5 @@ -module.exports = function (path) { - try { - return require(path); - } catch (e) {} -}; +module.exports = function (path) { + try { + return require(path); + } catch (e) {} +}; diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json b/node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json new file mode 100644 index 0000000000..8bca4f1cc9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json @@ -0,0 +1,66 @@ +{ + "additionalRules": [], + + "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], + + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], + + "disallowSpaceAfterKeywords": [], + + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + + "disallowSpacesInsideParentheses": true, + + "disallowSpacesInsideArrayBrackets": true, + + "disallowQuotedKeysInObjects": "allButReserved", + + "disallowSpaceAfterObjectKeys": true, + + "requireCommaBeforeLineBreak": true, + + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "requireSpaceAfterPrefixUnaryOperators": [], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "requireSpaceBeforePostfixUnaryOperators": [], + + "disallowSpaceBeforeBinaryOperators": [], + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + "disallowSpaceAfterBinaryOperators": [], + + "disallowImplicitTypeConversion": ["binary", "string"], + + "disallowKeywords": ["with", "eval"], + + "requireKeywordsOnNewLine": [], + "disallowKeywordsOnNewLine": ["else"], + + "requireLineFeedAtFileEnd": true, + + "disallowTrailingWhitespace": true, + + "disallowTrailingComma": true, + + "excludeFiles": ["node_modules/**", "vendor/**"], + + "disallowMultipleLineStrings": true, + + "requireDotNotation": true, + + "requireParenthesesAroundIIFE": true, + + "validateLineBreaks": "LF", + + "validateQuoteMarks": { + "escape": true, + "mark": "'" + } +} + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml b/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml index f825030dd9..912080aa1b 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml @@ -1,18 +1,18 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.9" - - "0.8" - - "0.6" - - "0.4" -before_install: - - '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6' -matrix: - fast_finish: true - allow_failures: - - node_js: "0.11" - - node_js: "0.9" - - node_js: "0.6" - - node_js: "0.4" - +language: node_js +node_js: + - "0.11" + - "0.10" + - "0.9" + - "0.8" + - "0.6" + - "0.4" +before_install: + - '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6' +matrix: + fast_finish: true + allow_failures: + - node_js: "0.11" + - node_js: "0.9" + - node_js: "0.6" + - node_js: "0.4" + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE index ac82711968..e16d6a56ca 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE @@ -1,23 +1,23 @@ -The MIT License (MIT) - -Copyright (c) 2014 Stefan Thomas - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - +The MIT License (MIT) + +Copyright (c) 2014 Stefan Thomas + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md index 0e62ca2da2..632fb0f96f 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md @@ -1,60 +1,62 @@ -[![Build Status][1]][2] [![dependency status][9]][10] [![dev dependency status][11]][12] - -# extend() for Node.js [![Version Badge][8]][3] - -`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true. - -## Installation - -This package is available on [npm][3] as: `extend` - -``` sh -npm install extend -``` - -## Usage - -**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)** - -*Extend one object with one or more others, returning the modified object.* - -Keep in mind that the target object will be modified, and will be returned from extend(). - -If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). -Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over. -Warning: passing `false` as the first argument is not supported. - -### Arguments - -* `deep` *Boolean* (optional) -If set, the merge becomes recursive (i.e. deep copy). -* `target` *Object* -The object to extend. -* `object1` *Object* -The object that will be merged into the first. -* `objectN` *Object* (Optional) -More objects to merge into the first. - -## License - -`node-extend` is licensed under the [MIT License][4]. - -## Acknowledgements - -All credit to the jQuery authors for perfecting this amazing utility. - -Ported to Node.js by [Stefan Thomas][5] with contributions by [Jonathan Buchanan][6] and [Jordan Harband][7]. - -[1]: https://travis-ci.org/justmoon/node-extend.svg -[2]: https://travis-ci.org/justmoon/node-extend -[3]: https://npmjs.org/package/extend -[4]: http://opensource.org/licenses/MIT -[5]: https://github.com/justmoon -[6]: https://github.com/insin -[7]: https://github.com/ljharb -[8]: http://vb.teelaun.ch/justmoon/node-extend.svg -[9]: https://david-dm.org/justmoon/node-extend.svg -[10]: https://david-dm.org/justmoon/node-extend -[11]: https://david-dm.org/justmoon/node-extend/dev-status.svg -[12]: https://david-dm.org/justmoon/node-extend#info=devDependencies - +[![Build Status][travis-svg]][travis-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] + +# extend() for Node.js [![Version Badge][npm-version-png]][npm-url] + +`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true. + +## Installation + +This package is available on [npm][npm-url] as: `extend` + +``` sh +npm install extend +``` + +## Usage + +**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)** + +*Extend one object with one or more others, returning the modified object.* + +Keep in mind that the target object will be modified, and will be returned from extend(). + +If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). +Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over. +Warning: passing `false` as the first argument is not supported. + +### Arguments + +* `deep` *Boolean* (optional) +If set, the merge becomes recursive (i.e. deep copy). +* `target` *Object* +The object to extend. +* `object1` *Object* +The object that will be merged into the first. +* `objectN` *Object* (Optional) +More objects to merge into the first. + +## License + +`node-extend` is licensed under the [MIT License][mit-license-url]. + +## Acknowledgements + +All credit to the jQuery authors for perfecting this amazing utility. + +Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb]. + +[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg +[travis-url]: https://travis-ci.org/justmoon/node-extend +[npm-url]: https://npmjs.org/package/extend +[mit-license-url]: http://opensource.org/licenses/MIT +[github-justmoon]: https://github.com/justmoon +[github-insin]: https://github.com/insin +[github-ljharb]: https://github.com/ljharb +[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg +[deps-svg]: https://david-dm.org/justmoon/node-extend.svg +[deps-url]: https://david-dm.org/justmoon/node-extend +[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg +[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json b/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json index ab89df8647..adcc2d5bd0 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json @@ -1,31 +1,32 @@ -{ - "name": "extend", - "author": "Stefan Thomas (http://www.justmoon.net)", - "version": "1.3.0", - "description": "Port of jQuery.extend for node.js and the browser.", - "scripts": [ - "index.js" - ], - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "keywords": [ - "extend", - "clone", - "merge" - ], - "repository" : { - "type": "git", - "url": "https://github.com/justmoon/node-extend.git" - }, - "dependencies": { - }, - "devDependencies": { - "tape" : "~2.12.3", - "covert": "~0.4.0" - } -} - +{ + "name": "extend", + "author": "Stefan Thomas (http://www.justmoon.net)", + "version": "2.0.0", + "description": "Port of jQuery.extend for node.js and the browser.", + "scripts": [ + "index.js" + ], + "contributors": [ + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "keywords": [ + "extend", + "clone", + "merge" + ], + "repository" : { + "type": "git", + "url": "https://github.com/justmoon/node-extend.git" + }, + "dependencies": { + }, + "devDependencies": { + "tape" : "~3.0.0", + "covert": "~0.4.0", + "jscs": "~1.6.2" + } +} + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js b/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js index 0640f4da52..59e7ee6c2e 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js @@ -1,80 +1,81 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toString = Object.prototype.toString; -var undefined; - -var isPlainObject = function isPlainObject(obj) { - "use strict"; - if (!obj || toString.call(obj) !== '[object Object]' || obj.nodeType || obj.setInterval) { - return false; - } - - var has_own_constructor = hasOwn.call(obj, 'constructor'); - var has_is_property_of_method = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !has_own_constructor && !has_is_property_of_method) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) {} - - return key === undefined || hasOwn.call(obj, key); -}; - -module.exports = function extend() { - "use strict"; - var options, name, src, copy, copyIsArray, clone, - target = arguments[0], - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if (typeof target === "boolean") { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } else if (typeof target !== "object" && typeof target !== "function" || target == undefined) { - target = {}; - } - - for (; i < length; ++i) { - // Only deal with non-null/undefined values - if ((options = arguments[i]) != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target === copy) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && Array.isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - +var hasOwn = Object.prototype.hasOwnProperty; +var toString = Object.prototype.toString; +var undefined; + +var isPlainObject = function isPlainObject(obj) { + 'use strict'; + if (!obj || toString.call(obj) !== '[object Object]') { + return false; + } + + var has_own_constructor = hasOwn.call(obj, 'constructor'); + var has_is_property_of_method = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !has_own_constructor && !has_is_property_of_method) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) {} + + return key === undefined || hasOwn.call(obj, key); +}; + +module.exports = function extend() { + 'use strict'; + var options, name, src, copy, copyIsArray, clone, + target = arguments[0], + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) { + target = {}; + } + + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = target[name]; + copy = options[name]; + + // Prevent never-ending loop + if (target === copy) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && Array.isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[name] = extend(deep, clone, copy); + + // Don't bring in undefined values + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json index b7b44357a7..cdce45484e 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json +++ b/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json @@ -1,65 +1,68 @@ -{ - "name": "extend", - "author": { - "name": "Stefan Thomas", - "email": "justmoon@members.fsf.org", - "url": "http://www.justmoon.net" - }, - "version": "1.3.0", - "description": "Port of jQuery.extend for node.js and the browser", - "main": "index", - "scripts": { - "test": "node test/index.js", - "coverage": "covert test/index.js", - "coverage-quiet": "covert test/index.js --quiet" - }, - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "keywords": [ - "extend", - "clone", - "merge" - ], - "repository": { - "type": "git", - "url": "https://github.com/justmoon/node-extend.git" - }, - "dependencies": {}, - "devDependencies": { - "tape": "~2.13.2", - "covert": "~0.4.0" - }, - "gitHead": "30bf952975a8551c8aabc3aed5e812455847e37a", - "bugs": { - "url": "https://github.com/justmoon/node-extend/issues" - }, - "homepage": "https://github.com/justmoon/node-extend", - "_id": "extend@1.3.0", - "_shasum": "d1516fb0ff5624d2ebf9123ea1dac5a1994004f8", - "_from": "extend@~1.3.0", - "_npmVersion": "1.4.14", - "_npmUser": { - "name": "ljharb", - "email": "ljharb@gmail.com" - }, - "maintainers": [ - { - "name": "justmoon", - "email": "justmoon@members.fsf.org" - }, - { - "name": "ljharb", - "email": "ljharb@gmail.com" - } - ], - "dist": { - "shasum": "d1516fb0ff5624d2ebf9123ea1dac5a1994004f8", - "tarball": "http://registry.npmjs.org/extend/-/extend-1.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/extend/-/extend-1.3.0.tgz" -} +{ + "name": "extend", + "author": { + "name": "Stefan Thomas", + "email": "justmoon@members.fsf.org", + "url": "http://www.justmoon.net" + }, + "version": "2.0.0", + "description": "Port of jQuery.extend for node.js and the browser", + "main": "index", + "scripts": { + "test": "npm run lint && node test/index.js && npm run coverage-quiet", + "coverage": "covert test/index.js", + "coverage-quiet": "covert test/index.js --quiet", + "lint": "jscs *.js */*.js" + }, + "contributors": [ + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "keywords": [ + "extend", + "clone", + "merge" + ], + "repository": { + "type": "git", + "url": "https://github.com/justmoon/node-extend.git" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~3.0.0", + "covert": "~1.0.0", + "jscs": "~1.6.2" + }, + "gitHead": "1766f482fcf9ca83e07ad6fbeaa079e649d5db0c", + "bugs": { + "url": "https://github.com/justmoon/node-extend/issues" + }, + "homepage": "https://github.com/justmoon/node-extend", + "_id": "extend@2.0.0", + "_shasum": "cc3c1e238521df4c28e3f30868b7324bb5898a5c", + "_from": "extend@>=2.0.0 <2.1.0", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "ljharb", + "email": "ljharb@gmail.com" + }, + "maintainers": [ + { + "name": "justmoon", + "email": "justmoon@members.fsf.org" + }, + { + "name": "ljharb", + "email": "ljharb@gmail.com" + } + ], + "dist": { + "shasum": "cc3c1e238521df4c28e3f30868b7324bb5898a5c", + "tarball": "http://registry.npmjs.org/extend/-/extend-2.0.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/extend/-/extend-2.0.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.jshintrc b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.jshintrc deleted file mode 100644 index 490a78edd7..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "loopfunc": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "unused": true, - "boss": true, - "eqnull": true, - "node": true -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore index e69de29bb2..84561e0c98 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore @@ -0,0 +1,4 @@ +test +.travis.yml +.jshintrc +Gruntfile.js diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.travis.yml b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.travis.yml deleted file mode 100644 index 84f907aff1..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 -before_script: - - npm install -g grunt-cli diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/Gruntfile.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/Gruntfile.js deleted file mode 100644 index f25c7e24b2..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/Gruntfile.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -module.exports = function(grunt) { - - // Project configuration. - grunt.initConfig({ - nodeunit: { - files: ['test/**/*_test.js'], - }, - jshint: { - options: { - jshintrc: '.jshintrc' - }, - all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js'] - } - }); - - // Load plugins. - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-nodeunit'); - - // Default task. - grunt.registerTask('default', ['jshint', 'nodeunit']); - -}; diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT index 4064fb9ec4..bb2aad6dc2 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT @@ -1,22 +1,22 @@ -Copyright (c) 2013 "Cowboy" Ben Alman - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2013 "Cowboy" Ben Alman + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md index a354f0680b..da08371659 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md @@ -1,45 +1,47 @@ -# findup-sync [![Build Status](https://secure.travis-ci.org/cowboy/node-findup-sync.png?branch=master)](http://travis-ci.org/cowboy/node-findup-sync) - -Find the first file matching a given pattern in the current directory or the nearest ancestor directory. - -## Getting Started -Install the module with: `npm install findup-sync` - -```js -var findup = require('findup-sync'); - -// Start looking in the CWD. -var filepath1 = findup('{a,b}*.txt'); - -// Start looking somewhere else, and ignore case (probably a good idea). -var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true}); -``` - -## Usage - -```js -findup(patternOrPatterns [, minimatchOptions]) -``` - -### patternOrPatterns -Type: `String` or `Array` -Default: none - -One or more wildcard glob patterns. Or just filenames. - -### minimatchOptions -Type: `Object` -Default: `{}` - -Options to be passed to [minimatch](https://github.com/isaacs/minimatch). - -Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here. - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). - -## Release History -2014-03-14 - v0.1.3 - Updated dependencies. -2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform. -2012-11-15 - v0.1.1 - Now works without an options object. -2012-11-01 - v0.1.0 - Initial release. +# findup-sync [![Build Status](https://secure.travis-ci.org/cowboy/node-findup-sync.png?branch=master)](http://travis-ci.org/cowboy/node-findup-sync) + +Find the first file matching a given pattern in the current directory or the nearest ancestor directory. + +## Getting Started +Install the module with: `npm install findup-sync` + +```js +var findup = require('findup-sync'); + +// Start looking in the CWD. +var filepath1 = findup('{a,b}*.txt'); + +// Start looking somewhere else, and ignore case (probably a good idea). +var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true}); +``` + +## Usage + +```js +findup(patternOrPatterns [, minimatchOptions]) +``` + +### patternOrPatterns +Type: `String` or `Array` +Default: none + +One or more wildcard glob patterns. Or just filenames. + +### minimatchOptions +Type: `Object` +Default: `{}` + +Options to be passed to [minimatch](https://github.com/isaacs/minimatch). + +Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here. + +## Contributing +In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). + +## Release History +2014-12-17 - v0.2.1 - updated to glob 4.3. +2014-12-16 - v0.2.0 - Removed lodash, updated to glob 4.x. +2014-03-14 - v0.1.3 - Updated dependencies. +2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform. +2012-11-15 - v0.1.1 - Now works without an options object. +2012-11-01 - v0.1.0 - Initial release. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js index 3dd64d3a05..871a7256ca 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js @@ -1,46 +1,49 @@ -/* - * findup-sync - * https://github.com/cowboy/node-findup-sync - * - * Copyright (c) 2013 "Cowboy" Ben Alman - * Licensed under the MIT license. - */ - -'use strict'; - -// Nodejs libs. -var path = require('path'); - -// External libs. -var glob = require('glob'); -var _ = require('lodash'); - -// Search for a filename in the given directory or all parent directories. -module.exports = function(patterns, options) { - // Normalize patterns to an array. - if (!Array.isArray(patterns)) { patterns = [patterns]; } - // Create globOptions so that it can be modified without mutating the - // original object. - var globOptions = Object.create(options || {}); - globOptions.maxDepth = 1; - globOptions.cwd = path.resolve(globOptions.cwd || '.'); - - var files, lastpath; - do { - // Search for files matching patterns. - files = _(patterns).map(function(pattern) { - return glob.sync(pattern, globOptions); - }).flatten().uniq().value(); - // Return file if found. - if (files.length > 0) { - return path.resolve(path.join(globOptions.cwd, files[0])); - } - // Go up a directory. - lastpath = globOptions.cwd; - globOptions.cwd = path.resolve(globOptions.cwd, '..'); - // If parentpath is the same as basedir, we can't go any higher. - } while (globOptions.cwd !== lastpath); - - // No files were found! - return null; -}; +/* + * findup-sync + * https://github.com/cowboy/node-findup-sync + * + * Copyright (c) 2013 "Cowboy" Ben Alman + * Licensed under the MIT license. + */ + +'use strict'; + +// Nodejs libs. +var path = require('path'); + +// External libs. +var glob = require('glob'); + +// Search for a filename in the given directory or all parent directories. +module.exports = function(patterns, options) { + // Normalize patterns to an array. + if (!Array.isArray(patterns)) { patterns = [patterns]; } + // Create globOptions so that it can be modified without mutating the + // original object. + var globOptions = Object.create(options || {}); + globOptions.maxDepth = 1; + globOptions.cwd = path.resolve(globOptions.cwd || '.'); + + var files, lastpath; + do { + // Search for files matching patterns. + files = patterns.map(function(pattern) { + return glob.sync(pattern, globOptions); + }).reduce(function(a, b) { + return a.concat(b); + }).filter(function(entry, index, arr) { + return index === arr.indexOf(entry); + }); + // Return file if found. + if (files.length > 0) { + return path.resolve(path.join(globOptions.cwd, files[0])); + } + // Go up a directory. + lastpath = globOptions.cwd; + globOptions.cwd = path.resolve(globOptions.cwd, '..'); + // If parentpath is the same as basedir, we can't go any higher. + } while (globOptions.cwd !== lastpath); + + // No files were found! + return null; +}; diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.npmignore b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.npmignore deleted file mode 100644 index ca1045c721..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.swp -test/a/ diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE deleted file mode 100644 index 6e93978e0e..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md index a4292bb568..e479ae29e3 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md @@ -1,250 +1,357 @@ -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -## Attention: node-glob users! - -The API has changed dramatically between 2.x and 3.x. This library is -now 100% JavaScript, and the integer flags have been replaced with an -options object. - -Also, there's an event emitter class, proper tests, and all the other -things you've come to expect from node modules. - -And best of all, no compilation! - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Features - -Please see the [minimatch -documentation](https://github.com/isaacs/minimatch) for more details. - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instanting the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `error` The error encountered. When an error is encountered, the - glob object is in an undefined state, and should be discarded. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `statCache` Collection of all the stat results the glob search - performed. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `1` - Path exists, and is not a directory - * `2` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `abort` Stop the search. - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the glob object, as well. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. It will cause - ELOOP to be triggered one level sooner in the case of cyclical - symbolic links. -* `silent` When an unusual error is encountered - when attempting to read a directory, a warning will be printed to - stderr. Set the `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered - when attempting to read a directory, the process will just continue on - in search of other matches. Set the `strict` option to raise an error - in these cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary to - set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `sync` Perform a synchronous glob search. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. - Set this flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `nocase` Perform a case-insensitive match. Note that case-insensitive - filesystems will sometimes result in glob returning results that are - case-insensitively matched anyway, since readdir and stat will not - raise an error. -* `debug` Set to enable debug logging in minimatch and glob. -* `globDebug` Set to enable debug logging in glob, but not minimatch. - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. +[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies) + +# Glob + +Match files using the patterns the shell uses, like stars and stuff. + +This is a glob implementation in JavaScript. It uses the `minimatch` +library to do its matching. + +![](oh-my-glob.gif) + +## Usage + +```javascript +var glob = require("glob") + +// options is optional +glob("**/*.js", options, function (er, files) { + // files is an array of filenames. + // If the `nonull` option is set, and nothing + // was found, then files is ["**/*.js"] + // er is an error object or null. +}) +``` + +## Glob Primer + +"Globs" are the patterns you type when you do stuff like `ls *.js` on +the command line, or put `build/*` in a `.gitignore` file. + +Before parsing the path part patterns, braced sections are expanded +into a set. Braced sections start with `{` and end with `}`, with any +number of comma-delimited sections within. Braced sections may contain +slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`. + +The following characters have special magic meaning when used in a +path portion: + +* `*` Matches 0 or more characters in a single path portion +* `?` Matches 1 character +* `[...]` Matches a range of characters, similar to a RegExp range. + If the first character of the range is `!` or `^` then it matches + any character not in the range. +* `!(pattern|pattern|pattern)` Matches anything that does not match + any of the patterns provided. +* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the + patterns provided. +* `+(pattern|pattern|pattern)` Matches one or more occurrences of the + patterns provided. +* `*(a|b|c)` Matches zero or more occurrences of the patterns provided +* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns + provided +* `**` If a "globstar" is alone in a path portion, then it matches + zero or more directories and subdirectories searching for matches. + It does not crawl symlinked directories. + +### Dots + +If a file or directory path portion has a `.` as the first character, +then it will not match any glob pattern unless that pattern's +corresponding path part also has a `.` as its first character. + +For example, the pattern `a/.*/c` would match the file at `a/.b/c`. +However the pattern `a/*/c` would not, because `*` does not start with +a dot character. + +You can make glob treat dots as normal characters by setting +`dot:true` in the options. + +### Basename Matching + +If you set `matchBase:true` in the options, and the pattern has no +slashes in it, then it will seek for any file anywhere in the tree +with a matching basename. For example, `*.js` would match +`test/simple/basic.js`. + +### Negation + +The intent for negation would be for a pattern starting with `!` to +match everything that *doesn't* match the supplied pattern. However, +the implementation is weird, and for the time being, this should be +avoided. The behavior will change or be deprecated in version 5. + +### Empty Sets + +If no matching files are found, then an empty array is returned. This +differs from the shell, where the pattern itself is returned. For +example: + + $ echo a*s*d*f + a*s*d*f + +To get the bash-style behavior, set the `nonull:true` in the options. + +### See Also: + +* `man sh` +* `man bash` (Search for "Pattern Matching") +* `man 3 fnmatch` +* `man 5 gitignore` +* [minimatch documentation](https://github.com/isaacs/minimatch) + +## glob.hasMagic(pattern, [options]) + +Returns `true` if there are any special characters in the pattern, and +`false` otherwise. + +Note that the options affect the results. If `noext:true` is set in +the options object, then `+(a|b)` will not be considered a magic +pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}` +then that is considered magical, unless `nobrace:true` is set in the +options. + +## glob(pattern, [options], cb) + +* `pattern` {String} Pattern to be matched +* `options` {Object} +* `cb` {Function} + * `err` {Error | null} + * `matches` {Array} filenames found matching the pattern + +Perform an asynchronous glob search. + +## glob.sync(pattern, [options]) + +* `pattern` {String} Pattern to be matched +* `options` {Object} +* return: {Array} filenames found matching the pattern + +Perform a synchronous glob search. + +## Class: glob.Glob + +Create a Glob object by instantiating the `glob.Glob` class. + +```javascript +var Glob = require("glob").Glob +var mg = new Glob(pattern, options, cb) +``` + +It's an EventEmitter, and starts walking the filesystem to find matches +immediately. + +### new glob.Glob(pattern, [options], [cb]) + +* `pattern` {String} pattern to search for +* `options` {Object} +* `cb` {Function} Called when an error occurs, or matches are found + * `err` {Error | null} + * `matches` {Array} filenames found matching the pattern + +Note that if the `sync` flag is set in the options, then matches will +be immediately available on the `g.found` member. + +### Properties + +* `minimatch` The minimatch object that the glob uses. +* `options` The options object passed in. +* `aborted` Boolean which is set to true when calling `abort()`. There + is no way at this time to continue a glob search after aborting, but + you can re-use the statCache to avoid having to duplicate syscalls. +* `statCache` Collection of all the stat results the glob search + performed. +* `cache` Convenience object. Each field has the following possible + values: + * `false` - Path does not exist + * `true` - Path exists + * `'DIR'` - Path exists, and is not a directory + * `'FILE'` - Path exists, and is a directory + * `[file, entries, ...]` - Path exists, is a directory, and the + array value is the results of `fs.readdir` +* `statCache` Cache of `fs.stat` results, to prevent statting the same + path multiple times. +* `symlinks` A record of which paths are symbolic links, which is + relevant in resolving `**` patterns. + +### Events + +* `end` When the matching is finished, this is emitted with all the + matches found. If the `nonull` option is set, and no match was found, + then the `matches` list contains the original pattern. The matches + are sorted, unless the `nosort` flag is set. +* `match` Every time a match is found, this is emitted with the matched. +* `error` Emitted when an unexpected error is encountered, or whenever + any fs error occurs if `options.strict` is set. +* `abort` When `abort()` is called, this event is raised. + +### Methods + +* `pause` Temporarily stop the search +* `resume` Resume the search +* `abort` Stop the search forever + +### Options + +All the options that can be passed to Minimatch can also be passed to +Glob to change pattern matching behavior. Also, some have been added, +or have glob-specific ramifications. + +All options are false by default, unless otherwise noted. + +All options are added to the Glob object, as well. + +If you are running many `glob` operations, you can pass a Glob object +as the `options` argument to a subsequent operation to shortcut some +`stat` and `readdir` calls. At the very least, you may pass in shared +`symlinks`, `statCache`, and `cache` options, so that parallel glob +operations will be sped up by sharing information about the +filesystem. + +* `cwd` The current working directory in which to search. Defaults + to `process.cwd()`. +* `root` The place where patterns starting with `/` will be mounted + onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix + systems, and `C:\` or some such on Windows.) +* `dot` Include `.dot` files in normal matches and `globstar` matches. + Note that an explicit dot in a portion of the pattern will always + match dot files. +* `nomount` By default, a pattern starting with a forward-slash will be + "mounted" onto the root setting, so that a valid filesystem path is + returned. Set this flag to disable that behavior. +* `mark` Add a `/` character to directory matches. Note that this + requires additional stat calls. +* `nosort` Don't sort the results. +* `stat` Set to true to stat *all* results. This reduces performance + somewhat, and is completely unnecessary, unless `readdir` is presumed + to be an untrustworthy indicator of file existence. +* `silent` When an unusual error is encountered when attempting to + read a directory, a warning will be printed to stderr. Set the + `silent` option to true to suppress these warnings. +* `strict` When an unusual error is encountered when attempting to + read a directory, the process will just continue on in search of + other matches. Set the `strict` option to raise an error in these + cases. +* `cache` See `cache` property above. Pass in a previously generated + cache object to save some fs calls. +* `statCache` A cache of results of filesystem information, to prevent + unnecessary stat calls. While it should not normally be necessary + to set this, you may pass the statCache from one glob() call to the + options object of another, if you know that the filesystem will not + change between calls. (See "Race Conditions" below.) +* `symlinks` A cache of known symbolic links. You may pass in a + previously generated `symlinks` object to save `lstat` calls when + resolving `**` matches. +* `sync` Perform a synchronous glob search. +* `nounique` In some cases, brace-expanded patterns can result in the + same file showing up multiple times in the result set. By default, + this implementation prevents duplicates in the result set. Set this + flag to disable that behavior. +* `nonull` Set to never return an empty set, instead returning a set + containing the pattern itself. This is the default in glob(3). +* `debug` Set to enable debug logging in minimatch and glob. +* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. +* `noglobstar` Do not match `**` against multiple filenames. (Ie, + treat it as a normal `*` instead.) +* `noext` Do not match `+(a|b)` "extglob" patterns. +* `nocase` Perform a case-insensitive match. Note: on + case-insensitive filesystems, non-magic patterns will match by + default, since `stat` and `readdir` will not raise errors. +* `matchBase` Perform a basename-only match if the pattern does not + contain any slash characters. That is, `*.js` would be treated as + equivalent to `**/*.js`, matching all js files in all directories. +* `nonegate` Suppress `negate` behavior. (See below.) +* `nocomment` Suppress `comment` behavior. (See below.) +* `nonull` Return the pattern when no matches are found. +* `nodir` Do not match directories, only files. + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between node-glob and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.3, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +Note that symlinked directories are not crawled as part of a `**`, +though their contents may match against subsequent portions of the +pattern. This prevents infinite loops and duplicates and the like. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then glob returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. + +## Windows + +**Please only use forward-slashes in glob expressions.** + +Though windows uses either `/` or `\` as its path separator, only `/` +characters are used by this glob implementation. You must use +forward-slashes **only** in glob expressions. Back-slashes will always +be interpreted as escape characters, not path separators. + +Results from absolute patterns such as `/foo/*` are mounted onto the +root setting using `path.join`. On windows, this will by default result +in `/foo/*` matching `C:\foo\bar.txt`. + +## Race Conditions + +Glob searching, by its very nature, is susceptible to race conditions, +since it relies on directory walking and such. + +As a result, it is possible that a file that exists when glob looks for +it may have been deleted or modified by the time it returns the result. + +As part of its internal implementation, this program caches all stat +and readdir calls that it makes, in order to cut down on system +overhead. However, this also makes it even more susceptible to races, +especially if the cache or statCache objects are reused between glob +calls. + +Users are thus advised not to use a glob result as a guarantee of +filesystem state in the face of rapid changes. For the vast majority +of operations, this is never a problem. + +## Contributing + +Any change to behavior (including bugfixes) must come with a test. + +Patches that fail tests or reduce performance will be rejected. + +``` +# to run tests +npm test + +# to re-generate test fixtures +npm run test-regen + +# to benchmark against bash/zsh +npm run bench + +# to profile javascript +npm run prof +``` diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js new file mode 100644 index 0000000000..610d1245b4 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js @@ -0,0 +1,177 @@ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.isAbsolute = process.platform === "win32" ? absWin : absUnix +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var Minimatch = minimatch.Minimatch + +function absWin (p) { + if (absUnix(p)) return true + // pull off the device/UNC bit from a windows path. + // from node's lib/path.js + var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ + var result = splitDeviceRe.exec(p) + var device = result[1] || '' + var isUnc = device && device.charAt(1) !== ':' + var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute + + return isAbsolute +} + +function absUnix (p) { + return p.charAt(0) === "/" || p === "" +} + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.pattern = pattern + self.strict = options.strict !== false + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + self.found = all +} + +function mark (self, p) { + var c = self.cache[p] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + self.statCache[m] = self.statCache[p] + self.cache[m] = self.cache[p] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === "/") { + abs = path.join(self.root, f) + } else if (exports.isAbsolute(f)) { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } + return abs +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/g.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/g.js deleted file mode 100644 index 46332b09b7..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/g.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "test/a/**/[cg]/../[cg]" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/usr-local.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/usr-local.js deleted file mode 100644 index 6d5ab08992..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/examples/usr-local.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "{./*/*,/*,/usr/local/*}" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js index 32bd41a66f..7401e0b7e9 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js @@ -1,728 +1,649 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// readdir(PREFIX) as ENTRIES -// If fails, END -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $]) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - - - -module.exports = glob - -var fs = require("fs") -, minimatch = require("minimatch") -, Minimatch = minimatch.Minimatch -, inherits = require("inherits") -, EE = require("events").EventEmitter -, path = require("path") -, isDir = {} -, assert = require("assert").ok - -function glob (pattern, options, cb) { - if (typeof options === "function") cb = options, options = {} - if (!options) options = {} - - if (typeof options === "number") { - deprecated() - return - } - - var g = new Glob(pattern, options, cb) - return g.sync ? g.found : g -} - -glob.fnmatch = deprecated - -function deprecated () { - throw new Error("glob's interface has changed. Please see the docs.") -} - -glob.sync = globSync -function globSync (pattern, options) { - if (typeof options === "number") { - deprecated() - return - } - - options = options || {} - options.sync = true - return glob(pattern, options) -} - -this._processingEmitQueue = false - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (!(this instanceof Glob)) { - return new Glob(pattern, options, cb) - } - - if (typeof options === "function") { - cb = options - options = null - } - - if (typeof cb === "function") { - this.on("error", cb) - this.on("end", function (matches) { - cb(null, matches) - }) - } - - options = options || {} - - this._endEmitted = false - this.EOF = {} - this._emitQueue = [] - - this.paused = false - this._processingEmitQueue = false - - this.maxDepth = options.maxDepth || 1000 - this.maxLength = options.maxLength || Infinity - this.cache = options.cache || {} - this.statCache = options.statCache || {} - - this.changedCwd = false - var cwd = process.cwd() - if (!options.hasOwnProperty("cwd")) this.cwd = cwd - else { - this.cwd = options.cwd - this.changedCwd = path.resolve(options.cwd) !== cwd - } - - this.root = options.root || path.resolve(this.cwd, "/") - this.root = path.resolve(this.root) - if (process.platform === "win32") - this.root = this.root.replace(/\\/g, "/") - - this.nomount = !!options.nomount - - if (!pattern) { - throw new Error("must provide pattern") - } - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - this.strict = options.strict !== false - this.dot = !!options.dot - this.mark = !!options.mark - this.sync = !!options.sync - this.nounique = !!options.nounique - this.nonull = !!options.nonull - this.nosort = !!options.nosort - this.nocase = !!options.nocase - this.stat = !!options.stat - - this.debug = !!options.debug || !!options.globDebug - if (this.debug) - this.log = console.error - - this.silent = !!options.silent - - var mm = this.minimatch = new Minimatch(pattern, options) - this.options = mm.options - pattern = this.pattern = mm.pattern - - this.error = null - this.aborted = false - - // list of all the patterns that ** has resolved do, so - // we can avoid visiting multiple times. - this._globstars = {} - - EE.call(this) - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - this.minimatch.set.forEach(iterator.bind(this)) - function iterator (pattern, i, set) { - this._process(pattern, 0, i, function (er) { - if (er) this.emit("error", er) - if (-- n <= 0) this._finish() - }) - } -} - -Glob.prototype.log = function () {} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - - var nou = this.nounique - , all = nou ? [] : {} - - for (var i = 0, l = this.matches.length; i < l; i ++) { - var matches = this.matches[i] - this.log("matches[%d] =", i, matches) - // do like the shell, and spit out the literal glob - if (!matches) { - if (this.nonull) { - var literal = this.minimatch.globSet[i] - if (nou) all.push(literal) - else all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) all.push.apply(all, m) - else m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) all = Object.keys(all) - - if (!this.nosort) { - all = all.sort(this.nocase ? alphasorti : alphasort) - } - - if (this.mark) { - // at *some* point we statted all of these - all = all.map(this._mark, this) - } - - this.log("emitting end", all) - - this.EOF = this.found = all - this.emitMatch(this.EOF) -} - -function alphasorti (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return alphasort(a, b) -} - -function alphasort (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -Glob.prototype._mark = function (p) { - var c = this.cache[p] - var m = p - if (c) { - var isDir = c === 2 || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - this.statCache[m] = this.statCache[p] - this.cache[m] = this.cache[p] - } - } - - return m -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit("abort") -} - -Glob.prototype.pause = function () { - if (this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = true - this.emit("pause") -} - -Glob.prototype.resume = function () { - if (!this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = false - this.emit("resume") - this._processEmitQueue() - //process.nextTick(this.emit.bind(this, "resume")) -} - -Glob.prototype.emitMatch = function (m) { - this.log('emitMatch', m) - this._emitQueue.push(m) - this._processEmitQueue() -} - -Glob.prototype._processEmitQueue = function (m) { - this.log("pEQ paused=%j processing=%j m=%j", this.paused, - this._processingEmitQueue, m) - var done = false - while (!this._processingEmitQueue && - !this.paused) { - this._processingEmitQueue = true - var m = this._emitQueue.shift() - this.log(">processEmitQueue", m === this.EOF ? ":EOF:" : m) - if (!m) { - this.log(">processEmitQueue, falsey m") - this._processingEmitQueue = false - break - } - - if (m === this.EOF || !(this.mark && !this.stat)) { - this.log("peq: unmarked, or eof") - next.call(this, 0, false) - } else if (this.statCache[m]) { - var sc = this.statCache[m] - var exists - if (sc) - exists = sc.isDirectory() ? 2 : 1 - this.log("peq: stat cached") - next.call(this, exists, exists === 2) - } else { - this.log("peq: _stat, then next") - this._stat(m, next) - } - - function next(exists, isDir) { - this.log("next", m, exists, isDir) - var ev = m === this.EOF ? "end" : "match" - - // "end" can only happen once. - assert(!this._endEmitted) - if (ev === "end") - this._endEmitted = true - - if (exists) { - // Doesn't mean it necessarily doesn't exist, it's possible - // we just didn't check because we don't care that much, or - // this is EOF anyway. - if (isDir && !m.match(/\/$/)) { - m = m + "/" - } else if (!isDir && m.match(/\/$/)) { - m = m.replace(/\/+$/, "") - } - } - this.log("emit", ev, m) - this.emit(ev, m) - this._processingEmitQueue = false - if (done && m !== this.EOF && !this.paused) - this._processEmitQueue() - } - } - done = true -} - -Glob.prototype._process = function (pattern, depth, index, cb_) { - assert(this instanceof Glob) - - var cb = function cb (er, res) { - assert(this instanceof Glob) - if (this.paused) { - if (!this._processQueue) { - this._processQueue = [] - this.once("resume", function () { - var q = this._processQueue - this._processQueue = null - q.forEach(function (cb) { cb() }) - }) - } - this._processQueue.push(cb_.bind(this, er, res)) - } else { - cb_.call(this, er, res) - } - }.bind(this) - - if (this.aborted) return cb() - - if (depth > this.maxDepth) return cb() - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === "string") { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - prefix = pattern.join("/") - this._stat(prefix, function (exists, isDir) { - // either it's there, or it isn't. - // nothing more to do, either way. - if (exists) { - if (prefix && isAbsolute(prefix) && !this.nomount) { - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - } - } - - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][prefix] = true - this.emitMatch(prefix) - } - return cb() - }) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's "absolute" like /foo/bar, - // or "relative" like "../baz" - prefix = pattern.slice(0, n) - prefix = prefix.join("/") - break - } - - // get the list of entries. - var read - if (prefix === null) read = "." - else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { - if (!prefix || !isAbsolute(prefix)) { - prefix = path.join("/", prefix) - } - read = prefix = path.resolve(prefix) - - // if (process.platform === "win32") - // read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") - - this.log('absolute: ', prefix, this.root, pattern, read) - } else { - read = prefix - } - - this.log('readdir(%j)', read, this.cwd, this.root) - - return this._readdir(read, function (er, entries) { - if (er) { - // not a directory! - // this means that, whatever else comes after this, it can never match - return cb() - } - - // globstar is special - if (pattern[n] === minimatch.GLOBSTAR) { - // test without the globstar, and with every child both below - // and replacing the globstar. - var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] - entries.forEach(function (e) { - if (e.charAt(0) === "." && !this.dot) return - // instead of the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) - // below the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) - }, this) - - s = s.filter(function (pattern) { - var key = gsKey(pattern) - var seen = !this._globstars[key] - this._globstars[key] = true - return seen - }, this) - - if (!s.length) - return cb() - - // now asyncForEach over this - var l = s.length - , errState = null - s.forEach(function (gsPattern) { - this._process(gsPattern, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l <= 0) return cb() - }) - }, this) - - return - } - - // not a globstar - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = pattern[n] - var rawGlob = pattern[n]._glob - , dotOk = this.dot || rawGlob.charAt(0) === "." - - entries = entries.filter(function (e) { - return (e.charAt(0) !== "." || dotOk) && - e.match(pattern[n]) - }) - - // If n === pattern.length - 1, then there's no need for the extra stat - // *unless* the user has specified "mark" or "stat" explicitly. - // We know that they exist, since the readdir returned them. - if (n === pattern.length - 1 && - !this.mark && - !this.stat) { - entries.forEach(function (e) { - if (prefix) { - if (prefix !== "/") e = prefix + "/" + e - else e = prefix + e - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e) - } - - if (process.platform === "win32") - e = e.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][e] = true - this.emitMatch(e) - }, this) - return cb.call(this) - } - - - // now test all the remaining entries as stand-ins for that part - // of the pattern. - var l = entries.length - , errState = null - if (l === 0) return cb() // no matches possible - entries.forEach(function (e) { - var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) - this._process(p, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l === 0) return cb.call(this) - }) - }, this) - }) - -} - -function gsKey (pattern) { - return '**' + pattern.map(function (p) { - return (p === minimatch.GLOBSTAR) ? '**' : (''+p) - }).join('/') -} - -Glob.prototype._stat = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterStat(f, abs, cb, er) - } - - this.log('stat', [this.cwd, f, '=', abs]) - - if (!this.stat && this.cache.hasOwnProperty(f)) { - var exists = this.cache[f] - , isDir = exists && (Array.isArray(exists) || exists === 2) - if (this.sync) return cb.call(this, !!exists, isDir) - return process.nextTick(cb.bind(this, !!exists, isDir)) - } - - var stat = this.statCache[abs] - if (this.sync || stat) { - var er - try { - stat = fs.statSync(abs) - } catch (e) { - er = e - } - this._afterStat(f, abs, cb, er, stat) - } else { - fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) - } -} - -Glob.prototype._afterStat = function (f, abs, cb, er, stat) { - var exists - assert(this instanceof Glob) - - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { - this.log("should be ENOTDIR, fake it") - - er = new Error("ENOTDIR, not a directory '" + abs + "'") - er.path = abs - er.code = "ENOTDIR" - stat = null - } - - var emit = !this.statCache[abs] - this.statCache[abs] = stat - - if (er || !stat) { - exists = false - } else { - exists = stat.isDirectory() ? 2 : 1 - if (emit) - this.emit('stat', f, stat) - } - this.cache[f] = this.cache[f] || exists - cb.call(this, !!exists, exists === 2) -} - -Glob.prototype._readdir = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (isAbsolute(f)) { - abs = f - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterReaddir(f, abs, cb, er) - } - - this.log('readdir', [this.cwd, f, abs]) - if (this.cache.hasOwnProperty(f)) { - var c = this.cache[f] - if (Array.isArray(c)) { - if (this.sync) return cb.call(this, null, c) - return process.nextTick(cb.bind(this, null, c)) - } - - if (!c || c === 1) { - // either ENOENT or ENOTDIR - var code = c ? "ENOTDIR" : "ENOENT" - , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) - er.path = f - er.code = code - this.log(f, er) - if (this.sync) return cb.call(this, er) - return process.nextTick(cb.bind(this, er)) - } - - // at this point, c === 2, meaning it's a dir, but we haven't - // had to read it yet, or c === true, meaning it's *something* - // but we don't have any idea what. Need to read it, either way. - } - - if (this.sync) { - var er, entries - try { - entries = fs.readdirSync(abs) - } catch (e) { - er = e - } - return this._afterReaddir(f, abs, cb, er, entries) - } - - fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) -} - -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { - assert(this instanceof Glob) - if (entries && !er) { - this.cache[f] = entries - // if we haven't asked to stat everything for suresies, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. This also gets us one step - // further into ELOOP territory. - if (!this.mark && !this.stat) { - entries.forEach(function (e) { - if (f === "/") e = f + e - else e = f + "/" + e - this.cache[e] = true - }, this) - } - - return cb.call(this, er, entries) - } - - // now handle errors, and cache the information - if (er) switch (er.code) { - case "ENOTDIR": // totally normal. means it *does* exist. - this.cache[f] = 1 - return cb.call(this, er) - case "ENOENT": // not terribly unusual - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[f] = false - return cb.call(this, er) - default: // some unusual error. Treat as failure. - this.cache[f] = false - if (this.strict) this.emit("error", er) - if (!this.silent) console.error("glob error", er) - return cb.call(this, er) - } -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var isAbsolute = common.isAbsolute +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + //console.error('FINISH', this.matches) + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (!this.matches[index][e]) { + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (!this.stat && !this.mark) + return this.emit('match', e) + + var self = this + this._stat(this._makeAbs(e), function (er, c, st) { + self.emit('stat', e, st) + self.emit('match', e) + }) + } +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[f] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[f] = false + break + + default: // some unusual error. Treat as failure. + this.cache[f] = false + if (this.strict) return this.emit('error', er) + if (!this.silent) console.error('glob error', er) + break + } + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = f + if (f.charAt(0) === '/') + abs = path.join(this.root, f) + else if (this.changedCwd) + abs = path.resolve(this.cwd, f) + + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, f)) { + var c = this.cache[f] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but not how we need it + if (abs.slice(-1) === '/' && c !== 'DIR') + return cb() + + return cb(null, c) + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else + return cb(null, stat.isDirectory() ? 'DIR' : 'FILE', stat) + } + + var self = this + var statcb = inflight('stat\0' + abs, statcb_) + if (statcb) + fs.stat(abs, statcb) + + function statcb_ (er, stat) { + self._stat2(f, abs, er, stat, cb) + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[f] = this.cache[f] || c + return cb(null, c, stat) +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc new file mode 100644 index 0000000000..b7a1550efc --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc @@ -0,0 +1,17 @@ +{ + "env" : { + "node" : true + }, + "rules" : { + "semi": [2, "never"], + "strict": 0, + "quotes": [1, "single", "avoid-escape"], + "no-use-before-define": 0, + "curly": 0, + "no-underscore-dangle": 0, + "no-lonely-if": 1, + "no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}], + "no-mixed-requires": 0, + "space-infix-ops": 0 + } +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/LICENSE new file mode 100644 index 0000000000..05eeeb88c2 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/README.md new file mode 100644 index 0000000000..6dc8929171 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/README.md @@ -0,0 +1,37 @@ +# inflight + +Add callbacks to requests in flight to avoid async duplication + +## USAGE + +```javascript +var inflight = require('inflight') + +// some request that does some stuff +function req(key, callback) { + // key is any random string. like a url or filename or whatever. + // + // will return either a falsey value, indicating that the + // request for this key is already in flight, or a new callback + // which when called will call all callbacks passed to inflightk + // with the same key + callback = inflight(key, callback) + + // If we got a falsey value back, then there's already a req going + if (!callback) return + + // this is where you'd fetch the url or whatever + // callback is also once()-ified, so it can safely be assigned + // to multiple events etc. First call wins. + setTimeout(function() { + callback(null, key) + }, 100) +} + +// only assigns a single setTimeout +// when it dings, all cbs get called +req('foo', cb1) +req('foo', cb2) +req('foo', cb3) +req('foo', cb4) +``` diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/inflight.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/inflight.js new file mode 100644 index 0000000000..8bc96cbd37 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/inflight.js @@ -0,0 +1,44 @@ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md new file mode 100644 index 0000000000..98eab2522b --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json new file mode 100644 index 0000000000..8145dc8c45 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json @@ -0,0 +1,52 @@ +{ + "name": "wrappy", + "version": "1.0.1", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^0.4.12" + }, + "scripts": { + "test": "tap test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy", + "gitHead": "006a8cbac6b99988315834c207896eed71fd069a", + "_id": "wrappy@1.0.1", + "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", + "_from": "wrappy@>=1.0.0 <2.0.0", + "_npmVersion": "2.0.0", + "_nodeVersion": "0.10.31", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "dist": { + "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", + "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + }, + "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js new file mode 100644 index 0000000000..5ed0fcdfd9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js @@ -0,0 +1,51 @@ +var test = require('tap').test +var wrappy = require('../wrappy.js') + +test('basic', function (t) { + function onceifier (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } + } + onceifier.iAmOnce = {} + var once = wrappy(onceifier) + t.equal(once.iAmOnce, onceifier.iAmOnce) + + var called = 0 + function boo () { + t.equal(called, 0) + called++ + } + // has some rando property + boo.iAmBoo = true + + var onlyPrintOnce = once(boo) + + onlyPrintOnce() // prints 'boo' + onlyPrintOnce() // does nothing + t.equal(called, 1) + + // random property is retained! + t.equal(onlyPrintOnce.iAmBoo, true) + + var logs = [] + var logwrap = wrappy(function (msg, cb) { + logs.push(msg + ' wrapping cb') + return function () { + logs.push(msg + ' before cb') + var ret = cb.apply(this, arguments) + logs.push(msg + ' after cb') + } + }) + + var c = logwrap('foo', function () { + t.same(logs, [ 'foo wrapping cb', 'foo before cb' ]) + }) + c() + t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ]) + + t.end() +}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000000..bb7e7d6fcf --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/package.json new file mode 100644 index 0000000000..a6645bc549 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/package.json @@ -0,0 +1,61 @@ +{ + "name": "inflight", + "version": "1.0.4", + "description": "Add callbacks to requests in flight to avoid async duplication", + "main": "inflight.js", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + }, + "devDependencies": { + "tap": "^0.4.10" + }, + "scripts": { + "test": "tap test.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/inflight" + }, + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/isaacs/inflight/issues" + }, + "homepage": "https://github.com/isaacs/inflight", + "license": "ISC", + "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba", + "_id": "inflight@1.0.4", + "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a", + "_from": "inflight@>=1.0.4 <2.0.0", + "_npmVersion": "2.1.3", + "_nodeVersion": "0.10.32", + "_npmUser": { + "name": "othiym23", + "email": "ogd@aoaioxxysz.net" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + }, + { + "name": "othiym23", + "email": "ogd@aoaioxxysz.net" + }, + { + "name": "iarna", + "email": "me@re-becca.org" + } + ], + "dist": { + "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a", + "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/test.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/test.js new file mode 100644 index 0000000000..2bb75b3881 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/test.js @@ -0,0 +1,97 @@ +var test = require('tap').test +var inf = require('./inflight.js') + + +function req (key, cb) { + cb = inf(key, cb) + if (cb) setTimeout(function () { + cb(key) + cb(key) + }) + return cb +} + +test('basic', function (t) { + var calleda = false + var a = req('key', function (k) { + t.notOk(calleda) + calleda = true + t.equal(k, 'key') + if (calledb) t.end() + }) + t.ok(a, 'first returned cb function') + + var calledb = false + var b = req('key', function (k) { + t.notOk(calledb) + calledb = true + t.equal(k, 'key') + if (calleda) t.end() + }) + + t.notOk(b, 'second should get falsey inflight response') +}) + +test('timing', function (t) { + var expect = [ + 'method one', + 'start one', + 'end one', + 'two', + 'tick', + 'three' + ] + var i = 0 + + function log (m) { + t.equal(m, expect[i], m + ' === ' + expect[i]) + ++i + if (i === expect.length) + t.end() + } + + function method (name, cb) { + log('method ' + name) + process.nextTick(cb) + } + + var one = inf('foo', function () { + log('start one') + var three = inf('foo', function () { + log('three') + }) + if (three) method('three', three) + log('end one') + }) + + method('one', one) + + var two = inf('foo', function () { + log('two') + }) + if (two) method('one', two) + + process.nextTick(log.bind(null, 'tick')) +}) + +test('parameters', function (t) { + t.plan(8) + + var a = inf('key', function (first, second, third) { + t.equal(first, 1) + t.equal(second, 2) + t.equal(third, 3) + }) + t.ok(a, 'first returned cb function') + + var b = inf('key', function (first, second, third) { + t.equal(first, 1) + t.equal(second, 2) + t.equal(third, 3) + }) + t.notOk(b, 'second should get falsey inflight response') + + setTimeout(function () { + a(1, 2, 3) + }) +}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/LICENSE index 1d68a100c1..dea3013d67 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/LICENSE +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/LICENSE @@ -1,16 +1,16 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/README.md index b41e30c2c4..b1c5665855 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/README.md +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/README.md @@ -1,42 +1,42 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits.js index 1b61effa9b..29f5e24f57 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits.js @@ -1 +1 @@ -module.exports = require('util').inherits +module.exports = require('util').inherits diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits_browser.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits_browser.js index 1464d7f3a0..c1e78a75e6 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits_browser.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/inherits_browser.js @@ -1,23 +1,23 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/package.json index fb64b5b1c9..235833b2c3 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/package.json +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/package.json @@ -1,51 +1,51 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@2", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "homepage": "https://github.com/isaacs/inherits" -} +{ + "name": "inherits", + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "version": "2.0.1", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "main": "./inherits.js", + "browser": "./inherits_browser.js", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/inherits" + }, + "license": "ISC", + "scripts": { + "test": "node test" + }, + "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/inherits/issues" + }, + "_id": "inherits@2.0.1", + "dist": { + "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "_from": "inherits@>=2.0.0 <3.0.0", + "_npmVersion": "1.3.8", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "directories": {}, + "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", + "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "homepage": "https://github.com/isaacs/inherits" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/test.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/test.js index 347dd1f25c..fc53012d31 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/test.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inherits/test.js @@ -1,25 +1,25 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') +var inherits = require('./inherits.js') +var assert = require('assert') + +function test(c) { + assert(c.constructor === Child) + assert(c.constructor.super_ === Parent) + assert(Object.getPrototypeOf(c) === Child.prototype) + assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) + assert(c instanceof Child) + assert(c instanceof Parent) +} + +function Child() { + Parent.call(this) + test(this) +} + +function Parent() {} + +inherits(Child, Parent) + +var c = new Child +test(c) + +console.log('ok') diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE index f3de1ece45..05a4010949 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/LICENSE @@ -1,23 +1,23 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md index dcae65887f..d458bc2e0a 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/README.md @@ -1,218 +1,216 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself if this option is set. When not set, an empty list -is returned if there are no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. +# minimatch + +A minimal matching utility. + +[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +## Minimatch Class + +Create a minimatch object by instanting the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +## Functions + +The top-level exported function has a `cache` property, which is an LRU +cache set to store 100 items. So, calling these methods repeatedly +with the same pattern and options will use the same Minimatch object, +saving the cost of parsing it multiple times. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself if this option is set. When not set, an empty list +is returned if there are no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) + + +## Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js new file mode 100644 index 0000000000..cf58a3f60c --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/browser.js @@ -0,0 +1,1114 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o any number of characters + , star = qmark + "*?" + + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" + + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" + + // characters that need to be escaped in RegExp. + , reSpecials = charSet("().*{}+?[]^$\\!") + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split("").reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + + +function minimatch (p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + return false + } + + // "" only matches "" + if (pattern.trim() === "") return p === "" + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (isWindows) + pattern = pattern.split("\\").join("/") + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function() {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return -1 === s.indexOf(false) + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + , negate = false + , options = this.options + , negateOffset = 0 + + if (options.nonegate) return + + for ( var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === "!" + ; i ++) { + negate = !negate + negateOffset ++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) + options = this.options + else + options = {} + } + + pattern = typeof pattern === "undefined" + ? this.pattern : pattern + + if (typeof pattern === "undefined") { + throw new Error("undefined pattern") + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === "**") return GLOBSTAR + if (pattern === "") return "" + + var re = "" + , hasMagic = !!options.nocase + , escaping = false + // ? => one single character + , patternListStack = [] + , plType + , stateChar + , inClass = false + , reClassStart = -1 + , classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + , patternStart = pattern.charAt(0) === "." ? "" // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" + : "(?!\\.)" + , self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += star + hasMagic = true + break + case "?": + re += qmark + hasMagic = true + break + default: + re += "\\"+stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for ( var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i ++ ) { + + this.debug("%s\t%s %s %j", pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += "\\" + c + escaping = false + continue + } + + SWITCH: switch (c) { + case "/": + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case "\\": + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === "!" && i === classStart + 1) c = "^" + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case "(": + if (inClass) { + re += "(" + continue + } + + if (!stateChar) { + re += "\\(" + continue + } + + plType = stateChar + patternListStack.push({ type: plType + , start: i - 1 + , reStart: re.length }) + // negation is (?:(?!js)[^/]*) + re += stateChar === "!" ? "(?:(?!" : "(?:" + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ")": + if (inClass || !patternListStack.length) { + re += "\\)" + continue + } + + clearStateChar() + hasMagic = true + re += ")" + plType = patternListStack.pop().type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case "!": + re += "[^/]*?)" + break + case "?": + case "+": + case "*": re += plType + case "@": break // the default anyway + } + continue + + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|" + escaping = false + continue + } + + clearStateChar() + re += "|" + continue + + // these are mostly the same in regexp and glob + case "[": + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += "\\" + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case "]": + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += "\\" + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + new RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === "^" && inClass)) { + re += "\\" + } + + re += c + + } // switch + } // for + + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + var cs = pattern.substr(classStart + 1) + , sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + var pl + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = "\\" + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + "|" + }) + + this.debug("tail=%j\n %s", tail, tail) + var t = pl.type === "*" ? star + : pl.type === "?" ? qmark + : "\\" + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + + t + "\\(" + + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += "\\\\" + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case ".": + case "[": + case "(": addPatternStart = true + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== "" && hasMagic) re = "(?=.)" + re + + if (addPatternStart) re = patternStart + re + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [ re, hasMagic ] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? "i" : "" + , regExp = new RegExp("^" + re + "$", flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) return this.regexp = false + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + , flags = options.nocase ? "i" : "" + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === "string") ? regExpEscape(p) + : p._src + }).join("\\\/") + }).join("|") + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = "^(?:" + re + ")$" + + // can match anything, as long as it's not this. + if (this.negate) re = "^(?!" + re + ").*$" + + try { + return this.regexp = new RegExp(re, flags) + } catch (ex) { + return this.regexp = false + } +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug("match", f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === "" + + if (f === "/" && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (isWindows) + f = f.split("\\").join("/") + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, "split", f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, "set", set) + + // Find the basename of the path by looking for the last non-empty segment + var filename; + for (var i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (var i = 0, l = set.length; i < l; i ++) { + var pattern = set[i], file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug("matchOne", + { "this": this + , file: file + , pattern: pattern }) + + this.debug("matchOne", file.length, pattern.length) + + for ( var fi = 0 + , pi = 0 + , fl = file.length + , pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi ++, pi ++ ) { + + this.debug("matchOne loop") + var p = pattern[pi] + , f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + , pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for ( ; fi < fl; fi ++) { + if (file[fi] === "." || file[fi] === ".." || + (!options.dot && file[fi].charAt(0) === ".")) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + WHILE: while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', + file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === "." || swallowee === ".." || + (!options.dot && swallowee.charAt(0) === ".")) { + this.debug("dot detected!", file, fr, pattern, pr) + break WHILE + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr ++ + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug("\n>>> no match, partial?", file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug("string match", p, f, hit) + } else { + hit = f.match(p) + this.debug("pattern match", p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + return emptyFileEnd + } + + // should be unreachable. + throw new Error("wtf?") +} + + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, "$1") +} + + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") +} + +},{"brace-expansion":2}],2:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + var expansions = expand(escapeBraces(str)); + return expansions.filter(identity).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = /^(.*,)+(.+)?$/.test(m.body); + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0]).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + expansions.push([pre, N[j], post[k]].join('')) + } + } + + return expansions; +} + + +},{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){ +module.exports = balanced; +function balanced(a, b, str) { + var bal = 0; + var m = {}; + var ended = false; + + for (var i = 0; i < str.length; i++) { + if (a == str.substr(i, a.length)) { + if (!('start' in m)) m.start = i; + bal++; + } + else if (b == str.substr(i, b.length) && 'start' in m) { + ended = true; + bal--; + if (!bal) { + m.end = i; + m.pre = str.substr(0, m.start); + m.body = (m.end - m.start > 1) + ? str.substring(m.start + a.length, m.end) + : ''; + m.post = str.slice(m.end + b.length); + return m; + } + } + } + + // if we opened more than we closed, find the one we closed + if (bal && ended) { + var start = m.start + a.length; + m = balanced(a, b, str.substr(start)); + if (m) { + m.start += start; + m.end += start; + m.pre = str.slice(0, start) + m.pre; + } + return m; + } +} + +},{}],4:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (Array.isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +},{}]},{},[1]); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js index fb7e702b09..2bfdf62b74 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/minimatch.js @@ -1,1061 +1,868 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function() {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - this.debug(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - this.debug("no sets") - return [pattern] - } - - var tail = braceExpand.call(this, pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - this.debug("numset", numset[1], numset[2]) - var suf = braceExpand.call(this, pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - this.debug("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - this.debug("didn't close", pattern) - return braceExpand.call(this, "\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - this.debug("set", set) - this.debug("suffix", pattern.substr(i)) - var suf = braceExpand.call(this, pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - this.debug("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand.call(this, p, options) - }, this) - this.debug("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - clearStateChar() - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - clearStateChar() - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, "split", f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, "set", set) - - // Find the basename of the path by looking for the last non-empty segment - var filename; - for (var i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) - - this.debug("matchOne", file.length, pattern.length) - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") - var p = pattern[pi] - , f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug("string match", p, f, hit) - } else { - hit = f.match(p) - this.debug("pattern match", p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var isWindows = false +if (typeof process !== 'undefined' && process.platform === 'win32') + isWindows = true + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} + , expand = require("brace-expansion") + + // any single thing other than / + // don't need to escape / when using new RegExp() + , qmark = "[^/]" + + // * => any number of characters + , star = qmark + "*?" + + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" + + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" + + // characters that need to be escaped in RegExp. + , reSpecials = charSet("().*{}+?[]^$\\!") + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split("").reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + + +function minimatch (p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + return false + } + + // "" only matches "" + if (pattern.trim() === "") return p === "" + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (isWindows) + pattern = pattern.split("\\").join("/") + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function() {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return -1 === s.indexOf(false) + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + , negate = false + , options = this.options + , negateOffset = 0 + + if (options.nonegate) return + + for ( var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === "!" + ; i ++) { + negate = !negate + negateOffset ++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) + options = this.options + else + options = {} + } + + pattern = typeof pattern === "undefined" + ? this.pattern : pattern + + if (typeof pattern === "undefined") { + throw new Error("undefined pattern") + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === "**") return GLOBSTAR + if (pattern === "") return "" + + var re = "" + , hasMagic = !!options.nocase + , escaping = false + // ? => one single character + , patternListStack = [] + , plType + , stateChar + , inClass = false + , reClassStart = -1 + , classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + , patternStart = pattern.charAt(0) === "." ? "" // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" + : "(?!\\.)" + , self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += star + hasMagic = true + break + case "?": + re += qmark + hasMagic = true + break + default: + re += "\\"+stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for ( var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i ++ ) { + + this.debug("%s\t%s %s %j", pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += "\\" + c + escaping = false + continue + } + + SWITCH: switch (c) { + case "/": + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case "\\": + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === "!" && i === classStart + 1) c = "^" + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case "(": + if (inClass) { + re += "(" + continue + } + + if (!stateChar) { + re += "\\(" + continue + } + + plType = stateChar + patternListStack.push({ type: plType + , start: i - 1 + , reStart: re.length }) + // negation is (?:(?!js)[^/]*) + re += stateChar === "!" ? "(?:(?!" : "(?:" + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ")": + if (inClass || !patternListStack.length) { + re += "\\)" + continue + } + + clearStateChar() + hasMagic = true + re += ")" + plType = patternListStack.pop().type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case "!": + re += "[^/]*?)" + break + case "?": + case "+": + case "*": re += plType + case "@": break // the default anyway + } + continue + + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|" + escaping = false + continue + } + + clearStateChar() + re += "|" + continue + + // these are mostly the same in regexp and glob + case "[": + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += "\\" + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case "]": + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += "\\" + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + new RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === "^" && inClass)) { + re += "\\" + } + + re += c + + } // switch + } // for + + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + var cs = pattern.substr(classStart + 1) + , sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + var pl + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = "\\" + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + "|" + }) + + this.debug("tail=%j\n %s", tail, tail) + var t = pl.type === "*" ? star + : pl.type === "?" ? qmark + : "\\" + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + + t + "\\(" + + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += "\\\\" + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case ".": + case "[": + case "(": addPatternStart = true + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== "" && hasMagic) re = "(?=.)" + re + + if (addPatternStart) re = patternStart + re + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [ re, hasMagic ] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? "i" : "" + , regExp = new RegExp("^" + re + "$", flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) return this.regexp = false + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + , flags = options.nocase ? "i" : "" + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === "string") ? regExpEscape(p) + : p._src + }).join("\\\/") + }).join("|") + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = "^(?:" + re + ")$" + + // can match anything, as long as it's not this. + if (this.negate) re = "^(?!" + re + ").*$" + + try { + return this.regexp = new RegExp(re, flags) + } catch (ex) { + return this.regexp = false + } +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug("match", f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === "" + + if (f === "/" && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (isWindows) + f = f.split("\\").join("/") + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, "split", f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, "set", set) + + // Find the basename of the path by looking for the last non-empty segment + var filename; + for (var i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (var i = 0, l = set.length; i < l; i ++) { + var pattern = set[i], file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug("matchOne", + { "this": this + , file: file + , pattern: pattern }) + + this.debug("matchOne", file.length, pattern.length) + + for ( var fi = 0 + , pi = 0 + , fl = file.length + , pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi ++, pi ++ ) { + + this.debug("matchOne loop") + var p = pattern[pi] + , f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + , pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for ( ; fi < fl; fi ++) { + if (file[fi] === "." || file[fi] === ".." || + (!options.dot && file[fi].charAt(0) === ".")) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + WHILE: while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', + file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === "." || swallowee === ".." || + (!options.dot && swallowee.charAt(0) === ".")) { + this.debug("dot detected!", file, fr, pattern, pr) + break WHILE + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr ++ + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug("\n>>> no match, partial?", file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug("string match", p, f, hit) + } else { + hit = f.match(p) + this.debug("pattern match", p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + return emptyFileEnd + } + + // should be unreachable. + throw new Error("wtf?") +} + + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, "$1") +} + + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.npmignore b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore similarity index 68% rename from node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.npmignore rename to node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore index 08b25532d6..249bc20eb5 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/minimatch/.npmignore +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore @@ -1 +1,2 @@ -node_modules +node_modules +*.sw* diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.travis.yml b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml similarity index 71% rename from node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.travis.yml rename to node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml index 4e80ca0c14..6e5919de39 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/.travis.yml +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml @@ -1,3 +1,3 @@ -language: node_js -node_js: - - 0.8 +language: node_js +node_js: + - "0.10" diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md new file mode 100644 index 0000000000..62bc7bae3f --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md @@ -0,0 +1,121 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js new file mode 100644 index 0000000000..60ecfc74d4 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js @@ -0,0 +1,8 @@ +var expand = require('./'); + +console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html')); +console.log(expand('http://www.numericals.com/file{1..100..10}.txt')); +console.log(expand('http://www.letters.com/file{a..z..2}.txt')); +console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}')); +console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}')); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js new file mode 100644 index 0000000000..a23104e955 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js @@ -0,0 +1,191 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = /^(.*,)+(.+)?$/.test(m.body); + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/.jshintignore b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore similarity index 54% rename from node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/.jshintignore rename to node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore index 3afeb726a3..fd4f2b066b 100644 --- a/node_modules/gulp/node_modules/gulp-util/node_modules/vinyl/.jshintignore +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore @@ -1,2 +1,2 @@ -node_modules -coverage +node_modules +.DS_Store diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml new file mode 100644 index 0000000000..cc4dba29d9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile new file mode 100644 index 0000000000..fa5da71a6d --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test/*.js + +.PHONY: test + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md new file mode 100644 index 0000000000..2aff0ebff4 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md @@ -0,0 +1,80 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js new file mode 100644 index 0000000000..c02ad348e6 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js @@ -0,0 +1,5 @@ +var balanced = require('./'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js new file mode 100644 index 0000000000..d165ae8174 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js @@ -0,0 +1,38 @@ +module.exports = balanced; +function balanced(a, b, str) { + var bal = 0; + var m = {}; + var ended = false; + + for (var i = 0; i < str.length; i++) { + if (a == str.substr(i, a.length)) { + if (!('start' in m)) m.start = i; + bal++; + } + else if (b == str.substr(i, b.length) && 'start' in m) { + ended = true; + bal--; + if (!bal) { + m.end = i; + m.pre = str.substr(0, m.start); + m.body = (m.end - m.start > 1) + ? str.substring(m.start + a.length, m.end) + : ''; + m.post = str.slice(m.end + b.length); + return m; + } + } + } + + // if we opened more than we closed, find the one we closed + if (bal && ended) { + var start = m.start + a.length; + m = balanced(a, b, str.substr(start)); + if (m) { + m.start += start; + m.end += start; + m.pre = str.slice(0, start) + m.pre; + } + return m; + } +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json new file mode 100644 index 0000000000..ede6efefa0 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json @@ -0,0 +1,73 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "0.2.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~1.1.1" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "gitHead": "ba40ed78e7114a4a67c51da768a100184dead39c", + "bugs": { + "url": "https://github.com/juliangruber/balanced-match/issues" + }, + "_id": "balanced-match@0.2.0", + "_shasum": "38f6730c03aab6d5edbb52bd934885e756d71674", + "_from": "balanced-match@>=0.2.0 <0.3.0", + "_npmVersion": "2.1.8", + "_nodeVersion": "0.10.32", + "_npmUser": { + "name": "juliangruber", + "email": "julian@juliangruber.com" + }, + "maintainers": [ + { + "name": "juliangruber", + "email": "julian@juliangruber.com" + } + ], + "dist": { + "shasum": "38f6730c03aab6d5edbb52bd934885e756d71674", + "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js new file mode 100644 index 0000000000..36bfd39954 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js @@ -0,0 +1,56 @@ +var test = require('tape'); +var balanced = require('..'); + +test('balanced', function(t) { + t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), { + start: 3, + end: 12, + pre: 'pre', + body: 'in{nest}', + post: 'post' + }); + t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), { + start: 8, + end: 11, + pre: '{{{{{{{{', + body: 'in', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre{body{in}post'), { + start: 8, + end: 11, + pre: 'pre{body', + body: 'in', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), { + start: 4, + end: 13, + pre: 'pre}', + body: 'in{nest}', + post: 'post' + }); + t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), { + start: 3, + end: 8, + pre: 'pre', + body: 'body', + post: 'between{body2}post' + }); + t.notOk(balanced('{', '}', 'nope'), 'should be notOk'); + t.deepEqual(balanced('', '', 'preinnestpost'), { + start: 3, + end: 19, + pre: 'pre', + body: 'innest', + post: 'post' + }); + t.deepEqual(balanced('', '', 'preinnestpost'), { + start: 7, + end: 23, + pre: 'pre', + body: 'innest', + post: 'post' + }); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml new file mode 100644 index 0000000000..f1d0f13c8a --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE new file mode 100644 index 0000000000..ee27ba4b44 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown new file mode 100644 index 0000000000..408f70a1be --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown @@ -0,0 +1,62 @@ +concat-map +========== + +Concatenative mapdashery. + +[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) + +[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) + +example +======= + +``` js +var concatMap = require('concat-map'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); +``` + +*** + +``` +[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] +``` + +methods +======= + +``` js +var concatMap = require('concat-map') +``` + +concatMap(xs, fn) +----------------- + +Return an array of concatenated elements by calling `fn(x, i)` for each element +`x` and each index `i` in the array `xs`. + +When `fn(x, i)` returns an array, its result will be concatenated with the +result array. If `fn(x, i)` returns anything else, that value will be pushed +onto the end of the result array. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install concat-map +``` + +license +======= + +MIT + +notes +===== + +This module was written while sitting high above the ground in a tree. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js new file mode 100644 index 0000000000..33656217b6 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js @@ -0,0 +1,6 @@ +var concatMap = require('../'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js new file mode 100644 index 0000000000..b29a7812e5 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js @@ -0,0 +1,13 @@ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json new file mode 100644 index 0000000000..b516138098 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json @@ -0,0 +1,83 @@ +{ + "name": "concat-map", + "description": "concatenative mapdashery", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-concat-map.git" + }, + "main": "index.js", + "keywords": [ + "concat", + "concatMap", + "map", + "functional", + "higher-order" + ], + "directories": { + "example": "example", + "test": "test" + }, + "scripts": { + "test": "tape test/*.js" + }, + "devDependencies": { + "tape": "~2.4.0" + }, + "license": "MIT", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "testling": { + "files": "test/*.js", + "browsers": { + "ie": [ + 6, + 7, + 8, + 9 + ], + "ff": [ + 3.5, + 10, + 15 + ], + "chrome": [ + 10, + 22 + ], + "safari": [ + 5.1 + ], + "opera": [ + 12 + ] + } + }, + "bugs": { + "url": "https://github.com/substack/node-concat-map/issues" + }, + "homepage": "https://github.com/substack/node-concat-map", + "_id": "concat-map@0.0.1", + "dist": { + "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + }, + "_from": "concat-map@0.0.1", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "substack", + "email": "mail@substack.net" + }, + "maintainers": [ + { + "name": "substack", + "email": "mail@substack.net" + } + ], + "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js new file mode 100644 index 0000000000..fdbd7022f6 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js @@ -0,0 +1,39 @@ +var concatMap = require('../'); +var test = require('tape'); + +test('empty or not', function (t) { + var xs = [ 1, 2, 3, 4, 5, 6 ]; + var ixes = []; + var ys = concatMap(xs, function (x, ix) { + ixes.push(ix); + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; + }); + t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); + t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); + t.end(); +}); + +test('always something', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('scalars', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : x; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('undefs', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function () {}); + t.same(ys, [ undefined, undefined, undefined, undefined ]); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json new file mode 100644 index 0000000000..5f1866c8b5 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json @@ -0,0 +1,75 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "1.1.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh" + }, + "dependencies": { + "balanced-match": "^0.2.0", + "concat-map": "0.0.1" + }, + "devDependencies": { + "tape": "^3.0.3" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "gitHead": "b5fa3b1c74e5e2dba2d0efa19b28335641bc1164", + "bugs": { + "url": "https://github.com/juliangruber/brace-expansion/issues" + }, + "_id": "brace-expansion@1.1.0", + "_shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9", + "_from": "brace-expansion@>=1.0.0 <2.0.0", + "_npmVersion": "2.1.10", + "_nodeVersion": "0.10.32", + "_npmUser": { + "name": "juliangruber", + "email": "julian@juliangruber.com" + }, + "maintainers": [ + { + "name": "juliangruber", + "email": "julian@juliangruber.com" + }, + { + "name": "isaacs", + "email": "isaacs@npmjs.com" + } + ], + "dist": { + "shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9", + "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js new file mode 100644 index 0000000000..5fe2b8ad48 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js @@ -0,0 +1,32 @@ +var test = require('tape'); +var expand = require('..'); +var fs = require('fs'); +var resfile = __dirname + '/bash-results.txt'; +var cases = fs.readFileSync(resfile, 'utf8').split('><><><><'); + +// throw away the EOF marker +cases.pop() + +test('matches bash expansions', function(t) { + cases.forEach(function(testcase) { + var set = testcase.split('\n'); + var pattern = set.shift(); + var actual = expand(pattern); + + // If it expands to the empty string, then it's actually + // just nothing, but Bash is a singly typed language, so + // "nothing" is the same as "". + if (set.length === 1 && set[0] === '') { + set = [] + } else { + // otherwise, strip off the [] that were added so that + // "" expansions would be preserved properly. + set = set.map(function (s) { + return s.replace(/^\[|\]$/g, '') + }) + } + + t.same(actual, set, pattern); + }); + t.end(); +}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt new file mode 100644 index 0000000000..958148d26a --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt @@ -0,0 +1,1075 @@ +A{b,{d,e},{f,g}}Z +[AbZ] +[AdZ] +[AeZ] +[AfZ] +[AgZ]><><><><><><><\{a,b}{{a,b},a,b} +[{a,b}a] +[{a,b}b] +[{a,b}a] +[{a,b}b]><><><><{{a,b} +[{a] +[{b]><><><><{a,b}} +[a}] +[b}]><><><><{,} +><><><><><><><{,}b +[b] +[b]><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><{-01..5} +[-01] +[000] +[001] +[002] +[003] +[004] +[005]><><><><{-05..100..5} +[-05] +[000] +[005] +[010] +[015] +[020] +[025] +[030] +[035] +[040] +[045] +[050] +[055] +[060] +[065] +[070] +[075] +[080] +[085] +[090] +[095] +[100]><><><><{-05..100} +[-05] +[-04] +[-03] +[-02] +[-01] +[000] +[001] +[002] +[003] +[004] +[005] +[006] +[007] +[008] +[009] +[010] +[011] +[012] +[013] +[014] +[015] +[016] +[017] +[018] +[019] +[020] +[021] +[022] +[023] +[024] +[025] +[026] +[027] +[028] +[029] +[030] +[031] +[032] +[033] +[034] +[035] +[036] +[037] +[038] +[039] +[040] +[041] +[042] +[043] +[044] +[045] +[046] +[047] +[048] +[049] +[050] +[051] +[052] +[053] +[054] +[055] +[056] +[057] +[058] +[059] +[060] +[061] +[062] +[063] +[064] +[065] +[066] +[067] +[068] +[069] +[070] +[071] +[072] +[073] +[074] +[075] +[076] +[077] +[078] +[079] +[080] +[081] +[082] +[083] +[084] +[085] +[086] +[087] +[088] +[089] +[090] +[091] +[092] +[093] +[094] +[095] +[096] +[097] +[098] +[099] +[100]><><><><{0..5..2} +[0] +[2] +[4]><><><><{0001..05..2} +[0001] +[0003] +[0005]><><><><{0001..-5..2} +[0001] +[-001] +[-003] +[-005]><><><><{0001..-5..-2} +[0001] +[-001] +[-003] +[-005]><><><><{0001..5..-2} +[0001] +[0003] +[0005]><><><><{01..5} +[01] +[02] +[03] +[04] +[05]><><><><{1..05} +[01] +[02] +[03] +[04] +[05]><><><><{1..05..3} +[01] +[04]><><><><{05..100} +[005] +[006] +[007] +[008] +[009] +[010] +[011] +[012] +[013] +[014] +[015] +[016] +[017] +[018] +[019] +[020] +[021] +[022] +[023] +[024] +[025] +[026] +[027] +[028] +[029] +[030] +[031] +[032] +[033] +[034] +[035] +[036] +[037] +[038] +[039] +[040] +[041] +[042] +[043] +[044] +[045] +[046] +[047] +[048] +[049] +[050] +[051] +[052] +[053] +[054] +[055] +[056] +[057] +[058] +[059] +[060] +[061] +[062] +[063] +[064] +[065] +[066] +[067] +[068] +[069] +[070] +[071] +[072] +[073] +[074] +[075] +[076] +[077] +[078] +[079] +[080] +[081] +[082] +[083] +[084] +[085] +[086] +[087] +[088] +[089] +[090] +[091] +[092] +[093] +[094] +[095] +[096] +[097] +[098] +[099] +[100]><><><><{0a..0z} +[{0a..0z}]><><><><{a,b\}c,d} +[a] +[b}c] +[d]><><><><{a,b{c,d} +[{a,bc] +[{a,bd]><><><><{a,b}c,d} +[ac,d}] +[bc,d}]><><><><{a..F} +[a] +[`] +[_] +[^] +[]] +[] +[[] +[Z] +[Y] +[X] +[W] +[V] +[U] +[T] +[S] +[R] +[Q] +[P] +[O] +[N] +[M] +[L] +[K] +[J] +[I] +[H] +[G] +[F]><><><><{A..f} +[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[J] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] +[X] +[Y] +[Z] +[[] +[] +[]] +[^] +[_] +[`] +[a] +[b] +[c] +[d] +[e] +[f]><><><><{a..Z} +[a] +[`] +[_] +[^] +[]] +[] +[[] +[Z]><><><><{A..z} +[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[J] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] +[X] +[Y] +[Z] +[[] +[] +[]] +[^] +[_] +[`] +[a] +[b] +[c] +[d] +[e] +[f] +[g] +[h] +[i] +[j] +[k] +[l] +[m] +[n] +[o] +[p] +[q] +[r] +[s] +[t] +[u] +[v] +[w] +[x] +[y] +[z]><><><><{z..A} +[z] +[y] +[x] +[w] +[v] +[u] +[t] +[s] +[r] +[q] +[p] +[o] +[n] +[m] +[l] +[k] +[j] +[i] +[h] +[g] +[f] +[e] +[d] +[c] +[b] +[a] +[`] +[_] +[^] +[]] +[] +[[] +[Z] +[Y] +[X] +[W] +[V] +[U] +[T] +[S] +[R] +[Q] +[P] +[O] +[N] +[M] +[L] +[K] +[J] +[I] +[H] +[G] +[F] +[E] +[D] +[C] +[B] +[A]><><><><{Z..a} +[Z] +[[] +[] +[]] +[^] +[_] +[`] +[a]><><><><{a..F..2} +[a] +[_] +[]] +[[] +[Y] +[W] +[U] +[S] +[Q] +[O] +[M] +[K] +[I] +[G]><><><><{A..f..02} +[A] +[C] +[E] +[G] +[I] +[K] +[M] +[O] +[Q] +[S] +[U] +[W] +[Y] +[[] +[]] +[_] +[a] +[c] +[e]><><><><{a..Z..5} +[a] +[]><><><><><><><{A..z..10} +[A] +[K] +[U] +[_] +[i] +[s]><><><><{z..A..-2} +[z] +[x] +[v] +[t] +[r] +[p] +[n] +[l] +[j] +[h] +[f] +[d] +[b] +[`] +[^] +[] +[Z] +[X] +[V] +[T] +[R] +[P] +[N] +[L] +[J] +[H] +[F] +[D] +[B]><><><><{Z..a..20} +[Z]><><><><{a{,b} +[{a] +[{ab]><><><><{a},b} +[a}] +[b]><><><><{x,y{,}g} +[x] +[yg] +[yg]><><><><{x,y{}g} +[x] +[y{}g]><><><><{{a,b} +[{a] +[{b]><><><><{{a,b},c} +[a] +[b] +[c]><><><><{{a,b}c} +[{ac}] +[{bc}]><><><><{{a,b},} +[a] +[b]><><><><><><><{{a,b},}c +[ac] +[bc] +[c]><><><><{{a,b}.} +[{a.}] +[{b.}]><><><><{{a,b}} +[{a}] +[{b}]><><><><><><>< +><><><><{-10..00} +[-10] +[-09] +[-08] +[-07] +[-06] +[-05] +[-04] +[-03] +[-02] +[-01] +[000]><><><><{a,\\{a,b}c} +[a] +[\ac] +[\bc]><><><><{a,\{a,b}c} +[ac}] +[{ac}] +[bc}]><><><><><><><{-10.\.00} +[{-10..00}]><><><><><><><><><><{l,n,m}xyz +[lxyz] +[nxyz] +[mxyz]><><><><{abc\,def} +[{abc,def}]><><><><{abc} +[{abc}]><><><><{x\,y,\{abc\},trie} +[x,y] +[{abc}] +[trie]><><><><{} +[{}]><><><><} +[}]><><><><{ +[{]><><><><><><><{1..10} +[1] +[2] +[3] +[4] +[5] +[6] +[7] +[8] +[9] +[10]><><><><{0..10,braces} +[0..10] +[braces]><><><><{{0..10},braces} +[0] +[1] +[2] +[3] +[4] +[5] +[6] +[7] +[8] +[9] +[10] +[braces]><><><><><><><{3..3} +[3]><><><><><><><{10..1} +[10] +[9] +[8] +[7] +[6] +[5] +[4] +[3] +[2] +[1]><><><><{10..1}y +[10y] +[9y] +[8y] +[7y] +[6y] +[5y] +[4y] +[3y] +[2y] +[1y]><><><><><><><{a..f} +[a] +[b] +[c] +[d] +[e] +[f]><><><><{f..a} +[f] +[e] +[d] +[c] +[b] +[a]><><><><{a..A} +[a] +[`] +[_] +[^] +[]] +[] +[[] +[Z] +[Y] +[X] +[W] +[V] +[U] +[T] +[S] +[R] +[Q] +[P] +[O] +[N] +[M] +[L] +[K] +[J] +[I] +[H] +[G] +[F] +[E] +[D] +[C] +[B] +[A]><><><><{A..a} +[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[J] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] +[X] +[Y] +[Z] +[[] +[] +[]] +[^] +[_] +[`] +[a]><><><><{f..f} +[f]><><><><{1..f} +[{1..f}]><><><><{f..1} +[{f..1}]><><><><{-1..-10} +[-1] +[-2] +[-3] +[-4] +[-5] +[-6] +[-7] +[-8] +[-9] +[-10]><><><><{-20..0} +[-20] +[-19] +[-18] +[-17] +[-16] +[-15] +[-14] +[-13] +[-12] +[-11] +[-10] +[-9] +[-8] +[-7] +[-6] +[-5] +[-4] +[-3] +[-2] +[-1] +[0]><><><><><><><><><><{klklkl}{1,2,3} +[{klklkl}1] +[{klklkl}2] +[{klklkl}3]><><><><{1..10..2} +[1] +[3] +[5] +[7] +[9]><><><><{-1..-10..2} +[-1] +[-3] +[-5] +[-7] +[-9]><><><><{-1..-10..-2} +[-1] +[-3] +[-5] +[-7] +[-9]><><><><{10..1..-2} +[10] +[8] +[6] +[4] +[2]><><><><{10..1..2} +[10] +[8] +[6] +[4] +[2]><><><><{1..20..2} +[1] +[3] +[5] +[7] +[9] +[11] +[13] +[15] +[17] +[19]><><><><{1..20..20} +[1]><><><><{100..0..5} +[100] +[95] +[90] +[85] +[80] +[75] +[70] +[65] +[60] +[55] +[50] +[45] +[40] +[35] +[30] +[25] +[20] +[15] +[10] +[5] +[0]><><><><{100..0..-5} +[100] +[95] +[90] +[85] +[80] +[75] +[70] +[65] +[60] +[55] +[50] +[45] +[40] +[35] +[30] +[25] +[20] +[15] +[10] +[5] +[0]><><><><{a..z} +[a] +[b] +[c] +[d] +[e] +[f] +[g] +[h] +[i] +[j] +[k] +[l] +[m] +[n] +[o] +[p] +[q] +[r] +[s] +[t] +[u] +[v] +[w] +[x] +[y] +[z]><><><><{a..z..2} +[a] +[c] +[e] +[g] +[i] +[k] +[m] +[o] +[q] +[s] +[u] +[w] +[y]><><><><{z..a..-2} +[z] +[x] +[v] +[t] +[r] +[p] +[n] +[l] +[j] +[h] +[f] +[d] +[b]><><><><{2147483645..2147483649} +[2147483645] +[2147483646] +[2147483647] +[2147483648] +[2147483649]><><><><{10..0..2} +[10] +[8] +[6] +[4] +[2] +[0]><><><><{10..0..-2} +[10] +[8] +[6] +[4] +[2] +[0]><><><><{-50..-0..5} +[-50] +[-45] +[-40] +[-35] +[-30] +[-25] +[-20] +[-15] +[-10] +[-5] +[0]><><><><{1..10.f} +[{1..10.f}]><><><><{1..ff} +[{1..ff}]><><><><{1..10..ff} +[{1..10..ff}]><><><><{1.20..2} +[{1.20..2}]><><><><{1..20..f2} +[{1..20..f2}]><><><><{1..20..2f} +[{1..20..2f}]><><><><{1..2f..2} +[{1..2f..2}]><><><><{1..ff..2} +[{1..ff..2}]><><><><{1..ff} +[{1..ff}]><><><><{1..f} +[{1..f}]><><><><{1..0f} +[{1..0f}]><><><><{1..10f} +[{1..10f}]><><><><{1..10.f} +[{1..10.f}]><><><><{1..10.f} +[{1..10.f}]><><><>< \ No newline at end of file diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt new file mode 100644 index 0000000000..e5161c3da8 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt @@ -0,0 +1,182 @@ +# skip quotes for now +# "{x,x}" +# {"x,x"} +# {x","x} +# '{a,b}{{a,b},a,b}' +A{b,{d,e},{f,g}}Z +PRE-{a,b}{{a,b},a,b}-POST +\\{a,b}{{a,b},a,b} +{{a,b} +{a,b}} +{,} +a{,} +{,}b +a{,}b +a{b}c +a{1..5}b +a{01..5}b +a{-01..5}b +a{-01..5..3}b +a{001..9}b +a{b,c{d,e},{f,g}h}x{y,z +a{b,c{d,e},{f,g}h}x{y,z\\} +a{b,c{d,e},{f,g}h}x{y,z} +a{b{c{d,e}f{x,y{{g}h +a{b{c{d,e}f{x,y{}g}h +a{b{c{d,e}f{x,y}}g}h +a{b{c{d,e}f}g}h +a{{x,y},z}b +f{x,y{g,z}}h +f{x,y{{g,z}}h +f{x,y{{g,z}}h} +f{x,y{{g}h +f{x,y{{g}}h +f{x,y{}g}h +z{a,b{,c}d +z{a,b},c}d +{-01..5} +{-05..100..5} +{-05..100} +{0..5..2} +{0001..05..2} +{0001..-5..2} +{0001..-5..-2} +{0001..5..-2} +{01..5} +{1..05} +{1..05..3} +{05..100} +{0a..0z} +{a,b\\}c,d} +{a,b{c,d} +{a,b}c,d} +{a..F} +{A..f} +{a..Z} +{A..z} +{z..A} +{Z..a} +{a..F..2} +{A..f..02} +{a..Z..5} +d{a..Z..5}b +{A..z..10} +{z..A..-2} +{Z..a..20} +{a{,b} +{a},b} +{x,y{,}g} +{x,y{}g} +{{a,b} +{{a,b},c} +{{a,b}c} +{{a,b},} +X{{a,b},}X +{{a,b},}c +{{a,b}.} +{{a,b}} +X{a..#}X +# this next one is an empty string + +{-10..00} +# Need to escape slashes in here for reasons i guess. +{a,\\\\{a,b}c} +{a,\\{a,b}c} +a,\\{b,c} +{-10.\\.00} +#### bash tests/braces.tests +# Note that some tests are edited out because some features of +# bash are intentionally not supported in this brace expander. +ff{c,b,a} +f{d,e,f}g +{l,n,m}xyz +{abc\\,def} +{abc} +{x\\,y,\\{abc\\},trie} +# not impementing back-ticks obviously +# XXXX\\{`echo a b c | tr ' ' ','`\\} +{} +# We only ever have to worry about parsing a single argument, +# not a command line, so spaces have a different meaning than bash. +# { } +} +{ +abcd{efgh +# spaces +# foo {1,2} bar +# not impementing back-ticks obviously +# `zecho foo {1,2} bar` +# $(zecho foo {1,2} bar) +# ${var} is not a variable here, like it is in bash. omit. +# foo{bar,${var}.} +# foo{bar,${var}} +# isaacs: skip quotes for now +# "${var}"{x,y} +# $var{x,y} +# ${var}{x,y} +# new sequence brace operators +{1..10} +# this doesn't work yet +{0..10,braces} +# but this does +{{0..10},braces} +x{{0..10},braces}y +{3..3} +x{3..3}y +{10..1} +{10..1}y +x{10..1}y +{a..f} +{f..a} +{a..A} +{A..a} +{f..f} +# mixes are incorrectly-formed brace expansions +{1..f} +{f..1} +# spaces +# 0{1..9} {10..20} +# do negative numbers work? +{-1..-10} +{-20..0} +# weirdly-formed brace expansions -- fixed in post-bash-3.1 +a-{b{d,e}}-c +a-{bdef-{g,i}-c +# isaacs: skip quotes for now +# {"klklkl"}{1,2,3} +# isaacs: this is a valid test, though +{klklkl}{1,2,3} +# {"x,x"} +{1..10..2} +{-1..-10..2} +{-1..-10..-2} +{10..1..-2} +{10..1..2} +{1..20..2} +{1..20..20} +{100..0..5} +{100..0..-5} +{a..z} +{a..z..2} +{z..a..-2} +# make sure brace expansion handles ints > 2**31 - 1 using intmax_t +{2147483645..2147483649} +# unwanted zero-padding -- fixed post-bash-4.0 +{10..0..2} +{10..0..-2} +{-50..-0..5} +# bad +{1..10.f} +{1..ff} +{1..10..ff} +{1.20..2} +{1..20..f2} +{1..20..2f} +{1..2f..2} +{1..ff..2} +{1..ff} +{1..f} +{1..0f} +{1..10f} +{1..10.f} +{1..10.f} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js new file mode 100644 index 0000000000..3fcc185a7d --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js @@ -0,0 +1,9 @@ +var test = require('tape'); +var expand = require('..'); + +test('ignores ${', function(t) { + t.deepEqual(expand('${1..3}'), ['${1..3}']); + t.deepEqual(expand('${a,b}${c,d}'), ['${a,b}${c,d}']); + t.deepEqual(expand('x${a,b}x${c,d}x'), ['x${a,b}x${c,d}x']); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js new file mode 100644 index 0000000000..e429121eab --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js @@ -0,0 +1,10 @@ +var test = require('tape'); +var expand = require('..'); + +test('empty option', function(t) { + t.deepEqual(expand('-v{,,,,}'), [ + '-v', '-v', '-v', '-v', '-v' + ]); + t.end(); +}); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh new file mode 100644 index 0000000000..e040e664d9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -e + +# Bash 4.3 because of arbitrary need to pick a single standard. + +if [ "${BASH_VERSINFO[0]}" != "4" ] || [ "${BASH_VERSINFO[1]}" != "3" ]; then + echo "this script requires bash 4.3" >&2 + exit 1 +fi + +CDPATH= cd "$(dirname "$0")" + +js='require("./")(process.argv[1]).join(" ")' + +cat cases.txt | \ + while read case; do + if [ "${case:0:1}" = "#" ]; then + continue; + fi; + b="$($BASH -c 'for c in '"$case"'; do echo ["$c"]; done')" + echo "$case" + echo -n "$b><><><><"; + done > bash-results.txt diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js new file mode 100644 index 0000000000..8d434c23d4 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js @@ -0,0 +1,15 @@ +var test = require('tape'); +var expand = require('..'); + +test('negative increment', function(t) { + t.deepEqual(expand('{3..1}'), ['3', '2', '1']); + t.deepEqual(expand('{10..8}'), ['10', '9', '8']); + t.deepEqual(expand('{10..08}'), ['10', '09', '08']); + t.deepEqual(expand('{c..a}'), ['c', 'b', 'a']); + + t.deepEqual(expand('{4..0..2}'), ['4', '2', '0']); + t.deepEqual(expand('{4..0..-2}'), ['4', '2', '0']); + t.deepEqual(expand('{e..a..2}'), ['e', 'c', 'a']); + + t.end(); +}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js new file mode 100644 index 0000000000..0862dc51f9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js @@ -0,0 +1,16 @@ +var test = require('tape'); +var expand = require('..'); + +test('nested', function(t) { + t.deepEqual(expand('{a,b{1..3},c}'), [ + 'a', 'b1', 'b2', 'b3', 'c' + ]); + t.deepEqual(expand('{{A..Z},{a..z}}'), + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') + ); + t.deepEqual(expand('ppp{,config,oe{,conf}}'), [ + 'ppp', 'pppconfig', 'pppoe', 'pppoeconf' + ]); + t.end(); +}); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js new file mode 100644 index 0000000000..c00ad155fe --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js @@ -0,0 +1,10 @@ +var test = require('tape'); +var expand = require('..'); + +test('order', function(t) { + t.deepEqual(expand('a{d,c,b}e'), [ + 'ade', 'ace', 'abe' + ]); + t.end(); +}); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js new file mode 100644 index 0000000000..e4158775f1 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js @@ -0,0 +1,13 @@ +var test = require('tape'); +var expand = require('..'); + +test('pad', function(t) { + t.deepEqual(expand('{9..11}'), [ + '9', '10', '11' + ]); + t.deepEqual(expand('{09..11}'), [ + '09', '10', '11' + ]); + t.end(); +}); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js new file mode 100644 index 0000000000..3038fba741 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js @@ -0,0 +1,7 @@ +var test = require('tape'); +var expand = require('..'); + +test('x and y of same type', function(t) { + t.deepEqual(expand('{a..9}'), ['{a..9}']); + t.end(); +}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js new file mode 100644 index 0000000000..f73a9579ab --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js @@ -0,0 +1,50 @@ +var test = require('tape'); +var expand = require('..'); + +test('numeric sequences', function(t) { + t.deepEqual(expand('a{1..2}b{2..3}c'), [ + 'a1b2c', 'a1b3c', 'a2b2c', 'a2b3c' + ]); + t.deepEqual(expand('{1..2}{2..3}'), [ + '12', '13', '22', '23' + ]); + t.end(); +}); + +test('numeric sequences with step count', function(t) { + t.deepEqual(expand('{0..8..2}'), [ + '0', '2', '4', '6', '8' + ]); + t.deepEqual(expand('{1..8..2}'), [ + '1', '3', '5', '7' + ]); + t.end(); +}); + +test('numeric sequence with negative x / y', function(t) { + t.deepEqual(expand('{3..-2}'), [ + '3', '2', '1', '0', '-1', '-2' + ]); + t.end(); +}); + +test('alphabetic sequences', function(t) { + t.deepEqual(expand('1{a..b}2{b..c}3'), [ + '1a2b3', '1a2c3', '1b2b3', '1b2c3' + ]); + t.deepEqual(expand('{a..b}{b..c}'), [ + 'ab', 'ac', 'bb', 'bc' + ]); + t.end(); +}); + +test('alphabetic sequences with step count', function(t) { + t.deepEqual(expand('{a..k..2}'), [ + 'a', 'c', 'e', 'g', 'i', 'k' + ]); + t.deepEqual(expand('{b..k..2}'), [ + 'b', 'd', 'f', 'h', 'j' + ]); + t.end(); +}); + diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore deleted file mode 100644 index 4dcec4c82a..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS deleted file mode 100644 index 1f0a13e8ca..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +++ /dev/null @@ -1,14 +0,0 @@ -# Authors, sorted by whether or not they are me -Isaac Z. Schlueter -Brian Cottingham -Carlos Brito Lage -Jesse Dailey -Kevin O'Hara -Marco Rogers -Mark Cavage -Marko Mikulicic -Nathan Rajlich -Satheesh Natesan -Trent Mick -ashleybrener -n4kz diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE deleted file mode 100644 index f3de1ece45..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md deleted file mode 100644 index e1d3f8964c..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# lru cache - -A cache object that deletes the least-recently-used items. - -## Usage: - -```javascript -var LRU = require("lru-cache") - , options = { max: 500 - , length: function (n) { return n * 2 } - , dispose: function (key, n) { n.close() } - , maxAge: 1000 * 60 * 60 } - , cache = LRU(options) - , otherCache = LRU(50) // sets just the max size - -cache.set("key", "value") -cache.get("key") // "value" - -cache.reset() // empty the cache -``` - -If you put more stuff in it, then items will fall out. - -If you try to put an oversized thing in it, then it'll fall out right -away. - -## Options - -* `max` The maximum size of the cache, checked by applying the length - function to all values in the cache. Not setting this is kind of - silly, since that's the whole purpose of this lib, but it defaults - to `Infinity`. -* `maxAge` Maximum age in ms. Items are not pro-actively pruned out - as they age, but if you try to get an item that is too old, it'll - drop it and return undefined instead of giving it to you. -* `length` Function that is used to calculate the length of stored - items. If you're storing strings or buffers, then you probably want - to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` - like-sized things. -* `dispose` Function that is called on items when they are dropped - from the cache. This can be handy if you want to close file - descriptors or do other cleanup tasks when items are no longer - accessible. Called with `key, value`. It's called *before* - actually removing the item from the internal cache, so if you want - to immediately put it back in, you'll have to do that in a - `nextTick` or `setTimeout` callback or it won't do anything. -* `stale` By default, if you set a `maxAge`, it'll only actually pull - stale items out of the cache when you `get(key)`. (That is, it's - not pre-emptively doing a `setTimeout` or anything.) If you set - `stale:true`, it'll return the stale value before deleting it. If - you don't set this, then it'll return `undefined` when you try to - get a stale entry, as if it had already been deleted. - -## API - -* `set(key, value)` -* `get(key) => value` - - Both of these will update the "recently used"-ness of the key. - They do what you think. - -* `peek(key)` - - Returns the key value (or `undefined` if not found) without - updating the "recently used"-ness of the key. - - (If you find yourself using this a lot, you *might* be using the - wrong sort of data structure, but there are some use cases where - it's handy.) - -* `del(key)` - - Deletes a key out of the cache. - -* `reset()` - - Clear the cache entirely, throwing away all values. - -* `has(key)` - - Check if a key is in the cache, without updating the recent-ness - or deleting it for being stale. - -* `forEach(function(value,key,cache), [thisp])` - - Just like `Array.prototype.forEach`. Iterates over all the keys - in the cache, in order of recent-ness. (Ie, more recently used - items are iterated over first.) - -* `keys()` - - Return an array of the keys in the cache. - -* `values()` - - Return an array of the values in the cache. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js deleted file mode 100644 index 79094f3157..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ /dev/null @@ -1,252 +0,0 @@ -;(function () { // closure for web browsers - -if (typeof module === 'object' && module.exports) { - module.exports = LRUCache -} else { - // just set the global for non-node platforms. - this.LRUCache = LRUCache -} - -function hOP (obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key) -} - -function naiveLength () { return 1 } - -function LRUCache (options) { - if (!(this instanceof LRUCache)) - return new LRUCache(options) - - if (typeof options === 'number') - options = { max: options } - - if (!options) - options = {} - - this._max = options.max - // Kind of weird to have a default max of Infinity, but oh well. - if (!this._max || !(typeof this._max === "number") || this._max <= 0 ) - this._max = Infinity - - this._lengthCalculator = options.length || naiveLength - if (typeof this._lengthCalculator !== "function") - this._lengthCalculator = naiveLength - - this._allowStale = options.stale || false - this._maxAge = options.maxAge || null - this._dispose = options.dispose - this.reset() -} - -// resize the cache when the max changes. -Object.defineProperty(LRUCache.prototype, "max", - { set : function (mL) { - if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity - this._max = mL - if (this._length > this._max) trim(this) - } - , get : function () { return this._max } - , enumerable : true - }) - -// resize the cache when the lengthCalculator changes. -Object.defineProperty(LRUCache.prototype, "lengthCalculator", - { set : function (lC) { - if (typeof lC !== "function") { - this._lengthCalculator = naiveLength - this._length = this._itemCount - for (var key in this._cache) { - this._cache[key].length = 1 - } - } else { - this._lengthCalculator = lC - this._length = 0 - for (var key in this._cache) { - this._cache[key].length = this._lengthCalculator(this._cache[key].value) - this._length += this._cache[key].length - } - } - - if (this._length > this._max) trim(this) - } - , get : function () { return this._lengthCalculator } - , enumerable : true - }) - -Object.defineProperty(LRUCache.prototype, "length", - { get : function () { return this._length } - , enumerable : true - }) - - -Object.defineProperty(LRUCache.prototype, "itemCount", - { get : function () { return this._itemCount } - , enumerable : true - }) - -LRUCache.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - var i = 0; - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - i++ - var hit = this._lruList[k] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - del(this, hit) - if (!this._allowStale) hit = undefined - } - if (hit) { - fn.call(thisp, hit.value, hit.key, this) - } - } -} - -LRUCache.prototype.keys = function () { - var keys = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - keys[i++] = hit.key - } - return keys -} - -LRUCache.prototype.values = function () { - var values = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - values[i++] = hit.value - } - return values -} - -LRUCache.prototype.reset = function () { - if (this._dispose && this._cache) { - for (var k in this._cache) { - this._dispose(k, this._cache[k].value) - } - } - - this._cache = Object.create(null) // hash of items by key - this._lruList = Object.create(null) // list of items in order of use recency - this._mru = 0 // most recently used - this._lru = 0 // least recently used - this._length = 0 // number of items in the list - this._itemCount = 0 -} - -// Provided for debugging/dev purposes only. No promises whatsoever that -// this API stays stable. -LRUCache.prototype.dump = function () { - return this._cache -} - -LRUCache.prototype.dumpLru = function () { - return this._lruList -} - -LRUCache.prototype.set = function (key, value) { - if (hOP(this._cache, key)) { - // dispose of the old one before overwriting - if (this._dispose) this._dispose(key, this._cache[key].value) - if (this._maxAge) this._cache[key].now = Date.now() - this._cache[key].value = value - this.get(key) - return true - } - - var len = this._lengthCalculator(value) - var age = this._maxAge ? Date.now() : 0 - var hit = new Entry(key, value, this._mru++, len, age) - - // oversized objects fall out of cache automatically. - if (hit.length > this._max) { - if (this._dispose) this._dispose(key, value) - return false - } - - this._length += hit.length - this._lruList[hit.lu] = this._cache[key] = hit - this._itemCount ++ - - if (this._length > this._max) trim(this) - return true -} - -LRUCache.prototype.has = function (key) { - if (!hOP(this._cache, key)) return false - var hit = this._cache[key] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - return false - } - return true -} - -LRUCache.prototype.get = function (key) { - return get(this, key, true) -} - -LRUCache.prototype.peek = function (key) { - return get(this, key, false) -} - -LRUCache.prototype.pop = function () { - var hit = this._lruList[this._lru] - del(this, hit) - return hit || null -} - -LRUCache.prototype.del = function (key) { - del(this, this._cache[key]) -} - -function get (self, key, doUse) { - var hit = self._cache[key] - if (hit) { - if (self._maxAge && (Date.now() - hit.now > self._maxAge)) { - del(self, hit) - if (!self._allowStale) hit = undefined - } else { - if (doUse) use(self, hit) - } - if (hit) hit = hit.value - } - return hit -} - -function use (self, hit) { - shiftLU(self, hit) - hit.lu = self._mru ++ - self._lruList[hit.lu] = hit -} - -function trim (self) { - while (self._lru < self._mru && self._length > self._max) - del(self, self._lruList[self._lru]) -} - -function shiftLU (self, hit) { - delete self._lruList[ hit.lu ] - while (self._lru < self._mru && !self._lruList[self._lru]) self._lru ++ -} - -function del (self, hit) { - if (hit) { - if (self._dispose) self._dispose(hit.key, hit.value) - self._length -= hit.length - self._itemCount -- - delete self._cache[ hit.key ] - shiftLU(self, hit) - } -} - -// classy, since V8 prefers predictable objects. -function Entry (key, value, lu, length, now) { - this.key = key - this.value = value - this.lu = lu - this.length = length - this.now = now -} - -})() diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index fc1816acad..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "lru-cache", - "description": "A cache object that deletes the least-recently-used items.", - "version": "2.5.0", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "scripts": { - "test": "tap test --gc" - }, - "main": "lib/lru-cache.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "tap": "", - "weak": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - }, - "bugs": { - "url": "https://github.com/isaacs/node-lru-cache/issues" - }, - "homepage": "https://github.com/isaacs/node-lru-cache", - "_id": "lru-cache@2.5.0", - "dist": { - "shasum": "d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb", - "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz" - }, - "_from": "lru-cache@2", - "_npmVersion": "1.3.15", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb", - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js deleted file mode 100644 index 6c3d43aebe..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js +++ /dev/null @@ -1,369 +0,0 @@ -var test = require("tap").test - , LRU = require("../") - -test("basic", function (t) { - var cache = new LRU({max: 10}) - cache.set("key", "value") - t.equal(cache.get("key"), "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.length, 1) - t.equal(cache.max, 10) - t.end() -}) - -test("least recently set", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.get("a") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), "A") - t.end() -}) - -test("del", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.del("a") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("max", function (t) { - var cache = new LRU(3) - - // test changing the max, verify that the LRU items get dropped. - cache.max = 100 - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - - // now remove the max restriction, and try again. - cache.max = "hello" - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - // should trigger an immediate resize - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - t.end() -}) - -test("reset", function (t) { - var cache = new LRU(10) - cache.set("a", "A") - cache.set("b", "B") - cache.reset() - t.equal(cache.length, 0) - t.equal(cache.max, 10) - t.equal(cache.get("a"), undefined) - t.equal(cache.get("b"), undefined) - t.end() -}) - - -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - -test("basic with weighed length", function (t) { - var cache = new LRU({ - max: 100, - length: function (item) { return item.size } - }) - cache.set("key", {val: "value", size: 50}) - t.equal(cache.get("key").val, "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.lengthCalculator(cache.get("key")), 50) - t.equal(cache.length, 50) - t.equal(cache.max, 100) - t.end() -}) - - -test("weighed length item too large", function (t) { - var cache = new LRU({ - max: 10, - length: function (item) { return item.size } - }) - t.equal(cache.max, 10) - - // should fall out immediately - cache.set("key", {val: "value", size: 50}) - - t.equal(cache.length, 0) - t.equal(cache.get("key"), undefined) - t.end() -}) - -test("least recently set with weighed length", function (t) { - var cache = new LRU({ - max:8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.set("d", "DDDD") - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("c"), "CCC") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten with weighed length", function (t) { - var cache = new LRU({ - max: 8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.get("a") - cache.get("b") - cache.set("d", "DDDD") - t.equal(cache.get("c"), undefined) - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("b"), "BB") - t.equal(cache.get("a"), "A") - t.end() -}) - -test("set returns proper booleans", function(t) { - var cache = new LRU({ - max: 5, - length: function (item) { return item.length } - }) - - t.equal(cache.set("a", "A"), true) - - // should return false for max exceeded - t.equal(cache.set("b", "donuts"), false) - - t.equal(cache.set("b", "B"), true) - t.equal(cache.set("c", "CCCC"), true) - t.end() -}) - -test("drop the old items", function(t) { - var cache = new LRU({ - max: 5, - maxAge: 50 - }) - - cache.set("a", "A") - - setTimeout(function () { - cache.set("b", "b") - t.equal(cache.get("a"), "A") - }, 25) - - setTimeout(function () { - cache.set("c", "C") - // timed out - t.notOk(cache.get("a")) - }, 60) - - setTimeout(function () { - t.notOk(cache.get("b")) - t.equal(cache.get("c"), "C") - }, 90) - - setTimeout(function () { - t.notOk(cache.get("c")) - t.end() - }, 155) -}) - -test("disposal function", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - dispose: function (k, n) { - disposed = n - } - }) - - cache.set(1, 1) - cache.set(2, 2) - t.equal(disposed, 1) - cache.set(3, 3) - t.equal(disposed, 2) - cache.reset() - t.equal(disposed, 3) - t.end() -}) - -test("disposal function on too big of item", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - length: function (k) { - return k.length - }, - dispose: function (k, n) { - disposed = n - } - }) - var obj = [ 1, 2 ] - - t.equal(disposed, false) - cache.set("obj", obj) - t.equal(disposed, obj) - t.end() -}) - -test("has()", function(t) { - var cache = new LRU({ - max: 1, - maxAge: 10 - }) - - cache.set('foo', 'bar') - t.equal(cache.has('foo'), true) - cache.set('blu', 'baz') - t.equal(cache.has('foo'), false) - t.equal(cache.has('blu'), true) - setTimeout(function() { - t.equal(cache.has('blu'), false) - t.end() - }, 15) -}) - -test("stale", function(t) { - var cache = new LRU({ - maxAge: 10, - stale: true - }) - - cache.set('foo', 'bar') - t.equal(cache.get('foo'), 'bar') - t.equal(cache.has('foo'), true) - setTimeout(function() { - t.equal(cache.has('foo'), false) - t.equal(cache.get('foo'), 'bar') - t.equal(cache.get('foo'), undefined) - t.end() - }, 15) -}) - -test("lru update via set", function(t) { - var cache = LRU({ max: 2 }); - - cache.set('foo', 1); - cache.set('bar', 2); - cache.del('bar'); - cache.set('baz', 3); - cache.set('qux', 4); - - t.equal(cache.get('foo'), undefined) - t.equal(cache.get('bar'), undefined) - t.equal(cache.get('baz'), 3) - t.equal(cache.get('qux'), 4) - t.end() -}) - -test("least recently set w/ peek", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - t.equal(cache.peek("a"), "A") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("pop the least used item", function (t) { - var cache = new LRU(3) - , last - - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - - t.equal(cache.length, 3) - t.equal(cache.max, 3) - - // Ensure we pop a, c, b - cache.get("b", "B") - - last = cache.pop() - t.equal(last.key, "a") - t.equal(last.value, "A") - t.equal(cache.length, 2) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "c") - t.equal(last.value, "C") - t.equal(cache.length, 1) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "b") - t.equal(last.value, "B") - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last, null) - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js deleted file mode 100644 index 876334e993..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tap').test -var LRU = require('../') - -test('forEach', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - var i = 9 - l.forEach(function (val, key, cache) { - t.equal(cache, l) - t.equal(key, i.toString()) - t.equal(val, i.toString(2)) - i -= 1 - }) - - // get in order of most recently used - l.get(6) - l.get(8) - - var order = [ 8, 6, 9, 7, 5 ] - var i = 0 - - l.forEach(function (val, key, cache) { - var j = order[i ++] - t.equal(cache, l) - t.equal(key, j.toString()) - t.equal(val, j.toString(2)) - }) - - t.end() -}) - -test('keys() and values()', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - t.similar(l.keys(), ['9', '8', '7', '6', '5']) - t.similar(l.values(), ['1001', '1000', '111', '110', '101']) - - // get in order of most recently used - l.get(6) - l.get(8) - - t.similar(l.keys(), ['8', '6', '9', '7', '5']) - t.similar(l.values(), ['1000', '110', '1001', '111', '101']) - - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js deleted file mode 100644 index 2721223fb8..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node --expose_gc - -var weak = require('weak'); -var test = require('tap').test -var LRU = require('../') -var l = new LRU({ max: 10 }) -var refs = 0 -function X() { - refs ++ - weak(this, deref) -} - -function deref() { - refs -- -} - -test('no leaks', function (t) { - // fill up the cache - for (var i = 0; i < 100; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var start = process.memoryUsage() - - // capture the memory - var startRefs = refs - - // do it again, but more - for (var i = 0; i < 10000; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var end = process.memoryUsage() - t.equal(refs, startRefs, 'no leaky refs') - - console.error('start: %j\n' + - 'end: %j', start, end); - t.pass(); - t.end(); -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md deleted file mode 100644 index 637b8ef5b5..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# sigmund - -Quick and dirty signatures for Objects. - -This is like a much faster `deepEquals` comparison, which returns a -string key suitable for caches and the like. - -## Usage - -```javascript -function doSomething (someObj) { - var key = sigmund(someObj, maxDepth) // max depth defaults to 10 - var cached = cache.get(key) - if (cached) return cached) - - var result = expensiveCalculation(someObj) - cache.set(key, result) - return result -} -``` - -The resulting key will be as unique and reproducible as calling -`JSON.stringify` or `util.inspect` on the object, but is much faster. -In order to achieve this speed, some differences are glossed over. -For example, the object `{0:'foo'}` will be treated identically to the -array `['foo']`. - -Also, just as there is no way to summon the soul from the scribblings -of a cocain-addled psychoanalyst, there is no way to revive the object -from the signature string that sigmund gives you. In fact, it's -barely even readable. - -As with `sys.inspect` and `JSON.stringify`, larger objects will -produce larger signature strings. - -Because sigmund is a bit less strict than the more thorough -alternatives, the strings will be shorter, and also there is a -slightly higher chance for collisions. For example, these objects -have the same signature: - - var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} - var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -Like a good Freudian, sigmund is most effective when you already have -some understanding of what you're looking for. It can help you help -yourself, but you must be willing to do some work as well. - -Cycles are handled, and cyclical objects are silently omitted (though -the key is included in the signature output.) - -The second argument is the maximum depth, which defaults to 10, -because that is the maximum object traversal depth covered by most -insurance carriers. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js deleted file mode 100644 index 833da09e97..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js +++ /dev/null @@ -1,283 +0,0 @@ -// different ways to id objects -// use a req/res pair, since it's crazy deep and cyclical - -// sparseFE10 and sigmund are usually pretty close, which is to be expected, -// since they are essentially the same algorithm, except that sigmund handles -// regular expression objects properly. - - -var http = require('http') -var util = require('util') -var sigmund = require('./sigmund.js') -var sreq, sres, creq, cres, test - -http.createServer(function (q, s) { - sreq = q - sres = s - sres.end('ok') - this.close(function () { setTimeout(function () { - start() - }, 200) }) -}).listen(1337, function () { - creq = http.get({ port: 1337 }) - creq.on('response', function (s) { cres = s }) -}) - -function start () { - test = [sreq, sres, creq, cres] - // test = sreq - // sreq.sres = sres - // sreq.creq = creq - // sreq.cres = cres - - for (var i in exports.compare) { - console.log(i) - var hash = exports.compare[i]() - console.log(hash) - console.log(hash.length) - console.log('') - } - - require('bench').runMain() -} - -function customWs (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return customWs(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + customWs(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function custom (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return '' + obj - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return custom(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + custom(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function sparseFE2 (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k + ':' - ch(v[k], depth + 1) - }) - soFar += '}' - } - ch(obj, 0) - return soFar -} - -function sparseFE (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k - ch(v[k], depth + 1) - }) - } - ch(obj, 0) - return soFar -} - -function sparse (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k - ch(v[k], depth + 1) - } - } - ch(obj, 0) - return soFar -} - -function noCommas (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - - -function flatten (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - soFar += ',' - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - -exports.compare = -{ - // 'custom 2': function () { - // return custom(test, 2, 0) - // }, - // 'customWs 2': function () { - // return customWs(test, 2, 0) - // }, - 'JSON.stringify (guarded)': function () { - var seen = [] - return JSON.stringify(test, function (k, v) { - if (typeof v !== 'object' || !v) return v - if (seen.indexOf(v) !== -1) return undefined - seen.push(v) - return v - }) - }, - - 'flatten 10': function () { - return flatten(test, 10) - }, - - // 'flattenFE 10': function () { - // return flattenFE(test, 10) - // }, - - 'noCommas 10': function () { - return noCommas(test, 10) - }, - - 'sparse 10': function () { - return sparse(test, 10) - }, - - 'sparseFE 10': function () { - return sparseFE(test, 10) - }, - - 'sparseFE2 10': function () { - return sparseFE2(test, 10) - }, - - sigmund: function() { - return sigmund(test, 10) - }, - - - // 'util.inspect 1': function () { - // return util.inspect(test, false, 1, false) - // }, - // 'util.inspect undefined': function () { - // util.inspect(test) - // }, - // 'util.inspect 2': function () { - // util.inspect(test, false, 2, false) - // }, - // 'util.inspect 3': function () { - // util.inspect(test, false, 3, false) - // }, - // 'util.inspect 4': function () { - // util.inspect(test, false, 4, false) - // }, - // 'util.inspect Infinity': function () { - // util.inspect(test, false, Infinity, false) - // } -} - -/** results -**/ diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json deleted file mode 100644 index dd2ca20d38..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "sigmund", - "version": "1.0.0", - "description": "Quick and dirty signatures for Objects.", - "main": "sigmund.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js", - "bench": "node bench.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sigmund" - }, - "keywords": [ - "object", - "signature", - "key", - "data", - "psychoanalysis" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", - "_id": "sigmund@1.0.0", - "dist": { - "shasum": "66a2b3a749ae8b5fb89efd4fcc01dc94fbe02296", - "tarball": "http://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz" - }, - "_npmVersion": "1.1.48", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_shasum": "66a2b3a749ae8b5fb89efd4fcc01dc94fbe02296", - "_from": "sigmund@~1.0.0", - "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz", - "bugs": { - "url": "https://github.com/isaacs/sigmund/issues" - }, - "homepage": "https://github.com/isaacs/sigmund" -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js deleted file mode 100644 index 7b16bfa4e7..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = sigmund -function sigmund (subject, maxSessions) { - maxSessions = maxSessions || 10; - var notes = []; - var analysis = ''; - var RE = RegExp; - - function psychoAnalyze (subject, session) { - if (session > maxSessions) return; - - if (typeof subject === 'function' || - typeof subject === 'undefined') { - return; - } - - if (typeof subject !== 'object' || !subject || - (subject instanceof RE)) { - analysis += subject; - return; - } - - if (notes.indexOf(subject) !== -1 || session === maxSessions) return; - - notes.push(subject); - analysis += '{'; - Object.keys(subject).forEach(function (issue, _, __) { - // pseudo-private values. skip those. - if (issue.charAt(0) === '_') return; - var to = typeof subject[issue]; - if (to === 'function' || to === 'undefined') return; - analysis += issue; - psychoAnalyze(subject[issue], session + 1); - }); - } - psychoAnalyze(subject, 0); - return analysis; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js deleted file mode 100644 index d13a066596..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test -var sigmund = require('../sigmund.js') - - -// occasionally there are duplicates -// that's an acceptable edge-case. JSON.stringify and util.inspect -// have some collision potential as well, though less, and collision -// detection is expensive. -var hash = '{abc/def/g{0h1i2{jkl' -var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} -var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -var obj3 = JSON.parse(JSON.stringify(obj1)) -obj3.c = /def/ -obj3.g[2].cycle = obj3 -var cycleHash = '{abc/def/g{0h1i2{jklcycle' - -test('basic', function (t) { - t.equal(sigmund(obj1), hash) - t.equal(sigmund(obj2), hash) - t.equal(sigmund(obj3), cycleHash) - t.end() -}) - diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json index d954b5fa38..ed83501e92 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/package.json @@ -1,57 +1,64 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "minimatch", - "description": "a glob matcher in javascript", - "version": "0.3.0", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap test/*.js" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "homepage": "https://github.com/isaacs/minimatch", - "_id": "minimatch@0.3.0", - "_shasum": "275d8edaac4f1bb3326472089e7949c8394699dd", - "_from": "minimatch@0.3", - "_npmVersion": "1.4.10", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "275d8edaac4f1bb3326472089e7949c8394699dd", - "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "readme": "ERROR: No README data found!" -} +{ + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" + }, + "name": "minimatch", + "description": "a glob matcher in javascript", + "version": "2.0.4", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "main": "minimatch.js", + "scripts": { + "test": "tap test/*.js", + "prepublish": "browserify -o browser.js -e minimatch.js --bare" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "devDependencies": { + "browserify": "^9.0.3", + "tap": "" + }, + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" + }, + "files": [ + "minimatch.js", + "browser.js" + ], + "gitHead": "c75d17c23df3b6050338ee654a58490255b36ebc", + "bugs": { + "url": "https://github.com/isaacs/minimatch/issues" + }, + "homepage": "https://github.com/isaacs/minimatch", + "_id": "minimatch@2.0.4", + "_shasum": "83bea115803e7a097a78022427287edb762fafed", + "_from": "minimatch@>=2.0.1 <3.0.0", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.4.2", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "dist": { + "shasum": "83bea115803e7a097a78022427287edb762fafed", + "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/basic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/basic.js deleted file mode 100644 index 8793644e46..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,399 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - - -var patterns = - [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ] - -var regexps = - [ '/^(?:(?=.)a[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:\\*)$/', - '/^(?:(?=.)\\*[^/]*?)$/', - '/^(?:\\*\\*)$/', - '/^(?:(?=.)b[^/]*?\\/)$/', - '/^(?:(?=.)c[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', - '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', - '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', - '/^(?:(?=.)a[^/]*?[^c])$/', - '/^(?:(?=.)a[X-]b)$/', - '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', - '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[^/]c)$/', - '/^(?:a\\*c)$/', - 'false', - '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', - '/^(?:man\\/man1\\/bash\\.1)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[-abc])$/', - '/^(?:(?!\\.)(?=.)[abc-])$/', - '/^(?:\\\\)$/', - '/^(?:(?!\\.)(?=.)[\\\\])$/', - '/^(?:(?!\\.)(?=.)[\\[])$/', - '/^(?:\\[)$/', - '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[\\]])$/', - '/^(?:(?!\\.)(?=.)[\\]-])$/', - '/^(?:(?!\\.)(?=.)[a-z])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:\\[\\])$/', - '/^(?:\\[abc)$/', - '/^(?:(?=.)XYZ)$/i', - '/^(?:(?=.)ab[^/]*?)$/i', - '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', - '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', - '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', - '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', - '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', - '/^(?:(?=.)a[^/]b)$/', - '/^(?:(?=.)#[^/]*?)$/', - '/^(?!^(?:(?=.)a[^/]*?)$).*$/', - '/^(?:(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)a[^/]*?)$/', - '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] -var re = 0; - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - patterns.forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - var expectRe = regexps[re++] - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - - t.equal(tapOpts.re, expectRe, tapOpts) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/brace-expand.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 2b2179dd85..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/caching.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/caching.js deleted file mode 100644 index 9324da29ba..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/defaults.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 98a7365f21..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js deleted file mode 100644 index 9aef1467d2..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +++ /dev/null @@ -1,8 +0,0 @@ -var test = require('tap').test -var minimatch = require('../') - -test('extglob ending with statechar', function(t) { - t.notOk(minimatch('ax', 'a?(b*)')) - t.ok(minimatch('ax', '?(a*|b)')) - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/LICENSE similarity index 97% rename from node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE rename to node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/LICENSE index 6e93978e0e..0c44ae716d 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/LICENSE @@ -1,27 +1,27 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/README.md new file mode 100644 index 0000000000..a2981ea070 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/README.md @@ -0,0 +1,51 @@ +# once + +Only call a function once. + +## usage + +```javascript +var once = require('once') + +function load (file, cb) { + cb = once(cb) + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Or add to the Function.prototype in a responsible way: + +```javascript +// only has to be done once +require('once').proto() + +function load (file, cb) { + cb = cb.once() + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Ironically, the prototype feature makes this module twice as +complicated as necessary. + +To check whether you function has been called, use `fn.called`. Once the +function is called for the first time the return value of the original +function is saved in `fn.value` and subsequent calls will continue to +return this value. + +```javascript +var once = require('once') + +function load (cb) { + cb = once(cb) + var stream = createStream() + stream.once('data', cb) + stream.once('end', function () { + if (!cb.called) cb(new Error('not found')) + }) +} +``` diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/README.md new file mode 100644 index 0000000000..98eab2522b --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/package.json new file mode 100644 index 0000000000..8145dc8c45 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/package.json @@ -0,0 +1,52 @@ +{ + "name": "wrappy", + "version": "1.0.1", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^0.4.12" + }, + "scripts": { + "test": "tap test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy", + "gitHead": "006a8cbac6b99988315834c207896eed71fd069a", + "_id": "wrappy@1.0.1", + "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", + "_from": "wrappy@>=1.0.0 <2.0.0", + "_npmVersion": "2.0.0", + "_nodeVersion": "0.10.31", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "dist": { + "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", + "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + }, + "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js new file mode 100644 index 0000000000..5ed0fcdfd9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js @@ -0,0 +1,51 @@ +var test = require('tap').test +var wrappy = require('../wrappy.js') + +test('basic', function (t) { + function onceifier (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } + } + onceifier.iAmOnce = {} + var once = wrappy(onceifier) + t.equal(once.iAmOnce, onceifier.iAmOnce) + + var called = 0 + function boo () { + t.equal(called, 0) + called++ + } + // has some rando property + boo.iAmBoo = true + + var onlyPrintOnce = once(boo) + + onlyPrintOnce() // prints 'boo' + onlyPrintOnce() // does nothing + t.equal(called, 1) + + // random property is retained! + t.equal(onlyPrintOnce.iAmBoo, true) + + var logs = [] + var logwrap = wrappy(function (msg, cb) { + logs.push(msg + ' wrapping cb') + return function () { + logs.push(msg + ' before cb') + var ret = cb.apply(this, arguments) + logs.push(msg + ' after cb') + } + }) + + var c = logwrap('foo', function () { + t.same(logs, [ 'foo wrapping cb', 'foo before cb' ]) + }) + c() + t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ]) + + t.end() +}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000000..bb7e7d6fcf --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/once.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/once.js new file mode 100644 index 0000000000..2e1e721bfe --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/once.js @@ -0,0 +1,21 @@ +var wrappy = require('wrappy') +module.exports = wrappy(once) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/package.json new file mode 100644 index 0000000000..955ef734ee --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/package.json @@ -0,0 +1,60 @@ +{ + "name": "once", + "version": "1.3.1", + "description": "Run a function exactly one time", + "main": "once.js", + "directories": { + "test": "test" + }, + "dependencies": { + "wrappy": "1" + }, + "devDependencies": { + "tap": "~0.3.0" + }, + "scripts": { + "test": "tap test/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/once" + }, + "keywords": [ + "once", + "function", + "one", + "single" + ], + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "license": "BSD", + "gitHead": "c90ac02a74f433ce47f6938869e68dd6196ffc2c", + "bugs": { + "url": "https://github.com/isaacs/once/issues" + }, + "homepage": "https://github.com/isaacs/once", + "_id": "once@1.3.1", + "_shasum": "f3f3e4da5b7d27b5c732969ee3e67e729457b31f", + "_from": "once@>=1.3.0 <2.0.0", + "_npmVersion": "2.0.0", + "_nodeVersion": "0.10.31", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "dist": { + "shasum": "f3f3e4da5b7d27b5c732969ee3e67e729457b31f", + "tarball": "http://registry.npmjs.org/once/-/once-1.3.1.tgz" + }, + "_resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/test/once.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/test/once.js new file mode 100644 index 0000000000..c618360dfa --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/once/test/once.js @@ -0,0 +1,23 @@ +var test = require('tap').test +var once = require('../once.js') + +test('once', function (t) { + var f = 0 + function fn (g) { + t.equal(f, 0) + f ++ + return f + g + this + } + fn.ownProperty = {} + var foo = once(fn) + t.equal(fn.ownProperty, foo.ownProperty) + t.notOk(foo.called) + for (var i = 0; i < 1E3; i++) { + t.same(f, i === 0 ? 0 : 1) + var g = foo.call(1, 1) + t.ok(foo.called) + t.same(g, 3) + t.same(f, 1) + } + t.end() +}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/package.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/package.json index 4924901245..70675fbaf7 100644 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/package.json +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/package.json @@ -1,58 +1,72 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "glob", - "description": "a little globber", - "version": "3.2.11", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "main": "glob.js", - "engines": { - "node": "*" - }, - "dependencies": { - "inherits": "2", - "minimatch": "0.3" - }, - "devDependencies": { - "tap": "~0.4.0", - "mkdirp": "0", - "rimraf": "1" - }, - "scripts": { - "test": "tap test/*.js", - "test-regen": "TEST_REGEN=1 node test/00-setup.js" - }, - "license": "BSD", - "gitHead": "73f57e99510582b2024b762305970ebcf9b70aa2", - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "homepage": "https://github.com/isaacs/node-glob", - "_id": "glob@3.2.11", - "_shasum": "4a973f635b9190f715d10987d5c00fd2815ebe3d", - "_from": "glob@~3.2.9", - "_npmVersion": "1.4.10", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "4a973f635b9190f715d10987d5c00fd2815ebe3d", - "tarball": "http://registry.npmjs.org/glob/-/glob-3.2.11.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "readme": "ERROR: No README data found!" -} +{ + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "name": "glob", + "description": "a little globber", + "version": "4.3.5", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-glob.git" + }, + "main": "glob.js", + "files": [ + "glob.js", + "sync.js", + "common.js" + ], + "engines": { + "node": "*" + }, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + }, + "devDependencies": { + "mkdirp": "0", + "rimraf": "^2.2.8", + "tap": "^0.5.0", + "tick": "0.0.6" + }, + "scripts": { + "prepublish": "npm run benchclean", + "profclean": "rm -f v8.log profile.txt", + "test": "npm run profclean && tap test/*.js", + "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js", + "bench": "bash benchmark.sh", + "prof": "bash prof.sh && cat profile.txt", + "benchclean": "bash benchclean.sh" + }, + "license": "ISC", + "gitHead": "9de4cb6bfeb9c8458cf188fe91447b99bf8f3cfd", + "bugs": { + "url": "https://github.com/isaacs/node-glob/issues" + }, + "homepage": "https://github.com/isaacs/node-glob", + "_id": "glob@4.3.5", + "_shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3", + "_from": "glob@>=4.3.0 <4.4.0", + "_npmVersion": "2.2.0", + "_nodeVersion": "0.10.35", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "dist": { + "shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3", + "tarball": "http://registry.npmjs.org/glob/-/glob-4.3.5.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/sync.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/sync.js new file mode 100644 index 0000000000..f981055af9 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/sync.js @@ -0,0 +1,409 @@ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var isAbsolute = common.isAbsolute +var setopts = common.setopts +var ownProp = common.ownProp + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + if (!this.matches[index][e]) { + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat || this.mark) + this._stat(this._makeAbs(e)) + } +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[f] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[f] = false + break + + default: // some unusual error. Treat as failure. + this.cache[f] = false + if (this.strict) throw er + if (!this.silent) console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = f + if (f.charAt(0) === '/') + abs = path.join(this.root, f) + else if (this.changedCwd) + abs = path.resolve(this.cwd, f) + + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, f)) { + var c = this.cache[f] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but not how we need it + if (abs.slice(-1) === '/' && c !== 'DIR') + return false + + return c + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + try { + stat = fs.statSync(abs) + } catch (er) { + return false + } + } + + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return false + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[f] = this.cache[f] || c + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/00-setup.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/00-setup.js deleted file mode 100644 index 6fc3e1f05c..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/00-setup.js +++ /dev/null @@ -1,176 +0,0 @@ -// just a little pre-run script to set up the fixtures. -// zz-finish cleans it up - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") - -var files = -[ "a/.abcdef/x/y/z/a" -, "a/abcdef/g/h" -, "a/abcfed/g/h" -, "a/b/c/d" -, "a/bc/e/f" -, "a/c/d/c/b" -, "a/cb/e/f" -] - -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") -var symlinkFrom = "../.." - -files = files.map(function (f) { - return path.resolve(__dirname, f) -}) - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -files.forEach(function (f) { - tap.test(f, function (t) { - var d = path.dirname(f) - mkdirp(d, 0755, function (er) { - if (er) { - t.fail(er) - return t.bailout() - } - fs.writeFile(f, "i like tests", function (er) { - t.ifError(er, "make file") - t.end() - }) - }) - }) -}) - -if (process.platform !== "win32") { - tap.test("symlinky", function (t) { - var d = path.dirname(symlinkTo) - console.error("mkdirp", d) - mkdirp(d, 0755, function (er) { - t.ifError(er) - fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { - t.ifError(er, "make symlink") - t.end() - }) - }) - }) -} - -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { - w = "/tmp/glob-test/" + w - tap.test("create " + w, function (t) { - mkdirp(w, function (er) { - if (er) - throw er - t.pass(w) - t.end() - }) - }) -}) - - -// generate the bash pattern test-fixtures if possible -if (process.platform === "win32" || !process.env.TEST_REGEN) { - console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") - return -} - -var spawn = require("child_process").spawn; -var globs = - // put more patterns here. - // anything that would be directly in / should be in /tmp/glob-test - ["test/a/*/+(c|g)/./d" - ,"test/a/**/[cg]/../[cg]" - ,"test/a/{b,c,d,e,f}/**/g" - ,"test/a/b/**" - ,"test/**/g" - ,"test/a/abc{fed,def}/g/h" - ,"test/a/abc{fed/g,def}/**/" - ,"test/a/abc{fed/g,def}/**///**/" - ,"test/**/a/**/" - ,"test/+(a|b|c)/a{/,bc*}/**" - ,"test/*/*/*/f" - ,"test/**/f" - ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" - ,"{./*/*,/tmp/glob-test/*}" - ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! - ,"test/a/!(symlink)/**" - ] -var bashOutput = {} -var fs = require("fs") - -globs.forEach(function (pattern) { - tap.test("generate fixture " + pattern, function (t) { - var cmd = "shopt -s globstar && " + - "shopt -s extglob && " + - "shopt -s nullglob && " + - // "shopt >&2; " + - "eval \'for i in " + pattern + "; do echo $i; done\'" - var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) - var out = [] - cp.stdout.on("data", function (c) { - out.push(c) - }) - cp.stderr.pipe(process.stderr) - cp.on("close", function (code) { - out = flatten(out) - if (!out) - out = [] - else - out = cleanResults(out.split(/\r*\n/)) - - bashOutput[pattern] = out - t.notOk(code, "bash test should finish nicely") - t.end() - }) - }) -}) - -tap.test("save fixtures", function (t) { - var fname = path.resolve(__dirname, "bash-results.json") - var data = JSON.stringify(bashOutput, null, 2) + "\n" - fs.writeFile(fname, data, function (er) { - t.ifError(er) - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -function flatten (chunks) { - var s = 0 - chunks.forEach(function (c) { s += c.length }) - var out = new Buffer(s) - s = 0 - chunks.forEach(function (c) { - c.copy(out, s) - s += c.length - }) - - return out.toString().trim() -} - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-comparison.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-comparison.js deleted file mode 100644 index 803e681fc4..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-comparison.js +++ /dev/null @@ -1,63 +0,0 @@ -// basic test -// show that it does the same thing by default as the shell. -var tap = require("tap") -, child_process = require("child_process") -, bashResults = require("./bash-results.json") -, globs = Object.keys(bashResults) -, glob = require("../") -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -globs.forEach(function (pattern) { - var expect = bashResults[pattern] - // anything regarding the symlink thing will fail on windows, so just skip it - if (process.platform === "win32" && - expect.some(function (m) { - return /\/symlink\//.test(m) - })) - return - - tap.test(pattern, function (t) { - glob(pattern, function (er, matches) { - if (er) - throw er - - // sort and unmark, just to match the shell results - matches = cleanResults(matches) - - t.deepEqual(matches, expect, pattern) - t.end() - }) - }) - - tap.test(pattern + " sync", function (t) { - var matches = cleanResults(glob.sync(pattern)) - - t.deepEqual(matches, expect, "should match shell") - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') - }) -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-results.json b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-results.json deleted file mode 100644 index 8448e32799..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/bash-results.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "test/a/*/+(c|g)/./d": [ - "test/a/b/c/./d" - ], - "test/a/**/[cg]/../[cg]": [ - "test/a/abcdef/g/../g", - "test/a/abcfed/g/../g", - "test/a/b/c/../c", - "test/a/c/../c", - "test/a/c/d/c/../c", - "test/a/symlink/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" - ], - "test/a/{b,c,d,e,f}/**/g": [], - "test/a/b/**": [ - "test/a/b", - "test/a/b/c", - "test/a/b/c/d" - ], - "test/**/g": [ - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed,def}/g/h": [ - "test/a/abcdef/g/h", - "test/a/abcfed/g/h" - ], - "test/a/abc{fed/g,def}/**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed/g,def}/**///**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/**/a/**/": [ - "test/a", - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/b", - "test/a/b/c", - "test/a/bc", - "test/a/bc/e", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/cb", - "test/a/cb/e", - "test/a/symlink", - "test/a/symlink/a", - "test/a/symlink/a/b", - "test/a/symlink/a/b/c", - "test/a/symlink/a/b/c/a", - "test/a/symlink/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" - ], - "test/+(a|b|c)/a{/,bc*}/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h" - ], - "test/*/*/*/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/**/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" - ], - "{./*/*,/tmp/glob-test/*}": [ - "./examples/g.js", - "./examples/usr-local.js", - "./node_modules/inherits", - "./node_modules/minimatch", - "./node_modules/mkdirp", - "./node_modules/rimraf", - "./node_modules/tap", - "./test/00-setup.js", - "./test/a", - "./test/bash-comparison.js", - "./test/bash-results.json", - "./test/cwd-test.js", - "./test/globstar-match.js", - "./test/mark.js", - "./test/new-glob-optional-options.js", - "./test/nocase-nomagic.js", - "./test/pause-resume.js", - "./test/readme-issue.js", - "./test/root-nomount.js", - "./test/root.js", - "./test/stat.js", - "./test/zz-cleanup.js", - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq" - ], - "{/tmp/glob-test/*,*}": [ - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq", - "examples", - "glob.js", - "LICENSE", - "node_modules", - "package.json", - "README.md", - "test" - ], - "test/a/!(symlink)/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h", - "test/a/b", - "test/a/b/c", - "test/a/b/c/d", - "test/a/bc", - "test/a/bc/e", - "test/a/bc/e/f", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/c/d/c/b", - "test/a/cb", - "test/a/cb/e", - "test/a/cb/e/f" - ] -} diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/cwd-test.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/cwd-test.js deleted file mode 100644 index 640809db38..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/cwd-test.js +++ /dev/null @@ -1,55 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing cwd and searching for **/d", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('**/d', function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('a', function (t) { - glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'b/c/d', 'c/d' ]) - t.end() - }) - }) - - t.test('a/b', function (t) { - glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('a/b/', function (t) { - glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('.', function (t) { - glob('**/d', {cwd: process.cwd()}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/globstar-match.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/globstar-match.js deleted file mode 100644 index 5ae461736c..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/globstar-match.js +++ /dev/null @@ -1,19 +0,0 @@ -var Glob = require("../glob.js").Glob -var test = require('tap').test - -test('globstar should not have dupe matches', function(t) { - var pattern = 'a/**/[gh]' - var g = new Glob(pattern, { cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - console.error('match %j', m) - matches.push(m) - }) - g.on('end', function(set) { - console.error('set', set) - matches = matches.sort() - set = set.sort() - t.same(matches, set, 'should have same set of matches') - t.end() - }) -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/mark.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/mark.js deleted file mode 100644 index 3669428722..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/mark.js +++ /dev/null @@ -1,118 +0,0 @@ -var test = require("tap").test -var glob = require('../') -process.chdir(__dirname) - -// expose timing issues -var lag = 5 -glob.Glob.prototype._stat = function(o) { return function(f, cb) { - var args = arguments - setTimeout(function() { - o.call(this, f, cb) - }.bind(this), lag += 5) -}}(glob.Glob.prototype._stat) - - -test("mark, with **", function (t) { - glob("a/*b*/**", {mark: true}, function (er, results) { - if (er) - throw er - var expect = - [ 'a/abcdef/', - 'a/abcdef/g/', - 'a/abcdef/g/h', - 'a/abcfed/', - 'a/abcfed/g/', - 'a/abcfed/g/h', - 'a/b/', - 'a/b/c/', - 'a/b/c/d', - 'a/bc/', - 'a/bc/e/', - 'a/bc/e/f', - 'a/cb/', - 'a/cb/e/', - 'a/cb/e/f' ] - - t.same(results, expect) - t.end() - }) -}) - -test("mark, no / on pattern", function (t) { - glob("a/*", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - - if (process.platform !== "win32") - expect.push('a/symlink/') - - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, no / on pattern", function (t) { - glob("a/*", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef', - 'a/abcfed', - 'a/b', - 'a/bc', - 'a/c', - 'a/cb' ] - - if (process.platform !== "win32") - expect.push('a/symlink') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /[^\/]$/) - }) -}) - -test("mark=true, / on pattern", function (t) { - glob("a/*/", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, / on pattern", function (t) { - glob("a/*/", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/new-glob-optional-options.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/new-glob-optional-options.js deleted file mode 100644 index ae11afd32a..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/new-glob-optional-options.js +++ /dev/null @@ -1,10 +0,0 @@ -var Glob = require('../glob.js').Glob; -var test = require('tap').test; - -test('new glob, with cb, and no options', function (t) { - new Glob(__filename, function(er, results) { - if (er) throw er; - t.same(results, [__filename]); - t.end(); - }); -}); diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/nocase-nomagic.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/nocase-nomagic.js deleted file mode 100644 index 3d26fc20b7..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/nocase-nomagic.js +++ /dev/null @@ -1,113 +0,0 @@ -var fs = require('fs'); -var test = require('tap').test; -var glob = require('../'); - -test('mock fs', function(t) { - var stat = fs.stat - var statSync = fs.statSync - var readdir = fs.readdir - var readdirSync = fs.readdirSync - - function fakeStat(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = { isDirectory: function() { return true } } - break - case '/tmp/a': - ret = { isDirectory: function() { return false } } - break - } - return ret - } - - fs.stat = function(path, cb) { - var f = fakeStat(path); - if (f) { - process.nextTick(function() { - cb(null, f) - }) - } else { - stat.call(fs, path, cb) - } - } - - fs.statSync = function(path) { - return fakeStat(path) || statSync.call(fs, path) - } - - function fakeReaddir(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = [ 'a', 'A' ] - break - case '/': - ret = ['tmp', 'tMp', 'tMP', 'TMP'] - } - return ret - } - - fs.readdir = function(path, cb) { - var f = fakeReaddir(path) - if (f) - process.nextTick(function() { - cb(null, f) - }) - else - readdir.call(fs, path, cb) - } - - fs.readdirSync = function(path) { - return fakeReaddir(path) || readdirSync.call(fs, path) - } - - t.pass('mocked') - t.end() -}) - -test('nocase, nomagic', function(t) { - var n = 2 - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/a', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) - glob('/tmp/A', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) -}) - -test('nocase, with some magic', function(t) { - t.plan(2) - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/pause-resume.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/pause-resume.js deleted file mode 100644 index 7dad2b1045..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -// show that no match events happen while paused. -var tap = require("tap") -, child_process = require("child_process") -// just some gnarly pattern with lots of matches -, pattern = "test/a/!(symlink)/**" -, bashResults = require("./bash-results.json") -, patterns = Object.keys(bashResults) -, glob = require("../") -, Glob = glob.Glob -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -var globResults = [] -tap.test("use a Glob object, and pause/resume it", function (t) { - var g = new Glob(pattern) - , paused = false - , res = [] - , expect = bashResults[pattern] - - g.on("pause", function () { - console.error("pause") - }) - - g.on("resume", function () { - console.error("resume") - }) - - g.on("match", function (m) { - t.notOk(g.paused, "must not be paused") - globResults.push(m) - g.pause() - t.ok(g.paused, "must be paused") - setTimeout(g.resume.bind(g), 10) - }) - - g.on("end", function (matches) { - t.pass("reached glob end") - globResults = cleanResults(globResults) - matches = cleanResults(matches) - t.deepEqual(matches, globResults, - "end event matches should be the same as match events") - - t.deepEqual(matches, expect, - "glob matches should be the same as bash results") - - t.end() - }) -}) - diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/readme-issue.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/readme-issue.js deleted file mode 100644 index 7cac4cb7bf..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/readme-issue.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require("tap").test -var glob = require("../") - -var mkdirp = require("mkdirp") -var fs = require("fs") -var rimraf = require("rimraf") -var dir = __dirname + "/package" - -test("setup", function (t) { - mkdirp.sync(dir) - fs.writeFileSync(dir + "/package.json", "{}", "ascii") - fs.writeFileSync(dir + "/README", "x", "ascii") - t.pass("setup done") - t.end() -}) - -test("glob", function (t) { - var opt = { - cwd: dir, - nocase: true, - mark: true - } - - glob("README?(.*)", opt, function (er, files) { - if (er) - throw er - t.same(files, ["README"]) - t.end() - }) -}) - -test("cleanup", function (t) { - rimraf.sync(dir) - t.pass("clean") - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root-nomount.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root-nomount.js deleted file mode 100644 index 0dfca2f479..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root-nomount.js +++ /dev/null @@ -1,39 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing root and searching for /b*/**", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) - }) - - t.test('a', function (t) { - glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root.js deleted file mode 100644 index 7b03dbf0c3..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/root.js +++ /dev/null @@ -1,46 +0,0 @@ -var t = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -var glob = require('../') -var path = require('path') - -t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) -}) - - -t.test('a', function (t) { - console.error("root=" + path.resolve('a')) - glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { - t.ifError(er) - var wanted = [ - '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' - ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - }) - - t.like(matches, wanted) - t.end() - }) -}) - -t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - })) - t.end() - }) -}) - -t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/stat.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/stat.js deleted file mode 100644 index 2733d3922c..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/stat.js +++ /dev/null @@ -1,32 +0,0 @@ -var glob = require('../') -var test = require('tap').test -var path = require('path') - -test('stat all the things', function(t) { - var g = new glob.Glob('a/*abc*/**', { stat: true, cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - matches.push(m) - }) - var stats = [] - g.on('stat', function(m) { - stats.push(m) - }) - g.on('end', function(eof) { - stats = stats.sort() - matches = matches.sort() - eof = eof.sort() - t.same(stats, matches) - t.same(eof, matches) - var cache = Object.keys(this.statCache) - t.same(cache.map(function (f) { - return path.relative(__dirname, f) - }).sort(), matches) - - cache.forEach(function(c) { - t.equal(typeof this.statCache[c], 'object') - }, this) - - t.end() - }) -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/zz-cleanup.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/zz-cleanup.js deleted file mode 100644 index b2d4bed70d..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/test/zz-cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -// remove the fixtures -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("cleanup fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "removed") - t.end() - }) -}) diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/LICENSE.txt b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/LICENSE.txt deleted file mode 100644 index fb2a041715..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2013 The Dojo Foundation -Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/README.md b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/README.md deleted file mode 100644 index 44975a69fc..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# Lo-Dash v2.4.1 -A utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features). - -## Download - -Check out our [wiki]([https://github.com/lodash/lodash/wiki/build-differences]) for details over the differences between builds. - -* Modern builds perfect for newer browsers/environments:
    -[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.min.js) - -* Compatibility builds for older environment support too:
    -[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.compat.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.compat.min.js) - -* Underscore builds to use as a drop-in replacement:
    -[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.underscore.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.underscore.min.js) - -CDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash). For smaller file sizes, create [custom builds](http://lodash.com/custom-builds) with only the features needed. - -Love modules? We’ve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-es6](https://github.com/lodash/lodash-es6), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method. - -## Dive in - -There’s plenty of **[documentation](http://lodash.com/docs)**, [unit tests](http://lodash.com/tests), & [benchmarks](http://lodash.com/benchmarks).
    -Check out
    DevDocs as a fast, organized, & searchable interface for our documentation. - -The full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).
    -A list of upcoming features is available on our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap). - -## Features *not* in Underscore - - * AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.) - * [_(…)](http://lodash.com/docs#_) supports intuitive chaining - * [_.at](http://lodash.com/docs#at) for cherry-picking collection values - * [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods - * [_.clone](http://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects - * [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays & objects - * [_.constant](http://lodash.com/docs#constant) & [_.property](http://lodash.com/docs#property) function generators for composing functions - * [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex` - * [_.create](http://lodash.com/docs#create) for easier object inheritance - * [_.createCallback](http://lodash.com/docs#createCallback) for extending callbacks in methods & mixins - * [_.curry](http://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions - * [_.debounce](http://lodash.com/docs#debounce) & [_.throttle](http://lodash.com/docs#throttle) accept additional `options` for more control - * [_.findIndex](http://lodash.com/docs#findIndex) & [_.findKey](http://lodash.com/docs#findKey) for finding indexes & keys - * [_.forEach](http://lodash.com/docs#forEach) is chainable & supports exiting early - * [_.forIn](http://lodash.com/docs#forIn) for iterating own & inherited properties - * [_.forOwn](http://lodash.com/docs#forOwn) for iterating own properties - * [_.isPlainObject](http://lodash.com/docs#isPlainObject) for checking if values are created by `Object` - * [_.mapValues](http://lodash.com/docs#mapValues) for [mapping](http://lodash.com/docs#map) values to an object - * [_.memoize](http://lodash.com/docs#memoize) exposes the `cache` of memoized functions - * [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend) - * [_.noop](http://lodash.com/docs#noop) for function placeholders - * [_.now](http://lodash.com/docs#now) as a cross-browser `Date.now` alternative - * [_.parseInt](http://lodash.com/docs#parseInt) for consistent behavior - * [_.pull](http://lodash.com/docs#pull) & [_.remove](http://lodash.com/docs#remove) for mutating arrays - * [_.random](http://lodash.com/docs#random) supports returning floating-point numbers - * [_.runInContext](http://lodash.com/docs#runInContext) for easier mocking - * [_.sortBy](http://lodash.com/docs#sortBy) supports sorting by multiple properties - * [_.support](http://lodash.com/docs#support) for flagging environment features - * [_.template](http://lodash.com/docs#template) supports [*“imports”*](http://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals) - * [_.transform](http://lodash.com/docs#transform) as a powerful alternative to [_.reduce](http://lodash.com/docs#reduce) for transforming objects - * [_.where](http://lodash.com/docs#where) supports deep object comparisons - * [_.xor](http://lodash.com/docs#xor) as a companion to [_.difference](http://lodash.com/docs#difference), [_.intersection](http://lodash.com/docs#intersection), & [_.union](http://lodash.com/docs#union) - * [_.zip](http://lodash.com/docs#zip) is capable of unzipping values - * [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), & - [more](http://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks - * [_.contains](http://lodash.com/docs#contains), [_.toArray](http://lodash.com/docs#toArray), & - [more](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings - * [_.filter](http://lodash.com/docs#filter), [_.map](http://lodash.com/docs#map), & - [more](http://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands - * [_.findLast](http://lodash.com/docs#findLast), [_.findLastIndex](http://lodash.com/docs#findLastIndex), & - [more](http://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight, _.partialRight") right-associative methods - -## Resources - - * Podcasts - - [JavaScript Jabber](http://javascriptjabber.com/079-jsj-lo-dash-with-john-david-dalton/) - - * Posts - - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/) - - [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/) - - * Videos - - [Introduction](https://vimeo.com/44154599) - - [Origins](https://vimeo.com/44154600) - - [Optimizations & builds](https://vimeo.com/44154601) - - [Native method use](https://vimeo.com/48576012) - - [Testing](https://vimeo.com/45865290) - - [CascadiaJS ’12](http://www.youtube.com/watch?v=dpPy4f_SeEk) - - A list of other community created podcasts, posts, & videos is available on our [wiki](https://github.com/lodash/lodash/wiki/Resources). - -## Support - -Tested in Chrome 5~31, Firefox 2~25, IE 6-11, Opera 9.25~17, Safari 3-7, Node.js 0.6.21~0.10.22, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.
    -Automated browser test results [are available](https://saucelabs.com/u/lodash) as well as [Travis CI](https://travis-ci.org/) builds for [lodash](https://travis-ci.org/lodash/lodash/), [lodash-cli](https://travis-ci.org/lodash/lodash-cli/), [lodash-amd](https://travis-ci.org/lodash/lodash-amd/), [lodash-node](https://travis-ci.org/lodash/lodash-node/), & [grunt-lodash](https://travis-ci.org/lodash/grunt-lodash). - -Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing.
    -[![Sauce Labs](http://lodash.com/_img/sauce.png)](https://saucelabs.com/ "Sauce Labs: Selenium Testing & More") - -## Installation & usage - -In browsers: - -```html - -``` - -Using [`npm`](http://npmjs.org/): - -```bash -npm i --save lodash - -{sudo} npm i -g lodash -npm ln lodash -``` - -In [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/): - -```js -var _ = require('lodash'); -// or as Underscore -var _ = require('lodash/dist/lodash.underscore'); -``` - -**Notes:** - * Don’t assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL - * If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory *before* requiring it - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('lodash.js'); -``` - -In an AMD loader: - -```js -require({ - 'packages': [ - { 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' } - ] -}, -['lodash'], function(_) { - console.log(_.VERSION); -}); -``` - -## Author - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## Contributors - -| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | -|---|---|---| -| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) | - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/lodash/lodash/trend.png)](https://bitdeli.com/free "Bitdeli Badge") diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js deleted file mode 100644 index 79e8ae8750..0000000000 --- a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js +++ /dev/null @@ -1,7157 +0,0 @@ -/** - * @license - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash -o ./dist/lodash.compat.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre ES5 environments */ - var undefined; - - /** Used to pool arrays and objects used internally */ - var arrayPool = [], - objectPool = []; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used internally to indicate various things */ - var indicatorObject = {}; - - /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */ - var keyPrefix = +new Date + ''; - - /** Used as the size when optimizations are enabled for large arrays */ - var largeArraySize = 75; - - /** Used as the max size of the `arrayPool` and `objectPool` */ - var maxPoolSize = 40; - - /** Used to detect and test whitespace */ - var whitespace = ( - // whitespace - ' \t\x0B\f\xA0\ufeff' + - - // line terminators - '\n\r\u2028\u2029' + - - // unicode category "Zs" space separators - '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' - ); - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detected named functions */ - var reFuncName = /^\s*function[ \n\r\t]+\w/; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match leading whitespace and zeros to be removed */ - var reLeadingSpacesAndZeros = RegExp('^[' + whitespace + ']*0+(?=.$)'); - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to detect functions containing a `this` reference */ - var reThis = /\bthis\b/; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to assign default `context` object properties */ - var contextProps = [ - 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', - 'RegExp', 'String', '_', 'attachEvent', 'clearTimeout', 'isFinite', 'isNaN', - 'parseInt', 'setTimeout' - ]; - - /** Used to fix the JScript [[DontEnum]] bug */ - var shadowedProps = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - errorClass = '[object Error]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used as an internal `_.debounce` options object */ - var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false - }; - - /** Used as the property descriptor for `__bindData__` */ - var descriptor = { - 'configurable': false, - 'enumerable': false, - 'value': null, - 'writable': false - }; - - /** Used as the data object for `iteratorTemplate` */ - var iteratorData = { - 'args': '', - 'array': null, - 'bottom': '', - 'firstArg': '', - 'init': '', - 'keys': null, - 'loop': '', - 'shadowedProps': null, - 'support': null, - 'top': '', - 'useHas': false - }; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Used as a reference to the global object */ - var root = (objectTypes[typeof window] && window) || this; - - /** Detect free variable `exports` */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module` */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports` */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */ - var freeGlobal = objectTypes[typeof global] && global; - if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { - root = freeGlobal; - } - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.indexOf` without support for binary searches - * or `fromIndex` constraints. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * An implementation of `_.contains` for cache objects that mimics the return - * signature of `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache object to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var type = typeof value; - cache = cache.cache; - - if (type == 'boolean' || value == null) { - return cache[value] ? 0 : -1; - } - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value; - cache = (cache = cache[type]) && cache[key]; - - return type == 'object' - ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1) - : (cache ? 0 : -1); - } - - /** - * Adds a given value to the corresponding cache object. - * - * @private - * @param {*} value The value to add to the cache. - */ - function cachePush(value) { - var cache = this.cache, - type = typeof value; - - if (type == 'boolean' || value == null) { - cache[value] = true; - } else { - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value, - typeCache = cache[type] || (cache[type] = {}); - - if (type == 'object') { - (typeCache[key] || (typeCache[key] = [])).push(value); - } else { - typeCache[key] = true; - } - } - } - - /** - * Used by `_.max` and `_.min` as the default callback when a given - * collection is a string value. - * - * @private - * @param {string} value The character to inspect. - * @returns {number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` elements, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ac = a.criteria, - bc = b.criteria, - index = -1, - length = ac.length; - - while (++index < length) { - var value = ac[index], - other = bc[index]; - - if (value !== other) { - if (value > other || typeof value == 'undefined') { - return 1; - } - if (value < other || typeof other == 'undefined') { - return -1; - } - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to return the same value for - // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247 - // - // This also ensures a stable sort in V8 and other engines. - // See http://code.google.com/p/v8/issues/detail?id=90 - return a.index - b.index; - } - - /** - * Creates a cache object to optimize linear searches of large arrays. - * - * @private - * @param {Array} [array=[]] The array to search. - * @returns {null|Object} Returns the cache object or `null` if caching should not be used. - */ - function createCache(array) { - var index = -1, - length = array.length, - first = array[0], - mid = array[(length / 2) | 0], - last = array[length - 1]; - - if (first && typeof first == 'object' && - mid && typeof mid == 'object' && last && typeof last == 'object') { - return false; - } - var cache = getObject(); - cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false; - - var result = getObject(); - result.array = array; - result.cache = cache; - result.push = cachePush; - - while (++index < length) { - result.push(array[index]); - } - return result; - } - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ - function getArray() { - return arrayPool.pop() || []; - } - - /** - * Gets an object from the object pool or creates a new one if the pool is empty. - * - * @private - * @returns {Object} The object from the pool. - */ - function getObject() { - return objectPool.pop() || { - 'array': null, - 'cache': null, - 'criteria': null, - 'false': false, - 'index': 0, - 'null': false, - 'number': null, - 'object': null, - 'push': null, - 'string': null, - 'true': false, - 'undefined': false, - 'value': null - }; - } - - /** - * Checks if `value` is a DOM node in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM node, else `false`. - */ - function isNode(value) { - // IE < 9 presents DOM nodes as `Object` objects except they have `toString` - // methods that are `typeof` "string" and still can coerce nodes to strings - return typeof value.toString != 'function' && typeof (value + '') == 'string'; - } - - /** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ - function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } - } - - /** - * Releases the given object back to the object pool. - * - * @private - * @param {Object} [object] The object to release. - */ - function releaseObject(object) { - var cache = object.cache; - if (cache) { - releaseObject(cache); - } - object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null; - if (objectPool.length < maxPoolSize) { - objectPool.push(object); - } - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new `lodash` function using the given context object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} [context=root] The context object. - * @returns {Function} Returns the `lodash` function. - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See http://es5.github.io/#x11.1.5. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references */ - var Array = context.Array, - Boolean = context.Boolean, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ - var arrayRef = []; - - /** Used for native method references */ - var errorProto = Error.prototype, - objectProto = Object.prototype, - stringProto = String.prototype; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = context._; - - /** Used to resolve the internal [[Class]] of values */ - var toString = objectProto.toString; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' - ); - - /** Native method shortcuts */ - var ceil = Math.ceil, - clearTimeout = context.clearTimeout, - floor = Math.floor, - fnToString = Function.prototype.toString, - getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectProto.hasOwnProperty, - push = arrayRef.push, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - setTimeout = context.setTimeout, - splice = arrayRef.splice, - unshift = arrayRef.unshift; - - /** Used to set meta data on functions */ - var defineProperty = (function() { - // IE 8 only accepts DOM elements - try { - var o = {}, - func = isNative(func = Object.defineProperty) && func, - result = func(o, o, o) && func; - } catch(e) { } - return result; - }()); - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = context.isFinite, - nativeIsNaN = context.isNaN, - nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[funcClass] = Function; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /** Used to avoid iterating non-enumerable properties in IE < 9 */ - var nonEnumProps = {}; - nonEnumProps[arrayClass] = nonEnumProps[dateClass] = nonEnumProps[numberClass] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true }; - nonEnumProps[boolClass] = nonEnumProps[stringClass] = { 'constructor': true, 'toString': true, 'valueOf': true }; - nonEnumProps[errorClass] = nonEnumProps[funcClass] = nonEnumProps[regexpClass] = { 'constructor': true, 'toString': true }; - nonEnumProps[objectClass] = { 'constructor': true }; - - (function() { - var length = shadowedProps.length; - while (length--) { - var key = shadowedProps[length]; - for (var className in nonEnumProps) { - if (hasOwnProperty.call(nonEnumProps, className) && !hasOwnProperty.call(nonEnumProps[className], key)) { - nonEnumProps[className][key] = false; - } - } - } - }()); - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps the given value to enable intuitive - * method chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * Chaining is supported in custom builds as long as the `value` method is - * implicitly or explicitly included in the build. - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, - * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`, - * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`, - * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, - * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, - * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`, - * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`, - * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`, - * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`, - * and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`, - * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, - * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, - * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`, - * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`, - * `template`, `unescape`, `uniqueId`, and `value` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * provided, otherwise they return unwrapped values. - * - * Explicit chaining can be enabled by using the `_.chain` method. - * - * @name _ - * @constructor - * @category Chaining - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(num) { - * return num * num; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor - return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__')) - ? value - : new lodashWrapper(value); - } - - /** - * A fast path for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap in a `lodash` instance. - * @param {boolean} chainAll A flag to enable chaining for all methods - * @returns {Object} Returns a `lodash` instance. - */ - function lodashWrapper(value, chainAll) { - this.__chain__ = !!chainAll; - this.__wrapped__ = value; - } - // ensure `new lodashWrapper` is an instance of `lodash` - lodashWrapper.prototype = lodash.prototype; - - /** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - (function() { - var ctor = function() { this.x = 1; }, - object = { '0': 1, 'length': 1 }, - props = []; - - ctor.prototype = { 'valueOf': 1, 'y': 1 }; - for (var key in new ctor) { props.push(key); } - for (key in arguments) { } - - /** - * Detect if an `arguments` object's [[Class]] is resolvable (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsClass = toString.call(arguments) == argsClass; - - /** - * Detect if `arguments` objects are `Object` objects (all but Narwhal and Opera < 10.5). - * - * @memberOf _.support - * @type boolean - */ - support.argsObject = arguments.constructor == Object && !(arguments instanceof Array); - - /** - * Detect if `name` or `message` properties of `Error.prototype` are - * enumerable by default. (IE < 9, Safari < 5.1) - * - * @memberOf _.support - * @type boolean - */ - support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name'); - - /** - * Detect if `prototype` properties are enumerable by default. - * - * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 - * (if the prototype or a property on the prototype has been set) - * incorrectly sets a function's `prototype` property [[Enumerable]] - * value to `true`. - * - * @memberOf _.support - * @type boolean - */ - support.enumPrototypes = propertyIsEnumerable.call(ctor, 'prototype'); - - /** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). - * - * @memberOf _.support - * @type boolean - */ - support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); - - /** - * Detect if `Function#name` is supported (all but IE). - * - * @memberOf _.support - * @type boolean - */ - support.funcNames = typeof Function.name == 'string'; - - /** - * Detect if `arguments` object indexes are non-enumerable - * (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumArgs = key != 0; - - /** - * Detect if properties shadowing those on `Object.prototype` are non-enumerable. - * - * In IE < 9 an objects own properties, shadowing non-enumerable ones, are - * made non-enumerable as well (a.k.a the JScript [[DontEnum]] bug). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumShadows = !/valueOf/.test(props); - - /** - * Detect if own properties are iterated after inherited properties (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.ownLast = props[0] != 'x'; - - /** - * Detect if `Array#shift` and `Array#splice` augment array-like objects correctly. - * - * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()` - * and `splice()` functions that fail to remove the last element, `value[0]`, - * of array-like objects even though the `length` property is set to `0`. - * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()` - * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9. - * - * @memberOf _.support - * @type boolean - */ - support.spliceObjects = (arrayRef.splice.call(object, 0, 1), !object[0]); - - /** - * Detect lack of support for accessing string characters by index. - * - * IE < 8 can't access characters by index and IE 8 can only access - * characters by index on string literals. - * - * @memberOf _.support - * @type boolean - */ - support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if a DOM node's [[Class]] is resolvable (all but IE < 9) - * and that the JS engine errors when attempting to coerce an object to - * a string without a `toString` function. - * - * @memberOf _.support - * @type boolean - */ - try { - support.nodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + '')); - } catch(e) { - support.nodeClass = true; - } - }(1)); - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The template used to create iterator functions. - * - * @private - * @param {Object} data The data object used to populate the text. - * @returns {string} Returns the interpolated text. - */ - var iteratorTemplate = function(obj) { - - var __p = 'var index, iterable = ' + - (obj.firstArg) + - ', result = ' + - (obj.init) + - ';\nif (!iterable) return result;\n' + - (obj.top) + - ';'; - if (obj.array) { - __p += '\nvar length = iterable.length; index = -1;\nif (' + - (obj.array) + - ') { '; - if (support.unindexedChars) { - __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } '; - } - __p += '\n while (++index < length) {\n ' + - (obj.loop) + - ';\n }\n}\nelse { '; - } else if (support.nonEnumArgs) { - __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' + - (obj.loop) + - ';\n }\n } else { '; - } - - if (support.enumPrototypes) { - __p += '\n var skipProto = typeof iterable == \'function\';\n '; - } - - if (support.enumErrorProps) { - __p += '\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n '; - } - - var conditions = []; if (support.enumPrototypes) { conditions.push('!(skipProto && index == "prototype")'); } if (support.enumErrorProps) { conditions.push('!(skipErrorProps && (index == "message" || index == "name"))'); } - - if (obj.useHas && obj.keys) { - __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n'; - if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - } else { - __p += '\n for (index in iterable) {\n'; - if (obj.useHas) { conditions.push("hasOwnProperty.call(iterable, index)"); } if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - if (support.nonEnumShadows) { - __p += '\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n '; - for (k = 0; k < 7; k++) { - __p += '\n index = \'' + - (obj.shadowedProps[k]) + - '\';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))'; - if (!obj.useHas) { - __p += ' || (!nonEnum[index] && iterable[index] !== objectProto[index])'; - } - __p += ') {\n ' + - (obj.loop) + - ';\n } '; - } - __p += '\n } '; - } - - } - - if (obj.array || support.nonEnumArgs) { - __p += '\n}'; - } - __p += - (obj.bottom) + - ';\nreturn result'; - - return __p - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ - function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, callback, stackA, stackB) { - if (callback) { - var result = callback(value); - if (typeof result != 'undefined') { - return result; - } - } - // inspect [[Class]] - var isObj = isObject(value); - if (isObj) { - var className = toString.call(value); - if (!cloneableClasses[className] || (!support.nodeClass && isNode(value))) { - return value; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return new ctor(+value); - - case numberClass: - case stringClass: - return new ctor(value); - - case regexpClass: - result = ctor(value.source, reFlags.exec(value)); - result.lastIndex = value.lastIndex; - return result; - } - } else { - return value; - } - var isArr = isArray(value); - if (isDeep) { - // check for circular references and return corresponding clone - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - result = isArr ? ctor(value.length) : {}; - } - else { - result = isArr ? slice(value) : assign({}, value); - } - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - // exit for shallow clone - if (!isDeep) { - return result; - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? baseEach : forOwn)(value, function(objValue, key) { - result[key] = baseClone(objValue, isDeep, callback, stackA, stackB); - }); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; - } - // fallback for browsers without `Object.create` - if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - } - - /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); - } - - /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. - */ - function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.difference` that accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to process. - * @param {Array} [values] The array of values to exclude. - * @returns {Array} Returns a new array of filtered values. - */ - function baseDifference(array, values) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - isLarge = length >= largeArraySize && indexOf === baseIndexOf, - result = []; - - if (isLarge) { - var cache = createCache(values); - if (cache) { - indexOf = cacheIndexOf; - values = cache; - } else { - isLarge = false; - } - } - while (++index < length) { - var value = array[index]; - if (indexOf(values, value) < 0) { - result.push(value); - } - } - if (isLarge) { - releaseObject(values); - } - return result; - } - - /** - * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects. - * @param {number} [fromIndex=0] The index to start from. - * @returns {Array} Returns a new flattened array. - */ - function baseFlatten(array, isShallow, isStrict, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - if (value && typeof value == 'object' && typeof value.length == 'number' - && (isArray(value) || isArguments(value))) { - // recursively flatten arrays (susceptible to call stack limits) - if (!isShallow) { - value = baseFlatten(value, isShallow, isStrict); - } - var valIndex = -1, - valLength = value.length, - resIndex = result.length; - - result.length += valLength; - while (++valIndex < valLength) { - result[resIndex++] = value[valIndex]; - } - } else if (!isStrict) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); - - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass || (!support.nodeClass && (isNode(a) || isNode(b)))) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = !support.argsObject && isArguments(a) ? Object : a.constructor, - ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; - - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); - - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [callback] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - */ - function baseMerge(object, source, callback, stackA, stackB) { - (isArray(source) ? forEach : forOwn)(source, function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - var isShallow; - if (callback) { - result = callback(value, source); - if ((isShallow = typeof result != 'undefined')) { - value = result; - } - } - if (!isShallow) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!isShallow) { - baseMerge(value, source, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - - /** - * The base implementation of `_.random` without argument juggling or support - * for returning floating-point numbers. - * - * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns a random number. - */ - function baseRandom(min, max) { - return min + floor(nativeRandom() * (max - min + 1)); - } - - /** - * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. - * - * @private - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function} [callback] The function called per iteration. - * @returns {Array} Returns a duplicate-value-free array. - */ - function baseUniq(array, isSorted, callback) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - result = []; - - var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf, - seen = (callback || isLarge) ? getArray() : result; - - if (isLarge) { - var cache = createCache(seen); - indexOf = cacheIndexOf; - seen = cache; - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - if (isLarge) { - releaseArray(seen.array); - releaseObject(seen); - } else if (callback) { - releaseArray(seen); - } - return result; - } - - /** - * Creates a function that aggregates a collection, creating an object composed - * of keys generated from the results of running each element of the collection - * through a callback. The given `setter` function sets the keys and values - * of the composed object. - * - * @private - * @param {Function} setter The setter function. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter) { - return function(collection, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - setter(result, value, callback(value, index, collection), collection); - } - } else { - baseEach(collection, function(value, key, collection) { - setter(result, value, callback(value, key, collection), collection); - }); - } - return result; - }; - } - - /** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ - function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); - } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); - } - - /** - * Creates compiled iteration functions. - * - * @private - * @param {...Object} [options] The compile options object(s). - * @param {string} [options.array] Code to determine if the iterable is an array or array-like. - * @param {boolean} [options.useHas] Specify using `hasOwnProperty` checks in the object loop. - * @param {Function} [options.keys] A reference to `_.keys` for use in own property iteration. - * @param {string} [options.args] A comma separated string of iteration function arguments. - * @param {string} [options.top] Code to execute before the iteration branches. - * @param {string} [options.loop] Code to execute in the object loop. - * @param {string} [options.bottom] Code to execute after the iteration branches. - * @returns {Function} Returns the compiled function. - */ - function createIterator() { - // data properties - iteratorData.shadowedProps = shadowedProps; - - // iterator options - iteratorData.array = iteratorData.bottom = iteratorData.loop = iteratorData.top = ''; - iteratorData.init = 'iterable'; - iteratorData.useHas = true; - - // merge options into a template data object - for (var object, index = 0; object = arguments[index]; index++) { - for (var key in object) { - iteratorData[key] = object[key]; - } - } - var args = iteratorData.args; - iteratorData.firstArg = /^[^,]+/.exec(args)[0]; - - // create the function factory - var factory = Function( - 'baseCreateCallback, errorClass, errorProto, hasOwnProperty, ' + - 'indicatorObject, isArguments, isArray, isString, keys, objectProto, ' + - 'objectTypes, nonEnumProps, stringClass, stringProto, toString', - 'return function(' + args + ') {\n' + iteratorTemplate(iteratorData) + '\n}' - ); - - // return the compiled function - return factory( - baseCreateCallback, errorClass, errorProto, hasOwnProperty, - indicatorObject, isArguments, isArray, isString, iteratorData.keys, objectProto, - objectTypes, nonEnumProps, stringClass, stringProto, toString - ); - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized, this method returns the custom method, otherwise it returns - * the `baseIndexOf` function. - * - * @private - * @returns {Function} Returns the "indexOf" function. - */ - function getIndexOf() { - var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result; - return result; - } - - /** - * Checks if `value` is a native function. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ - function isNative(value) { - return typeof value == 'function' && reNative.test(value); - } - - /** - * Sets `this` binding data on a given function. - * - * @private - * @param {Function} func The function to set data on. - * @param {Array} value The data array to set. - */ - var setBindData = !defineProperty ? noop : function(func, value) { - descriptor.value = value; - defineProperty(func, '__bindData__', descriptor); - }; - - /** - * A fallback implementation of `isPlainObject` which checks if a given value - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - var ctor, - result; - - // avoid non Object objects, `arguments` objects, and DOM elements - if (!(value && toString.call(value) == objectClass) || - (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor)) || - (!support.argsClass && isArguments(value)) || - (!support.nodeClass && isNode(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - if (support.ownLast) { - forIn(value, function(value, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return typeof result == 'undefined' || hasOwnProperty.call(value, result); - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {string} match The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == argsClass || false; - } - // fallback for browsers that can't detect `arguments` objects by [[Class]] - if (!support.argsClass) { - isArguments = function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') || false; - }; - } - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == arrayClass || false; - }; - - /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. - * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - */ - var shimKeys = createIterator({ - 'args': 'object', - 'init': '[]', - 'top': 'if (!(objectTypes[typeof object])) return result', - 'loop': 'result.push(index)' - }); - - /** - * Creates an array composed of the own enumerable property names of an object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - if ((support.enumPrototypes && typeof object == 'function') || - (support.nonEnumArgs && object.length && isArguments(object))) { - return shimKeys(object); - } - return nativeKeys(object); - }; - - /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */ - var eachIteratorOptions = { - 'args': 'collection, callback, thisArg', - 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)", - 'array': "typeof length == 'number'", - 'keys': keys, - 'loop': 'if (callback(iterable[index], index, collection) === false) return result' - }; - - /** Reusable iterator options for `assign` and `defaults` */ - var defaultsIteratorOptions = { - 'args': 'object, source, guard', - 'top': - 'var args = arguments,\n' + - ' argsIndex = 0,\n' + - " argsLength = typeof guard == 'number' ? 2 : args.length;\n" + - 'while (++argsIndex < argsLength) {\n' + - ' iterable = args[argsIndex];\n' + - ' if (iterable && objectTypes[typeof iterable]) {', - 'keys': keys, - 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]", - 'bottom': ' }\n}' - }; - - /** Reusable iterator options for `forIn` and `forOwn` */ - var forOwnIteratorOptions = { - 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top, - 'array': false - }; - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /** Used to match HTML entities and HTML characters */ - var reEscapedHtml = RegExp('(' + keys(htmlUnescapes).join('|') + ')', 'g'), - reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - - /** - * A function compiled to iterate `arguments` objects, arrays, objects, and - * strings consistenly across environments, executing the callback for each - * element in the collection. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @private - * @type Function - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - */ - var baseEach = createIterator(eachIteratorOptions); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var assign = createIterator(defaultsIteratorOptions, { - 'top': - defaultsIteratorOptions.top.replace(';', - ';\n' + - "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" + - ' var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n' + - "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" + - ' callback = args[--argsLength];\n' + - '}' - ), - 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]' - }); - - /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects will also - * be cloned, otherwise they will be assigned by reference. If a callback - * is provided it will be executed to produce the cloned values. If the - * callback returns `undefined` cloning will be handled by the method instead. - * The callback is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var shallow = _.clone(characters); - * shallow[0] === characters[0]; - * // => true - * - * var deep = _.clone(characters, true); - * deep[0] === characters[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, isDeep, callback, thisArg) { - // allows working with "Collections" methods without using their `index` - // and `collection` arguments for `isDeep` and `callback` - if (typeof isDeep != 'boolean' && isDeep != null) { - thisArg = callback; - callback = isDeep; - isDeep = false; - } - return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates a deep clone of `value`. If a callback is provided it will be - * executed to produce the cloned values. If the callback returns `undefined` - * cloning will be handled by the method instead. The callback is bound to - * `thisArg` and invoked with one argument; (value). - * - * Note: This method is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var deep = _.cloneDeep(characters); - * deep[0] === characters[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : undefined; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? assign(result, properties) : result; - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param- {Object} [guard] Allows working with `_.reduce` without using its - * `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var object = { 'name': 'barney' }; - * _.defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var defaults = createIterator(defaultsIteratorOptions); - - /** - * This method is like `_.findIndex` except that it returns the key of the - * first element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': false }, - * 'fred': { 'age': 40, 'blocked': true }, - * 'pebbles': { 'age': 1, 'blocked': false } - * }; - * - * _.findKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (property order is not guaranteed across environments) - * - * // using "_.where" callback shorthand - * _.findKey(characters, { 'age': 1 }); - * // => 'pebbles' - * - * // using "_.pluck" callback shorthand - * _.findKey(characters, 'blocked'); - * // => 'fred' - */ - function findKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwn(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * This method is like `_.findKey` except that it iterates over elements - * of a `collection` in the opposite order. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': true }, - * 'fred': { 'age': 40, 'blocked': false }, - * 'pebbles': { 'age': 1, 'blocked': true } - * }; - * - * _.findLastKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles`, assuming `_.findKey` returns `barney` - * - * // using "_.where" callback shorthand - * _.findLastKey(characters, { 'age': 40 }); - * // => 'fred' - * - * // using "_.pluck" callback shorthand - * _.findLastKey(characters, 'blocked'); - * // => 'pebbles' - */ - function findLastKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwnRight(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) - */ - var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, { - 'useHas': false - }); - - /** - * This method is like `_.forIn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forInRight(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'move', 'y', and 'x' assuming `_.forIn ` logs 'x', 'y', and 'move' - */ - function forInRight(object, callback, thisArg) { - var pairs = []; - - forIn(object, function(value, key) { - pairs.push(key, value); - }); - - var length = pairs.length; - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - if (callback(pairs[length--], pairs[length], object) === false) { - break; - } - } - return object; - } - - /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ - var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions); - - /** - * This method is like `_.forOwn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length' - */ - function forOwnRight(object, callback, thisArg) { - var props = keys(object), - length = props.length; - - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - var key = props[length]; - if (callback(object[key], key, object) === false) { - break; - } - } - return object; - } - - /** - * Creates a sorted array of property names of all enumerable properties, - * own and inherited, of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified property name exists as a direct property of `object`, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to check. - * @returns {boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, key) { - return object ? hasOwnProperty.call(object, key) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'fred', 'second': 'barney' }); - * // => { 'fred': 'first', 'barney': 'second' } - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - value && typeof value == 'object' && toString.call(value) == boolClass || false; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value && typeof value == 'object' && toString.call(value) == dateClass || false; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value && value.nodeType === 1 || false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || - (support.argsClass ? className == argsClass : isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If a callback is provided it will be executed - * to compare values. If the callback returns `undefined` comparisons will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'name': 'fred' }; - * var copy = { 'name': 'fred' }; - * - * object == copy; - * // => false - * - * _.isEqual(object, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg) { - return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2)); - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite` which will return true for - * booleans and empty strings. See http://es5.github.io/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - // fallback for older versions of Chrome and Safari - if (isFunction(/x/)) { - isFunction = function(value) { - return typeof value == 'function' && toString.call(value) == funcClass; - }; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN` which will return `true` for - * `undefined` and other non-numeric values. See http://es5.github.io/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * Note: `NaN` is considered a number. See http://es5.github.io/#x8.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || - value && typeof value == 'object' && toString.call(value) == numberClass || false; - } - - /** - * Checks if `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * _.isPlainObject(new Shape); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && toString.call(value) == objectClass) || (!support.argsClass && isArguments(value))) { - return false; - } - var valueOf = value.valueOf, - objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/fred/); - * // => true - */ - function isRegExp(value) { - return value && objectTypes[typeof value] && toString.call(value) == regexpClass || false; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a string, else `false`. - * @example - * - * _.isString('fred'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || - value && typeof value == 'object' && toString.call(value) == stringClass || false; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new object with values of the results of each `callback` execution. - * @example - * - * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - * - * var characters = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // using "_.pluck" callback shorthand - * _.mapValues(characters, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } - */ - function mapValues(object, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - forOwn(object, function(value, key, object) { - result[key] = callback(value, key, object); - }); - return result; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * will overwrite property assignments of previous sources. If a callback is - * provided it will be executed to produce the merged values of the destination - * and source properties. If the callback returns `undefined` merging will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'characters': [ - * { 'name': 'barney' }, - * { 'name': 'fred' } - * ] - * }; - * - * var ages = { - * 'characters': [ - * { 'age': 36 }, - * { 'age': 40 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object) { - var args = arguments, - length = 2; - - if (!isObject(object)) { - return object; - } - // allows working with `_.reduce` and `_.reduceRight` without using - // their `index` and `collection` arguments - if (typeof args[2] != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - var callback = baseCreateCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - var sources = slice(arguments, 1, length), - index = -1, - stackA = getArray(), - stackB = getArray(); - - while (++index < length) { - baseMerge(object, sources[index], callback, stackA, stackB); - } - releaseArray(stackA); - releaseArray(stackB); - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` omitting the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The properties to omit or the - * function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'fred', 'age': 40 }, 'age'); - * // => { 'name': 'fred' } - * - * _.omit({ 'name': 'fred', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'fred' } - */ - function omit(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var props = []; - forIn(object, function(value, key) { - props.push(key); - }); - props = baseDifference(props, baseFlatten(arguments, true, false, 1)); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - result[key] = object[key]; - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (!callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates a two dimensional array of an object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` picking the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The function called per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name'); - * // => { 'name': 'fred' } - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'fred' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = -1, - props = baseFlatten(arguments, true, false, 1), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * An alternative to `_.reduce` this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable properties through a callback, with each callback execution - * potentially mutating the `accumulator` object. The callback is bound to - * `thisArg` and invoked with four arguments; (accumulator, value, key, object). - * Callbacks may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var squares = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) { - * num *= num; - * if (num % 2) { - * return result.push(num) < 3; - * } - * }); - * // => [1, 9, 25] - * - * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function transform(object, callback, accumulator, thisArg) { - var isArr = isArray(object); - if (accumulator == null) { - if (isArr) { - accumulator = []; - } else { - var ctor = object && object.constructor, - proto = ctor && ctor.prototype; - - accumulator = baseCreate(proto); - } - } - if (callback) { - callback = lodash.createCallback(callback, thisArg, 4); - (isArr ? baseEach : forOwn)(object, function(value, index, object) { - return callback(accumulator, value, index, object); - }); - } - return accumulator; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] (property order is not guaranteed across environments) - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [index] The indexes of `collection` - * to retrieve, specified as individual indexes or arrays of indexes. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ - function at(collection) { - var args = arguments, - index = -1, - props = baseFlatten(args, true, false, 1), - length = (args[2] && args[2][args[1]] === collection) ? 1 : props.length, - result = Array(length); - - if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given value is present in a collection using strict equality - * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the - * offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {*} target The value to check for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.contains('pebbles', 'eb'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - indexOf = getIndexOf(), - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (isArray(collection)) { - result = indexOf(collection, target, fromIndex) > -1; - } else if (typeof length == 'number') { - result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1; - } else { - baseEach(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through the callback. The corresponding value - * of each key is the number of times the key was returned by the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - - /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning an array of all elements - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(characters, 'blocked'); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - * - * // using "_.where" callback shorthand - * _.filter(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning the first element that - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect, findWhere - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.find(characters, function(chr) { - * return chr.age < 40; - * }); - * // => { 'name': 'barney', 'age': 36, 'blocked': false } - * - * // using "_.where" callback shorthand - * _.find(characters, { 'age': 1 }); - * // => { 'name': 'pebbles', 'age': 1, 'blocked': false } - * - * // using "_.pluck" callback shorthand - * _.find(characters, 'blocked'); - * // => { 'name': 'fred', 'age': 40, 'blocked': true } - */ - function find(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - } - - /** - * This method is like `_.find` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(num) { - * return num % 2 == 1; - * }); - * // => 3 - */ - function findLast(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forEachRight(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over elements of a collection, executing the callback for each - * element. The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * Note: As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(','); - * // => logs each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); }); - * // => logs each number and returns the object (property order is not guaranteed across environments) - */ - function forEach(collection, callback, thisArg) { - if (callback && typeof thisArg == 'undefined' && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - baseEach(collection, callback, thisArg); - } - return collection; - } - - /** - * This method is like `_.forEach` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEachRight(function(num) { console.log(num); }).join(','); - * // => logs each number from right to left and returns '3,2,1' - */ - function forEachRight(collection, callback, thisArg) { - var iterable = collection, - length = collection ? collection.length : 0; - - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (length--) { - if (callback(collection[length], length, collection) === false) { - break; - } - } - } else { - if (typeof length != 'number') { - var props = keys(collection); - length = props.length; - } else if (support.unindexedChars && isString(collection)) { - iterable = collection.split(''); - } - baseEach(collection, function(value, key, collection) { - key = props ? props[--length] : --length; - return callback(iterable[key], key, collection); - }); - } - return collection; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of a collection through the callback. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of the collection through the given callback. The corresponding - * value of each key is the last element responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keys = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keys, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Invokes the method named by `methodName` on each element in the `collection` - * returning an array of the results of each invoked method. Additional arguments - * will be provided to each invoked method. If `methodName` is a function it - * will be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [arg] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the collection - * through the callback. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (property order is not guaranteed across environments) - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(characters, 'name'); - * // => ['barney', 'fred'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = lodash.createCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - baseEach(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of a collection. If the collection is empty or - * falsey `-Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.max(characters, function(chr) { return chr.age; }); - * // => { 'name': 'fred', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.max(characters, 'age'); - * // => { 'name': 'fred', 'age': 40 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of a collection. If the collection is empty or - * falsey `Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.min(characters, function(chr) { return chr.age; }); - * // => { 'name': 'barney', 'age': 36 }; - * - * // using "_.pluck" callback shorthand - * _.min(characters, 'age'); - * // => { 'name': 'barney', 'age': 36 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the collection. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} property The name of the property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.pluck(characters, 'name'); - * // => ['barney', 'fred'] - */ - var pluck = map; - - /** - * Reduces a collection to a value which is the accumulated result of running - * each element in the collection through the callback, where each successive - * callback execution consumes the return value of the previous execution. If - * `accumulator` is not provided the first element of the collection will be - * used as the initial `accumulator` value. The callback is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - baseEach(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is like `_.reduce` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - forEachRight(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter` this method returns the elements of a - * collection that the callback does **not** return truey for. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that failed the callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(characters, 'blocked'); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - * - * // using "_.where" callback shorthand - * _.reject(characters, { 'age': 36 }); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - */ - function reject(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Retrieves a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Allows working with functions like `_.map` - * without using their `index` arguments as `n`. - * @returns {Array} Returns the random sample(s) of `collection`. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ - function sample(collection, n, guard) { - if (collection && typeof collection.length != 'number') { - collection = values(collection); - } else if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - if (n == null || guard) { - return collection ? collection[baseRandom(0, collection.length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(nativeMax(0, n), result.length); - return result; - } - - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = baseRandom(0, ++index); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the callback returns a truey value for **any** element of a - * collection. The function returns as soon as it finds a passing value and - * does not iterate over the entire collection. The callback is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if any element passed the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(characters, 'blocked'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(characters, { 'age': 1 }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through the callback. This method - * performs a stable sort, that is, it will preserve the original sort order - * of equal elements. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an array of property names is provided for `callback` the collection - * will be sorted by each property value. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 26 }, - * { 'name': 'fred', 'age': 30 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(_.sortBy(characters, 'age'), _.values); - * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]] - * - * // sorting by multiple properties - * _.map(_.sortBy(characters, ['name', 'age']), _.values); - * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - isArr = isArray(callback), - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - if (!isArr) { - callback = lodash.createCallback(callback, thisArg, 3); - } - forEach(collection, function(value, key, collection) { - var object = result[++index] = getObject(); - if (isArr) { - object.criteria = map(callback, function(key) { return value[key]; }); - } else { - (object.criteria = getArray())[0] = callback(value, key, collection); - } - object.index = index; - object.value = value; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - var object = result[length]; - result[length] = object.value; - if (!isArr) { - releaseArray(object.criteria); - } - releaseObject(object); - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return (support.unindexedChars && isString(collection)) - ? collection.split('') - : slice(collection); - } - return values(collection); - } - - /** - * Performs a deep comparison of each element in a `collection` to the given - * `properties` object, returning an array of all elements that have equivalent - * property values. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Object} props The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given properties. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.where(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }] - * - * _.where(characters, { 'pets': ['dino'] }); - * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array excluding all values of the provided arrays using strict - * equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - return baseDifference(array, baseFlatten(arguments, true, true, 1)); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.findIndex(characters, function(chr) { - * return chr.age < 20; - * }); - * // => 2 - * - * // using "_.where" callback shorthand - * _.findIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findIndex(characters, 'blocked'); - * // => 1 - */ - function findIndex(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - if (callback(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of a `collection` from right to left. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': true }, - * { 'name': 'fred', 'age': 40, 'blocked': false }, - * { 'name': 'pebbles', 'age': 1, 'blocked': true } - * ]; - * - * _.findLastIndex(characters, function(chr) { - * return chr.age > 30; - * }); - * // => 1 - * - * // using "_.where" callback shorthand - * _.findLastIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findLastIndex(characters, 'blocked'); - * // => 2 - */ - function findLastIndex(array, callback, thisArg) { - var length = array ? array.length : 0; - callback = lodash.createCallback(callback, thisArg, 3); - while (length--) { - if (callback(array[length], length, array)) { - return length; - } - } - return -1; - } - - /** - * Gets the first element or first `n` elements of an array. If a callback - * is provided elements at the beginning of the array are returned as long - * as the callback returns truey. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name'); - * // => ['barney', 'fred'] - */ - function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[0] : undefined; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `isShallow` - * is truey, the array will only be flattened a single level. If a callback - * is provided each element of the array is passed through the callback before - * flattening. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - * - * var characters = [ - * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * // using "_.pluck" callback shorthand - * _.flatten(characters, 'pets'); - * // => ['hoppy', 'baby puss', 'dino'] - */ - function flatten(array, isShallow, callback, thisArg) { - // juggle arguments - if (typeof isShallow != 'boolean' && isShallow != null) { - thisArg = callback; - callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow; - isShallow = false; - } - if (callback != null) { - array = map(array, callback, thisArg); - } - return baseFlatten(array, isShallow); - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the array is already sorted - * providing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - if (typeof fromIndex == 'number') { - var length = array ? array.length : 0; - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0); - } else if (fromIndex) { - var index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - return baseIndexOf(array, value, fromIndex); - } - - /** - * Gets all but the last element or last `n` elements of an array. If a - * callback is provided elements at the end of the array are excluded from - * the result as long as the callback returns truey. The callback is bound - * to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': false, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name'); - * // => ['barney', 'fred'] - */ - function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Creates an array of unique values present in all provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of shared values. - * @example - * - * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2] - */ - function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = getArray(), - indexOf = getIndexOf(), - trustIndexOf = indexOf === baseIndexOf, - seen = getArray(); - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push(trustIndexOf && value.length >= largeArraySize && - createCache(argsIndex ? args[argsIndex] : seen)); - } - } - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = []; - - outer: - while (++index < length) { - var cache = caches[0]; - value = array[index]; - - if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) { - argsIndex = argsLength; - (cache || seen).push(value); - while (--argsIndex) { - cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) { - continue outer; - } - } - result.push(value); - } - } - while (argsLength--) { - cache = caches[argsLength]; - if (cache) { - releaseObject(cache); - } - } - releaseArray(caches); - releaseArray(seen); - return result; - } - - /** - * Gets the last element or last `n` elements of an array. If a callback is - * provided elements at the end of the array are returned as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.last(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.last(characters, { 'employer': 'na' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[length - 1] : undefined; - } - } - return slice(array, nativeMax(0, length - n)); - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Removes all provided values from the given array using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {...*} [value] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ - function pull(array) { - var args = arguments, - argsIndex = 0, - argsLength = args.length, - length = array ? array.length : 0; - - while (++argsIndex < argsLength) { - var index = -1, - value = args[argsIndex]; - while (++index < length) { - if (array[index] === value) { - splice.call(array, index--, 1); - length--; - } - } - } - return array; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. If `start` is less than `stop` a - * zero-length range is created unless a negative `step` is specified. - * - * @static - * @memberOf _ - * @category Arrays - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = typeof step == 'number' ? step : (+step || 1); - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so engines like Chakra and V8 avoid slower modes - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / (step || 1))), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * Removes all elements from an array that the callback returns truey for - * and returns an array of removed elements. The callback is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4, 5, 6]; - * var evens = _.remove(array, function(num) { return num % 2 == 0; }); - * - * console.log(array); - * // => [1, 3, 5] - * - * console.log(evens); - * // => [2, 4, 6] - */ - function remove(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (callback(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; - } - - /** - * The opposite of `_.initial` this method gets all but the first element or - * first `n` elements of an array. If a callback function is provided elements - * at the beginning of the array are excluded from the result as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.rest(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.rest(characters, { 'employer': 'slate' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which a value - * should be inserted into a given sorted array in order to maintain the sort - * order of the array. If a callback is provided it will be executed for - * `value` and each element of `array` to compute their sort ranking. The - * callback is bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - (callback(array[mid]) < value) - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Creates an array of unique values, in order, of the provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of combined values. - * @example - * - * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2, 3, 5, 4] - */ - function union() { - return baseUniq(baseFlatten(arguments, true, true)); - } - - /** - * Creates a duplicate-value-free version of an array using strict equality - * for comparisons, i.e. `===`. If the array is sorted, providing - * `true` for `isSorted` will use a faster algorithm. If a callback is provided - * each element of `array` is passed through the callback before uniqueness - * is computed. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); }); - * // => ['A', 'b', 'C'] - * - * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2.5, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - // juggle arguments - if (typeof isSorted != 'boolean' && isSorted != null) { - thisArg = callback; - callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted; - isSorted = false; - } - if (callback != null) { - callback = lodash.createCallback(callback, thisArg, 3); - } - return baseUniq(array, isSorted, callback); - } - - /** - * Creates an array excluding all provided values using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {...*} [value] The values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - return baseDifference(array, slice(arguments, 1)); - } - - /** - * Creates an array that is the symmetric difference of the provided arrays. - * See http://en.wikipedia.org/wiki/Symmetric_difference. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of values. - * @example - * - * _.xor([1, 2, 3], [5, 2, 1, 4]); - * // => [3, 5, 4] - * - * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]); - * // => [1, 4, 5] - */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseUniq(baseDifference(result, array).concat(baseDifference(array, result))) - : array; - } - } - return result || []; - } - - /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second - * elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @alias unzip - * @category Arrays - * @param {...Array} [array] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ - function zip() { - var array = arguments.length > 1 ? arguments : arguments[0], - index = -1, - length = array ? max(pluck(array, 'length')) : 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = pluck(array, index); - } - return result; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Provide - * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]` - * or two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @alias object - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ - function zipObject(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - if (!values && length && !isArray(keys[0])) { - values = []; - } - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that executes `func`, with the `this` binding and - * arguments of the created function, only after being called `n` times. - * - * @static - * @memberOf _ - * @category Functions - * @param {number} n The number of times the function must be called before - * `func` is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('Done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'Done saving!', after all saves have completed - */ - function after(n, func) { - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * provided to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'fred' }, 'hi'); - * func(); - * // => 'hi fred' - */ - function bind(func, thisArg) { - return arguments.length > 2 - ? createWrapper(func, 17, slice(arguments, 2), null, thisArg) - : createWrapper(func, 1, null, null, thisArg); - } - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all the function properties - * of `object` will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...string} [methodName] The object method names to - * bind, specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { console.log('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = arguments.length > 1 ? baseFlatten(arguments, true, false, 1) : functions(object), - index = -1, - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = createWrapper(object[key], 1, null, null, object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those provided to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'fred', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi fred' - * - * object.greet = function(greeting) { - * return greeting + 'ya ' + this.name + '!'; - * }; - * - * func(); - * // => 'hiya fred!' - */ - function bindKey(object, key) { - return arguments.length > 2 - ? createWrapper(key, 19, slice(arguments, 2), null, object) - : createWrapper(key, 3, null, null, object); - } - - /** - * Creates a function that is the composition of the provided functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {...Function} [func] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var realNameMap = { - * 'pebbles': 'penelope' - * }; - * - * var format = function(name) { - * name = realNameMap[name.toLowerCase()] || name; - * return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase(); - * }; - * - * var greet = function(formatted) { - * return 'Hiya ' + formatted + '!'; - * }; - * - * var welcome = _.compose(greet, format); - * welcome('pebbles'); - * // => 'Hiya Penelope!' - */ - function compose() { - var funcs = arguments, - length = funcs.length; - - while (length--) { - if (!isFunction(funcs[length])) { - throw new TypeError; - } - } - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function which accepts one or more arguments of `func` that when - * invoked either executes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` can be specified - * if `func.length` is not sufficient. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @returns {Function} Returns the new curried function. - * @example - * - * var curried = _.curry(function(a, b, c) { - * console.log(a + b + c); - * }); - * - * curried(1)(2)(3); - * // => 6 - * - * curried(1, 2)(3); - * // => 6 - * - * curried(1, 2, 3); - * // => 6 - */ - function curry(func, arity) { - arity = typeof arity == 'number' ? arity : (+arity || func.length); - return createWrapper(func, 4, null, null, null, arity); - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. - * Provide an options object to indicate that `func` should be invoked on - * the leading and/or trailing edge of the `wait` timeout. Subsequent calls - * to the debounced function will return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {number} wait The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * var lazyLayout = _.debounce(calculateLayout, 150); - * jQuery(window).on('resize', lazyLayout); - * - * // execute `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * }); - * - * // ensure `batchLog` is executed once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * source.addEventListener('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * }, false); - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - wait = nativeMax(0, wait) || 0; - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0); - trailing = 'trailing' in options ? options.trailing : trailing; - } - var delayed = function() { - var remaining = wait - (now() - stamp); - if (remaining <= 0) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - }; - - var maxDelayed = function() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - }; - - return function() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - }; - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { console.log(text); }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ - function defer(func) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay execution. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { console.log(text); }, 1000, 'later'); - * // => logs 'later' after one second - */ - function delay(func, wait) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it will be used to determine the cache key for storing the result - * based on the arguments provided to the memoized function. By default, the - * first argument provided to the memoized function is used as the cache key. - * The `func` is executed with the `this` binding of the memoized function. - * The result cache is exposed as the `cache` property on the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - * - * fibonacci(9) - * // => 34 - * - * var data = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // modifying the result cache - * var get = _.memoize(function(name) { return data[name]; }, _.identity); - * get('pebbles'); - * // => { 'name': 'pebbles', 'age': 1 } - * - * get.cache.pebbles.name = 'penelope'; - * get('pebbles'); - * // => { 'name': 'penelope', 'age': 1 } - */ - function memoize(func, resolver) { - if (!isFunction(func)) { - throw new TypeError; - } - var memoized = function() { - var cache = memoized.cache, - key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0]; - - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - } - memoized.cache = {}; - return memoized; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those provided to the new function. This - * method is similar to `_.bind` except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('fred'); - * // => 'hi fred' - */ - function partial(func) { - return createWrapper(func, 16, slice(arguments, 1)); - } - - /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createWrapper(func, 32, null, slice(arguments, 1)); - } - - /** - * Creates a function that, when executed, will only call the `func` function - * at most once per every `wait` milliseconds. Provide an options object to - * indicate that `func` should be invoked on the leading and/or trailing edge - * of the `wait` timeout. Subsequent calls to the throttled function will - * return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {number} wait The number of milliseconds to throttle executions to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - * - * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? options.leading : leading; - trailing = 'trailing' in options ? options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = wait; - debounceOptions.trailing = trailing; - - return debounce(func, wait, debounceOptions); - } - - /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Additional arguments provided to the function are appended - * to those provided to the wrapper function. The wrapper is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

    ' + func(text) + '

    '; - * }); - * - * p('Fred, Wilma, & Pebbles'); - * // => '

    Fred, Wilma, & Pebbles

    ' - */ - function wrap(value, wrapper) { - return createWrapper(wrapper, 16, [value]); - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new function. - * @example - * - * var object = { 'name': 'fred' }; - * var getter = _.constant(object); - * getter() === object; - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ - function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; - } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } - } - return result; - }; - } - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' - */ - function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds function properties of a source object to the destination object. - * If `object` is a function methods will be added to its prototype as well. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Function|Object} [object=lodash] object The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options] The options object. - * @param {boolean} [options.chain=true] Specify whether the functions added are chainable. - * @example - * - * function capitalize(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * - * _.mixin({ 'capitalize': capitalize }); - * _.capitalize('fred'); - * // => 'Fred' - * - * _('fred').capitalize().value(); - * // => 'Fred' - * - * _.mixin({ 'capitalize': capitalize }, { 'chain': false }); - * _('fred').capitalize(); - * // => 'Fred' - */ - function mixin(object, source, options) { - var chain = true, - methodNames = source && functions(source); - - if (!source || (!options && !methodNames.length)) { - if (options == null) { - options = source; - } - ctor = lodashWrapper; - source = object; - object = lodash; - methodNames = functions(source); - } - if (options === false) { - chain = false; - } else if (isObject(options) && 'chain' in options) { - chain = options.chain; - } - var ctor = object, - isFunc = isFunction(ctor); - - forEach(methodNames, function(methodName) { - var func = object[methodName] = source[methodName]; - if (isFunc) { - ctor.prototype[methodName] = function() { - var chainAll = this.__chain__, - value = this.__wrapped__, - args = [value]; - - push.apply(args, arguments); - var result = func.apply(object, args); - if (chain || chainAll) { - if (value === result && isObject(result)) { - return this; - } - result = new ctor(result); - result.__chain__ = chainAll; - } - return result; - }; - } - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - context._ = oldDash; - return this; - } - - /** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ - function noop() { - // no operation performed - } - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var stamp = _.now(); - * _.defer(function() { console.log(_.now() - stamp); }); - * // => logs the number of milliseconds it took for the deferred function to be called - */ - var now = isNative(now = Date.now) && now || function() { - return new Date().getTime(); - }; - - /** - * Converts the given value into an integer of the specified radix. - * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the - * `value` is a hexadecimal, in which case a `radix` of `16` is used. - * - * Note: This method avoids differences in native ES3 and ES5 `parseInt` - * implementations. See http://es5.github.io/#E. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} value The value to parse. - * @param {number} [radix] The radix used to interpret the value to parse. - * @returns {number} Returns the new integer value. - * @example - * - * _.parseInt('08'); - * // => 8 - */ - var parseInt = nativeParseInt(whitespace + '08') == 8 ? nativeParseInt : function(value, radix) { - // Firefox < 21 and Opera < 15 follow the ES3 specified implementation of `parseInt` - return nativeParseInt(isString(value) ? value.replace(reLeadingSpacesAndZeros, '') : value, radix || 0); - }; - - /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ - function property(key) { - return function(object) { - return object[key]; - }; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number will be - * returned. If `floating` is truey or either `min` or `max` are floats a - * floating-point number will be returned instead of an integer. - * - * @static - * @memberOf _ - * @category Utilities - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating=false] Specify returning a floating-point number. - * @returns {number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (typeof min == 'boolean' && noMax) { - floating = min; - min = 1; - } - else if (!noMax && typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; - } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand +'').length - 1)))), max); - } - return baseRandom(min, max); - } - - /** - * Resolves the value of property `key` on `object`. If `key` is a function - * it will be invoked with the `this` binding of `object` and its result returned, - * else the property value is returned. If `object` is falsey then `undefined` - * is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to resolve. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, key) { - if (object) { - var value = object[key]; - return isFunction(value) ? object[key]() : value; - } - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * For more information on precompiling templates see: - * http://lodash.com/custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} text The template text. - * @param {Object} data The data object used to populate the text. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as local variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [sourceURL] The sourceURL of the template's compiled source. - * @param {string} [variable] The data object variable name. - * @returns {Function|string} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'fred' }); - * // => 'hello fred' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' -``` - -Using [`npm`](http://npmjs.org/): - -```bash -npm install lodash - -npm install -g lodash -npm link lodash -``` - -To avoid potential issues, update `npm` before installing Lo-Dash: - -```bash -npm install npm -g -``` - -In [Node.js](http://nodejs.org/) and [RingoJS v0.8.0+](http://ringojs.org/): - -```js -var _ = require('lodash'); - -// or as a drop-in replacement for Underscore -var _ = require('lodash/lodash.underscore'); -``` - -**Note:** If Lo-Dash is installed globally, run [`npm link lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory before requiring it. - -In [RingoJS v0.7.0-](http://ringojs.org/): - -```js -var _ = require('lodash')._; -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('lodash.js'); -``` - -In an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require({ - 'paths': { - 'underscore': 'path/to/lodash' - } -}, -['underscore'], function(_) { - console.log(_.VERSION); -}); -``` - -## Release Notes - -### v1.0.1 - - * Add support for specifying source map URLs in `-p`/`--source-map` build options - * Ensured the second argument passed to `_.assign` is not treated as a `callback` - * Ensured `-p`/`--source-map` build options correctly set the `sourceMappingURL` - * Made `-p`/`--source-map` build options set source map *“sources”* keys based on the builds performed - * Made `_.defer` use `setImmediate`, in Node.js, when available - * Made `_.where` search arrays for values regardless of their index position - * Removed dead code from `_.template` - -The full changelog is available [here](https://github.com/lodash/lodash/wiki/Changelog). - -## BestieJS - -Lo-Dash is part of the [BestieJS](https://github.com/bestiejs) *“Best in Class”* module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation. - -## Author - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## Contributors - -| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](http://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") | -|---|---|---| -| [Blaine Bublitz](http://iceddev.com/) | [Kit Cambridge](http://kitcambridge.github.io/) | [Mathias Bynens](http://mathiasbynens.be/) | +# Lo-Dash v1.0.2 + +A utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features). + +## Download + +* Lo-Dash builds (for modern environments):
    +[Development](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.js) and +[Production](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.min.js) + +* Lo-Dash compatibility builds (for legacy and modern environments):
    +[Development](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.compat.js) and +[Production](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.compat.min.js) + +* Underscore compatibility builds:
    +[Development](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.underscore.js) and +[Production](https://raw.github.com/lodash/lodash/v1.0.2/dist/lodash.underscore.min.js) + +* For optimal file size, [create a custom build](http://lodash.com/custom-builds) with only the features you need + +## Dive in + +We’ve got [API docs](http://lodash.com/docs), [benchmarks](http://lodash.com/benchmarks), and [unit tests](http://lodash.com/tests). + +For a list of upcoming features, check out our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap). + +The full changelog is available [here](https://github.com/lodash/lodash/wiki/Changelog). + +## Installation and usage + +In browsers: + +```html + +``` + +Using [`npm`](http://npmjs.org/): + +```bash +npm install lodash + +npm install -g lodash +npm link lodash +``` + +To avoid potential issues, update `npm` before installing Lo-Dash: + +```bash +npm install npm -g +``` + +In [Node.js](http://nodejs.org/) and [RingoJS v0.8.0+](http://ringojs.org/): + +```js +var _ = require('lodash'); + +// or as a drop-in replacement for Underscore +var _ = require('lodash/lodash.underscore'); +``` + +**Note:** If Lo-Dash is installed globally, run [`npm link lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory before requiring it. + +In [RingoJS v0.7.0-](http://ringojs.org/): + +```js +var _ = require('lodash')._; +``` + +In [Rhino](http://www.mozilla.org/rhino/): + +```js +load('lodash.js'); +``` + +In an AMD loader like [RequireJS](http://requirejs.org/): + +```js +require({ + 'paths': { + 'underscore': 'path/to/lodash' + } +}, +['underscore'], function(_) { + console.log(_.VERSION); +}); +``` + +## Resources + +For more information check out these articles, screencasts, and other videos over Lo-Dash: + + * Posts + - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/) + + * Videos + - [Introducing Lo-Dash](https://vimeo.com/44154599) + - [Lo-Dash optimizations and custom builds](https://vimeo.com/44154601) + - [Lo-Dash’s origin and why it’s a better utility belt](https://vimeo.com/44154600) + - [Unit testing in Lo-Dash](https://vimeo.com/45865290) + - [Lo-Dash’s approach to native method use](https://vimeo.com/48576012) + - [CascadiaJS: Lo-Dash for a better utility belt](http://www.youtube.com/watch?v=dpPy4f_SeEk) + +## Features + + * AMD loader support ([RequireJS](http://requirejs.org/), [curl.js](https://github.com/cujojs/curl), etc.) + * [_(…)](http://lodash.com/docs#_) supports intuitive chaining + * [_.at](http://lodash.com/docs#at) for cherry-picking collection values + * [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”* defined](http://michaux.ca/articles/lazy-function-definition-pattern) methods + * [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays and objects + * [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex` argument + * [_.forEach](http://lodash.com/docs#forEach) is chainable and supports exiting iteration early + * [_.forIn](http://lodash.com/docs#forIn) for iterating over an object’s own and inherited properties + * [_.forOwn](http://lodash.com/docs#forOwn) for iterating over an object’s own properties + * [_.isPlainObject](http://lodash.com/docs#isPlainObject) checks if values are created by the `Object` constructor + * [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend) + * [_.partial](http://lodash.com/docs#partial) and [_.partialRight](http://lodash.com/docs#partialRight) for partial application without `this` binding + * [_.template](http://lodash.com/docs#template) supports [*“imports”* options](http://lodash.com/docs#templateSettings_imports), [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6), and [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * [_.where](http://lodash.com/docs#where) supports deep object comparisons + * [_.clone](http://lodash.com/docs#clone), [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), + [and more…](http://lodash.com/docs "_.assign, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept `callback` and `thisArg` arguments + * [_.contains](http://lodash.com/docs#contains), [_.size](http://lodash.com/docs#size), [_.toArray](http://lodash.com/docs#toArray), + [and more…](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.some, _.sortBy, _.where") accept strings + * [_.filter](http://lodash.com/docs#filter), [_.find](http://lodash.com/docs#find), [_.map](http://lodash.com/docs#map), + [and more…](http://lodash.com/docs "_.countBy, _.every, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* and *“_.where”* `callback` shorthands + +## Support + +Lo-Dash has been tested in at least Chrome 5~24, Firefox 1~18, IE 6-10, Opera 9.25-12, Safari 3-6, Node.js 0.4.8-0.8.20, Narwhal 0.3.2, PhantomJS 1.8.1, RingoJS 0.9, and Rhino 1.7RC5. diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.js index 1cc707f1e9..925e7fc3dd 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/glob-watcher/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.js @@ -1,5152 +1,5152 @@ -/** - * @license - * Lo-Dash 1.0.1 (Custom Build) - * Build: `lodash -o ./dist/lodash.compat.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.4.4 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. - * Available under MIT license - */ -;(function(window, undefined) { - - /** Detect free variable `exports` */ - var freeExports = typeof exports == 'object' && exports; - - /** Detect free variable `module` */ - var freeModule = typeof module == 'object' && module && module.exports == freeExports && module; - - /** Detect free variable `global` and use it as `window` */ - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal) { - window = freeGlobal; - } - - /** Used for array and object method references */ - var arrayRef = [], - objectRef = {}; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used internally to indicate various things */ - var indicatorObject = objectRef; - - /** Used by `cachedContains` as the default size when optimizations are enabled for large arrays */ - var largeArraySize = 30; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = window._; - - /** Used to match HTML entities */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g; - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - (objectRef.valueOf + '') - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/valueOf|for [^\]]+/g, '.+?') + '$' - ); - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6 - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to match HTML characters */ - var reUnescapedHtml = /[&<>"']/g; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to fix the JScript [[DontEnum]] bug */ - var shadowed = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** Native method shortcuts */ - var ceil = Math.ceil, - concat = arrayRef.concat, - floor = Math.floor, - getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectRef.hasOwnProperty, - push = arrayRef.push, - toString = objectRef.toString; - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeBind = reNative.test(nativeBind = slice.bind) && nativeBind, - nativeIsArray = reNative.test(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = window.isFinite, - nativeIsNaN = window.isNaN, - nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeRandom = Math.random; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Detect various environments */ - var isIeOpera = !!window.attachEvent, - isV8 = nativeBind && !/\n|true/.test(nativeBind + isIeOpera); - - /* Detect if `Function#bind` exists and is inferred to be fast (all but V8) */ - var isBindFast = nativeBind && !isV8; - - /* Detect if `Object.keys` exists and is inferred to be fast (IE, Opera, V8) */ - var isKeysFast = nativeKeys && (isIeOpera || isV8); - - /** - * Detect the JScript [[DontEnum]] bug: - * - * In IE < 9 an objects own properties, shadowing non-enumerable ones, are - * made non-enumerable as well. - */ - var hasDontEnumBug; - - /** - * Detect if a `prototype` properties are enumerable by default: - * - * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 - * (if the prototype or a property on the prototype has been set) - * incorrectly sets a function's `prototype` property [[Enumerable]] - * value to `true`. - */ - var hasEnumPrototype; - - /** Detect if own properties are iterated after inherited properties (IE < 9) */ - var iteratesOwnLast; - - /** - * Detect if `Array#shift` and `Array#splice` augment array-like objects - * incorrectly: - * - * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()` - * and `splice()` functions that fail to remove the last element, `value[0]`, - * of array-like objects even though the `length` property is set to `0`. - * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()` - * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9. - */ - var hasObjectSpliceBug = (hasObjectSpliceBug = { '0': 1, 'length': 1 }, - arrayRef.splice.call(hasObjectSpliceBug, 0, 1), hasObjectSpliceBug[0]); - - /** Detect if `arguments` object indexes are non-enumerable (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1) */ - var nonEnumArgs = true; - - (function() { - var props = []; - function ctor() { this.x = 1; } - ctor.prototype = { 'valueOf': 1, 'y': 1 }; - for (var prop in new ctor) { props.push(prop); } - for (prop in arguments) { nonEnumArgs = !prop; } - - hasDontEnumBug = !/valueOf/.test(props); - hasEnumPrototype = ctor.propertyIsEnumerable('prototype'); - iteratesOwnLast = props[0] != 'x'; - }(1)); - - /** Detect if `arguments` objects are `Object` objects (all but Opera < 10.5) */ - var argsAreObjects = arguments.constructor == Object; - - /** Detect if `arguments` objects [[Class]] is unresolvable (Firefox < 4, IE < 9) */ - var noArgsClass = !isArguments(arguments); - - /** - * Detect lack of support for accessing string characters by index: - * - * IE < 8 can't access characters by index and IE 8 can only access - * characters by index on string literals. - */ - var noCharByIndex = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if a DOM node's [[Class]] is unresolvable (IE < 9) - * and that the JS engine won't error when attempting to coerce an object to - * a string without a `toString` function. - */ - try { - var noNodeClass = toString.call(document) == objectClass && !({ 'toString': 0 } + ''); - } catch(e) { } - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object, that wraps the given `value`, to enable method - * chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, `compose`, - * `concat`, `countBy`, `debounce`, `defaults`, `defer`, `delay`, `difference`, - * `filter`, `flatten`, `forEach`, `forIn`, `forOwn`, `functions`, `groupBy`, - * `initial`, `intersection`, `invert`, `invoke`, `keys`, `map`, `max`, `memoize`, - * `merge`, `min`, `object`, `omit`, `once`, `pairs`, `partial`, `partialRight`, - * `pick`, `pluck`, `push`, `range`, `reject`, `rest`, `reverse`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, - * `union`, `uniq`, `unshift`, `values`, `where`, `without`, `wrap`, and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, - * `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, `isObject`, - * `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, `lastIndexOf`, - * `mixin`, `noConflict`, `pop`, `random`, `reduce`, `reduceRight`, `result`, - * `shift`, `size`, `some`, `sortedIndex`, `template`, `unescape`, and `uniqueId` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * passed, otherwise they return unwrapped values. - * - * @name _ - * @constructor - * @category Chaining - * @param {Mixed} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - */ - function lodash(value) { - // exit early if already wrapped, even if wrapped by a different `lodash` constructor - if (value && typeof value == 'object' && value.__wrapped__) { - return value; - } - // allow invoking `lodash` without the `new` operator - if (!(this instanceof lodash)) { - return new lodash(value); - } - this.__wrapped__ = value; - } - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type String - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The template used to create iterator functions. - * - * @private - * @param {Obect} data The data object used to populate the text. - * @returns {String} Returns the interpolated text. - */ - var iteratorTemplate = function(obj) { - - var __p = 'var index, iterable = ' + - (obj.firstArg ) + - ', result = iterable;\nif (!iterable) return result;\n' + - (obj.top ) + - ';\n'; - if (obj.arrays) { - __p += 'var length = iterable.length; index = -1;\nif (' + - (obj.arrays ) + - ') { '; - if (obj.noCharByIndex) { - __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } '; - } ; - __p += '\n while (++index < length) {\n ' + - (obj.loop ) + - '\n }\n}\nelse { '; - } else if (obj.nonEnumArgs) { - __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' + - (obj.loop ) + - '\n }\n } else { '; - } ; - - if (obj.hasEnumPrototype) { - __p += '\n var skipProto = typeof iterable == \'function\';\n '; - } ; - - if (obj.isKeysFast && obj.useHas) { - __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] ? nativeKeys(iterable) : [],\n length = ownProps.length;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n '; - if (obj.hasEnumPrototype) { - __p += 'if (!(skipProto && index == \'prototype\')) {\n '; - } ; - __p += - (obj.loop ) + - ''; - if (obj.hasEnumPrototype) { - __p += '}\n'; - } ; - __p += ' } '; - } else { - __p += '\n for (index in iterable) {'; - if (obj.hasEnumPrototype || obj.useHas) { - __p += '\n if ('; - if (obj.hasEnumPrototype) { - __p += '!(skipProto && index == \'prototype\')'; - } if (obj.hasEnumPrototype && obj.useHas) { - __p += ' && '; - } if (obj.useHas) { - __p += 'hasOwnProperty.call(iterable, index)'; - } ; - __p += ') { '; - } ; - __p += - (obj.loop ) + - '; '; - if (obj.hasEnumPrototype || obj.useHas) { - __p += '\n }'; - } ; - __p += '\n } '; - } ; - - if (obj.hasDontEnumBug) { - __p += '\n\n var ctor = iterable.constructor;\n '; - for (var k = 0; k < 7; k++) { - __p += '\n index = \'' + - (obj.shadowed[k] ) + - '\';\n if ('; - if (obj.shadowed[k] == 'constructor') { - __p += '!(ctor && ctor.prototype === iterable) && '; - } ; - __p += 'hasOwnProperty.call(iterable, index)) {\n ' + - (obj.loop ) + - '\n } '; - } ; - - } ; - - if (obj.arrays || obj.nonEnumArgs) { - __p += '\n}'; - } ; - __p += - (obj.bottom ) + - ';\nreturn result'; - - - return __p - }; - - /** Reusable iterator options for `assign` and `defaults` */ - var defaultsIteratorOptions = { - 'args': 'object, source, guard', - 'top': - 'var args = arguments,\n' + - ' argsIndex = 0,\n' + - " argsLength = typeof guard == 'number' ? 2 : args.length;\n" + - 'while (++argsIndex < argsLength) {\n' + - ' iterable = args[argsIndex];\n' + - ' if (iterable && objectTypes[typeof iterable]) {', - 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]", - 'bottom': ' }\n}' - }; - - /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */ - var eachIteratorOptions = { - 'args': 'collection, callback, thisArg', - 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg)", - 'arrays': "typeof length == 'number'", - 'loop': 'if (callback(iterable[index], index, collection) === false) return result' - }; - - /** Reusable iterator options for `forIn` and `forOwn` */ - var forOwnIteratorOptions = { - 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top, - 'arrays': false - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function optimized to search large arrays for a given `value`, - * starting at `fromIndex`, using strict equality for comparisons, i.e. `===`. - * - * @private - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Number} [fromIndex=0] The index to search from. - * @param {Number} [largeSize=30] The length at which an array is considered large. - * @returns {Boolean} Returns `true`, if `value` is found, else `false`. - */ - function cachedContains(array, fromIndex, largeSize) { - fromIndex || (fromIndex = 0); - - var length = array.length, - isLarge = (length - fromIndex) >= (largeSize || largeArraySize); - - if (isLarge) { - var cache = {}, - index = fromIndex - 1; - - while (++index < length) { - // manually coerce `value` to a string because `hasOwnProperty`, in some - // older versions of Firefox, coerces objects incorrectly - var key = array[index] + ''; - (hasOwnProperty.call(cache, key) ? cache[key] : (cache[key] = [])).push(array[index]); - } - } - return function(value) { - if (isLarge) { - var key = value + ''; - return hasOwnProperty.call(cache, key) && indexOf(cache[key], value) > -1; - } - return indexOf(array, value, fromIndex) > -1; - } - } - - /** - * Used by `_.max` and `_.min` as the default `callback` when a given - * `collection` is a string value. - * - * @private - * @param {String} value The character to inspect. - * @returns {Number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` values, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {Number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ai = a.index, - bi = b.index; - - a = a.criteria; - b = b.criteria; - - // ensure a stable sort in V8 and other engines - // http://code.google.com/p/v8/issues/detail?id=90 - if (a !== b) { - if (a > b || typeof a == 'undefined') { - return 1; - } - if (a < b || typeof b == 'undefined') { - return -1; - } - } - return ai < bi ? -1 : 1; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` binding - * of `thisArg` and prepends any `partialArgs` to the arguments passed to the - * bound function. - * - * @private - * @param {Function|String} func The function to bind or the method name. - * @param {Mixed} [thisArg] The `this` binding of `func`. - * @param {Array} partialArgs An array of arguments to be partially applied. - * @param {Object} [rightIndicator] Used to indicate partially applying arguments from the right. - * @returns {Function} Returns the new bound function. - */ - function createBound(func, thisArg, partialArgs, rightIndicator) { - var isFunc = isFunction(func), - isPartial = !partialArgs, - key = thisArg; - - // juggle arguments - if (isPartial) { - partialArgs = thisArg; - } - if (!isFunc) { - thisArg = func; - } - - function bound() { - // `Function#bind` spec - // http://es5.github.com/#x15.3.4.5 - var args = arguments, - thisBinding = isPartial ? this : thisArg; - - if (!isFunc) { - func = thisArg[key]; - } - if (partialArgs.length) { - args = args.length - ? (args = slice(args), rightIndicator ? args.concat(partialArgs) : partialArgs.concat(args)) - : partialArgs; - } - if (this instanceof bound) { - // ensure `new bound` is an instance of `bound` and `func` - noop.prototype = func.prototype; - thisBinding = new noop; - noop.prototype = null; - - // mimic the constructor's `return` behavior - // http://es5.github.com/#x13.2.2 - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - return bound; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name, the created callback will return the property value for a given element. - * If `func` is an object, the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @private - * @param {Mixed} [func=identity] The value to convert to a callback. - * @param {Mixed} [thisArg] The `this` binding of the created callback. - * @param {Number} [argCount=3] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function createCallback(func, thisArg, argCount) { - if (func == null) { - return identity; - } - var type = typeof func; - if (type != 'function') { - if (type != 'object') { - return function(object) { - return object[func]; - }; - } - var props = keys(func); - return function(object) { - var length = props.length, - result = false; - while (length--) { - if (!(result = isEqual(object[props[length]], func[props[length]], indicatorObject))) { - break; - } - } - return result; - }; - } - if (typeof thisArg != 'undefined') { - if (argCount === 1) { - return function(value) { - return func.call(thisArg, value); - }; - } - if (argCount === 2) { - return function(a, b) { - return func.call(thisArg, a, b); - }; - } - if (argCount === 4) { - return function(accumulator, value, index, object) { - return func.call(thisArg, accumulator, value, index, object); - }; - } - return function(value, index, object) { - return func.call(thisArg, value, index, object); - }; - } - return func; - } - - /** - * Creates compiled iteration functions. - * - * @private - * @param {Object} [options1, options2, ...] The compile options object(s). - * arrays - A string of code to determine if the iterable is an array or array-like. - * useHas - A boolean to specify using `hasOwnProperty` checks in the object loop. - * args - A string of comma separated arguments the iteration function will accept. - * top - A string of code to execute before the iteration branches. - * loop - A string of code to execute in the object loop. - * bottom - A string of code to execute after the iteration branches. - * - * @returns {Function} Returns the compiled function. - */ - function createIterator() { - var data = { - // support properties - 'hasDontEnumBug': hasDontEnumBug, - 'hasEnumPrototype': hasEnumPrototype, - 'isKeysFast': isKeysFast, - 'nonEnumArgs': nonEnumArgs, - 'noCharByIndex': noCharByIndex, - 'shadowed': shadowed, - - // iterator options - 'arrays': 'isArray(iterable)', - 'bottom': '', - 'loop': '', - 'top': '', - 'useHas': true - }; - - // merge options into a template data object - for (var object, index = 0; object = arguments[index]; index++) { - for (var key in object) { - data[key] = object[key]; - } - } - var args = data.args; - data.firstArg = /^[^,]+/.exec(args)[0]; - - // create the function factory - var factory = Function( - 'createCallback, hasOwnProperty, isArguments, isArray, isString, ' + - 'objectTypes, nativeKeys', - 'return function(' + args + ') {\n' + iteratorTemplate(data) + '\n}' - ); - // return the compiled function - return factory( - createCallback, hasOwnProperty, isArguments, isArray, isString, - objectTypes, nativeKeys - ); - } - - /** - * A function compiled to iterate `arguments` objects, arrays, objects, and - * strings consistenly across environments, executing the `callback` for each - * element in the `collection`. The `callback` is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @private - * @type Function - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|String} Returns `collection`. - */ - var each = createIterator(eachIteratorOptions); - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {String} match The matched character to escape. - * @returns {String} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {String} match The matched character to escape. - * @returns {String} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Checks if `value` is a DOM node in IE < 9. - * - * @private - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true` if the `value` is a DOM node, else `false`. - */ - function isNode(value) { - // IE < 9 presents DOM nodes as `Object` objects except they have `toString` - // methods that are `typeof` "string" and still can coerce nodes to strings - return typeof value.toString != 'function' && typeof (value + '') == 'string'; - } - - /** - * A no-operation function. - * - * @private - */ - function noop() { - // no operation performed - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used, instead of `Array#slice`, to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|String} collection The collection to slice. - * @param {Number} start The start index. - * @param {Number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {String} match The matched character to unescape. - * @returns {String} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return toString.call(value) == argsClass; - } - // fallback for browsers that can't detect `arguments` objects by [[Class]] - if (noArgsClass) { - isArguments = function(value) { - return value ? hasOwnProperty.call(value, 'callee') : false; - }; - } - - /** - * Iterates over `object`'s own and inherited enumerable properties, executing - * the `callback` for each property. The `callback` is bound to `thisArg` and - * invoked with three arguments; (value, key, object). Callbacks may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Dog(name) { - * this.name = name; - * } - * - * Dog.prototype.bark = function() { - * alert('Woof, woof!'); - * }; - * - * _.forIn(new Dog('Dagny'), function(value, key) { - * alert(key); - * }); - * // => alerts 'name' and 'bark' (order is not guaranteed) - */ - var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, { - 'useHas': false - }); - - /** - * Iterates over an object's own enumerable properties, executing the `callback` - * for each property. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by explicitly - * returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * alert(key); - * }); - * // => alerts '0', '1', and 'length' (order is not guaranteed) - */ - var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions); - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - // `instanceof` may cause a memory leak in IE 7 if `value` is a host object - // http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak - return (argsAreObjects && value instanceof Array) || toString.call(value) == arrayClass; - }; - - /** - * Creates an array composed of the own enumerable property names of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (order is not guaranteed) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - if ((hasEnumPrototype && typeof object == 'function') || - (nonEnumArgs && object.length && isArguments(object))) { - return shimKeys(object); - } - return nativeKeys(object); - }; - - /** - * A fallback implementation of `isPlainObject` that checks if a given `value` - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - // avoid non-objects and false positives for `arguments` objects - var result = false; - if (!(value && typeof value == 'object') || isArguments(value)) { - return result; - } - // check that the constructor is `Object` (i.e. `Object instanceof Object`) - var ctor = value.constructor; - if ((!isFunction(ctor) && (!noNodeClass || !isNode(value))) || ctor instanceof ctor) { - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - if (iteratesOwnLast) { - forIn(value, function(value, key, object) { - result = !hasOwnProperty.call(object, key); - return false; - }); - return result === false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return result === false || hasOwnProperty.call(value, result); - } - return result; - } - - /** - * A fallback implementation of `Object.keys` that produces an array of the - * given object's own enumerable property names. - * - * @private - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names. - */ - function shimKeys(object) { - var result = []; - forOwn(object, function(value, key) { - result.push(key); - }); - return result; - } - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite propery assignments of previous - * sources. If a `callback` function is passed, it will be executed to produce - * the assigned values. The `callback` is bound to `thisArg` and invoked with - * two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'moe' }, { 'age': 40 }); - * // => { 'name': 'moe', 'age': 40 } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var food = { 'name': 'apple' }; - * defaults(food, { 'name': 'banana', 'type': 'fruit' }); - * // => { 'name': 'apple', 'type': 'fruit' } - */ - var assign = createIterator(defaultsIteratorOptions, { - 'top': - defaultsIteratorOptions.top.replace(';', - ';\n' + - "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" + - ' var callback = createCallback(args[--argsLength - 1], args[argsLength--], 2);\n' + - "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" + - ' callback = args[--argsLength];\n' + - '}' - ), - 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]' - }); - - /** - * Creates a clone of `value`. If `deep` is `true`, nested objects will also - * be cloned, otherwise they will be assigned by reference. If a `callback` - * function is passed, it will be executed to produce the cloned values. If - * `callback` returns `undefined`, cloning will be handled by the method instead. - * The `callback` is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to clone. - * @param {Boolean} [deep=false] A flag to indicate a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Array} [stackA=[]] Internally used to track traversed source objects. - * @param- {Array} [stackB=[]] Internally used to associate clones with source counterparts. - * @returns {Mixed} Returns the cloned `value`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * var shallow = _.clone(stooges); - * shallow[0] === stooges[0]; - * // => true - * - * var deep = _.clone(stooges, true); - * deep[0] === stooges[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, deep, callback, thisArg, stackA, stackB) { - var result = value; - - // allows working with "Collections" methods without using their `callback` - // argument, `index|key`, for this method's `callback` - if (typeof deep == 'function') { - thisArg = callback; - callback = deep; - deep = false; - } - if (typeof callback == 'function') { - callback = typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg, 1); - result = callback(result); - - var done = typeof result != 'undefined'; - if (!done) { - result = value; - } - } - // inspect [[Class]] - var isObj = isObject(result); - if (isObj) { - var className = toString.call(result); - if (!cloneableClasses[className] || (noNodeClass && isNode(result))) { - return result; - } - var isArr = isArray(result); - } - // shallow clone - if (!isObj || !deep) { - return isObj && !done - ? (isArr ? slice(result) : assign({}, result)) - : result; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return done ? result : new ctor(+result); - - case numberClass: - case stringClass: - return done ? result : new ctor(result); - - case regexpClass: - return done ? result : ctor(result.source, reFlags.exec(result)); - } - // check for circular references and return corresponding clone - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - // init cloned object - if (!done) { - result = isArr ? ctor(result.length) : {}; - - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? forEach : forOwn)(done ? result : value, function(objValue, key) { - result[key] = clone(objValue, deep, callback, undefined, stackA, stackB); - }); - - return result; - } - - /** - * Creates a deep clone of `value`. If a `callback` function is passed, it will - * be executed to produce the cloned values. If `callback` returns the value it - * was passed, cloning will be handled by the method instead. The `callback` is - * bound to `thisArg` and invoked with one argument; (value). - * - * Note: This function is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the deep cloned `value`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * var deep = _.cloneDeep(stooges); - * deep[0] === stooges[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : value; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return clone(value, true, callback, thisArg); - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param- {Object} [guard] Internally used to allow working with `_.reduce` - * without using its callback's `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var food = { 'name': 'apple' }; - * _.defaults(food, { 'name': 'banana', 'type': 'fruit' }); - * // => { 'name': 'apple', 'type': 'fruit' } - */ - var defaults = createIterator(defaultsIteratorOptions); - - /** - * Creates a sorted array of all enumerable properties, own and inherited, - * of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified object `property` exists and is a direct property, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to check. - * @param {String} property The property to check for. - * @returns {Boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, property) { - return object ? hasOwnProperty.call(object, property) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'moe', 'second': 'larry' }); - * // => { 'moe': 'first', 'larry': 'second' } (order is not guaranteed) - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || toString.call(value) == boolClass; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value instanceof Date || toString.call(value) == dateClass; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value ? value.nodeType === 1 : false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|String} value The value to inspect. - * @returns {Boolean} Returns `true`, if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || - className == argsClass || (noArgsClass && isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If `callback` is passed, it will be executed to - * compare values. If `callback` returns `undefined`, comparisons will be handled - * by the method instead. The `callback` is bound to `thisArg` and invoked with - * two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} a The value to compare. - * @param {Mixed} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Object} [stackA=[]] Internally used track traversed `a` objects. - * @param- {Object} [stackB=[]] Internally used track traversed `b` objects. - * @returns {Boolean} Returns `true`, if the values are equvalent, else `false`. - * @example - * - * var moe = { 'name': 'moe', 'age': 40 }; - * var copy = { 'name': 'moe', 'age': 40 }; - * - * moe == copy; - * // => false - * - * _.isEqual(moe, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - var whereIndicator = callback === indicatorObject; - if (callback && !whereIndicator) { - callback = typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg, 2); - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - (!a || (type != 'function' && type != 'object')) && - (!b || (otherType != 'function' && otherType != 'object'))) { - return false; - } - // exit early for `null` and `undefined`, avoiding ES3's Function#call behavior - // http://es5.github.com/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0`, treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return a != +a - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.com/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == b + ''; - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - if (a.__wrapped__ || b.__wrapped__) { - return isEqual(a.__wrapped__ || a, b.__wrapped__ || b, callback, thisArg, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass || (noNodeClass && (isNode(a) || isNode(b)))) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = !argsAreObjects && isArguments(a) ? Object : a.constructor, - ctorB = !argsAreObjects && isArguments(b) ? Object : b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && !( - isFunction(ctorA) && ctorA instanceof ctorA && - isFunction(ctorB) && ctorB instanceof ctorB - )) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.com/#x15.12.3) - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - length = a.length; - size = b.length; - - // compare lengths to determine if a deep comparison is necessary - result = size == a.length; - if (!result && !whereIndicator) { - return result; - } - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (whereIndicator) { - while (index--) { - if ((result = isEqual(a[index], value, callback, thisArg, stackA, stackB))) { - break; - } - } - } else if (!(result = isEqual(a[size], value, callback, thisArg, stackA, stackB))) { - break; - } - } - return result; - } - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && isEqual(a[key], value, callback, thisArg, stackA, stackB)); - } - }); - - if (result && !whereIndicator) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - return result; - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite`, which will return true for - * booleans and empty strings. See http://es5.github.com/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - // fallback for older versions of Chrome and Safari - if (isFunction(/x/)) { - isFunction = function(value) { - return value instanceof Function || toString.call(value) == funcClass; - }; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.com/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return value ? objectTypes[typeof value] : false; - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN`, which will return `true` for - * `undefined` and other values. See http://es5.github.com/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || toString.call(value) == numberClass; - } - - /** - * Checks if a given `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if `value` is a plain object, else `false`. - * @example - * - * function Stooge(name, age) { - * this.name = name; - * this.age = age; - * } - * - * _.isPlainObject(new Stooge('moe', 40)); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'name': 'moe', 'age': 40 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && typeof value == 'object')) { - return false; - } - var valueOf = value.valueOf, - objProto = typeof valueOf == 'function' && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? value == objProto || (getPrototypeOf(value) == objProto && !isArguments(value)) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/moe/); - * // => true - */ - function isRegExp(value) { - return value instanceof RegExp || toString.call(value) == regexpClass; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a string, else `false`. - * @example - * - * _.isString('moe'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || toString.call(value) == stringClass; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined`, into the destination object. Subsequent sources - * will overwrite propery assignments of previous sources. If a `callback` function - * is passed, it will be executed to produce the merged values of the destination - * and source properties. If `callback` returns `undefined`, merging will be - * handled by the method instead. The `callback` is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Object} [deepIndicator] Internally used to indicate that `stackA` - * and `stackB` are arrays of traversed objects instead of source objects. - * @param- {Array} [stackA=[]] Internally used to track traversed source objects. - * @param- {Array} [stackB=[]] Internally used to associate values with their - * source counterparts. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'stooges': [ - * { 'name': 'moe' }, - * { 'name': 'larry' } - * ] - * }; - * - * var ages = { - * 'stooges': [ - * { 'age': 40 }, - * { 'age': 50 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'stooges': [{ 'name': 'moe', 'age': 40 }, { 'name': 'larry', 'age': 50 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object, source, deepIndicator) { - var args = arguments, - index = 0, - length = 2; - - if (!isObject(object)) { - return object; - } - if (deepIndicator === indicatorObject) { - var callback = args[3], - stackA = args[4], - stackB = args[5]; - } else { - stackA = []; - stackB = []; - - // allows working with `_.reduce` and `_.reduceRight` without - // using their `callback` arguments, `index|key` and `collection` - if (typeof deepIndicator != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - callback = createCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - } - while (++index < length) { - (isArray(args[index]) ? forEach : forOwn)(args[index], function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - - if (callback) { - result = callback(value, source); - if (typeof result != 'undefined') { - value = result; - } - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!callback) { - value = merge(value, source, indicatorObject, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a `callback` function is passed, it will be executed - * for each property in the `object`, omitting the properties `callback` - * returns truthy for. The `callback` is bound to `thisArg` and invoked - * with three arguments; (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|String} callback|[prop1, prop2, ...] The properties to omit - * or the function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'moe', 'age': 40 }, 'age'); - * // => { 'name': 'moe' } - * - * _.omit({ 'name': 'moe', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'moe' } - */ - function omit(object, callback, thisArg) { - var isFunc = typeof callback == 'function', - result = {}; - - if (isFunc) { - callback = createCallback(callback, thisArg); - } else { - var props = concat.apply(arrayRef, arguments); - } - forIn(object, function(value, key, object) { - if (isFunc - ? !callback(value, key, object) - : indexOf(props, key, 1) < 0 - ) { - result[key] = value; - } - }); - return result; - } - - /** - * Creates a two dimensional array of the given object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'moe': 30, 'larry': 40 }); - * // => [['moe', 30], ['larry', 40]] (order is not guaranteed) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of property - * names. If `callback` is passed, it will be executed for each property in the - * `object`, picking the properties `callback` returns truthy for. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'moe', '_userid': 'moe1' }, 'name'); - * // => { 'name': 'moe' } - * - * _.pick({ 'name': 'moe', '_userid': 'moe1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'moe' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = 0, - props = concat.apply(arrayRef, arguments), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = createCallback(callback, thisArg); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Array|Number|String} [index1, index2, ...] The indexes of - * `collection` to retrieve, either as individual arguments or arrays. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['moe', 'larry', 'curly'], 0, 2); - * // => ['moe', 'curly'] - */ - function at(collection) { - var index = -1, - props = concat.apply(arrayRef, slice(arguments, 1)), - length = props.length, - result = Array(length); - - if (noCharByIndex && isString(collection)) { - collection = collection.split(''); - } - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given `target` element is present in a `collection` using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Mixed} target The value to check for. - * @param {Number} [fromIndex=0] The index to search from. - * @returns {Boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'moe', 'age': 40 }, 'moe'); - * // => true - * - * _.contains('curly', 'ur'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (typeof length == 'number') { - result = (isString(collection) - ? collection.indexOf(target, fromIndex) - : indexOf(collection, target, fromIndex) - ) > -1; - } else { - each(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys returned from running each element of the - * `collection` through the given `callback`. The corresponding value of each key - * is the number of times the key was returned by the `callback`. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - function countBy(collection, callback, thisArg) { - var result = {}; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, key, collection) { - key = callback(value, key, collection) + ''; - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - return result; - } - - /** - * Checks if the `callback` returns a truthy value for **all** elements of a - * `collection`. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Boolean} Returns `true` if all elements pass the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(stooges, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(stooges, { 'age': 50 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - each(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Examines each element in a `collection`, returning an array of all elements - * the `callback` returns truthy for. The `callback` is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(food, 'organic'); - * // => [{ 'name': 'carrot', 'organic': true, 'type': 'vegetable' }] - * - * // using "_.where" callback shorthand - * _.filter(food, { 'type': 'fruit' }); - * // => [{ 'name': 'apple', 'organic': false, 'type': 'fruit' }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - each(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Examines each element in a `collection`, returning the first that the `callback` - * returns truthy for. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the element that passed the callback check, - * else `undefined`. - * @example - * - * var even = _.find([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => 2 - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'banana', 'organic': true, 'type': 'fruit' }, - * { 'name': 'beet', 'organic': false, 'type': 'vegetable' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * var veggie = _.find(food, { 'type': 'vegetable' }); - * // => { 'name': 'beet', 'organic': false, 'type': 'vegetable' } - * - * // using "_.pluck" callback shorthand - * var healthy = _.find(food, 'organic'); - * // => { 'name': 'banana', 'organic': true, 'type': 'fruit' } - */ - function find(collection, callback, thisArg) { - var result; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over a `collection`, executing the `callback` for each element in - * the `collection`. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). Callbacks may exit iteration early - * by explicitly returning `false`. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|String} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(alert).join(','); - * // => alerts each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, alert); - * // => alerts each number value (order is not guaranteed) - */ - function forEach(collection, callback, thisArg) { - if (callback && typeof thisArg == 'undefined' && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - each(collection, callback, thisArg); - } - return collection; - } - - /** - * Creates an object composed of keys returned from running each element of the - * `collection` through the `callback`. The corresponding value of each key is - * an array of elements passed to `callback` that returned the key. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - function groupBy(collection, callback, thisArg) { - var result = {}; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, key, collection) { - key = callback(value, key, collection) + ''; - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - return result; - } - - /** - * Invokes the method named by `methodName` on each element in the `collection`, - * returning an array of the results of each invoked method. Additional arguments - * will be passed to each invoked method. If `methodName` is a function, it will - * be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|String} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the `collection` - * through the `callback`. The `callback` is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (order is not guaranteed) - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(stooges, 'name'); - * // => ['moe', 'larry'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = createCallback(callback, thisArg); - if (isArray(collection)) { - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - each(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of an `array`. If `callback` is passed, - * it will be executed for each value in the `array` to generate the - * criterion by which the value is ranked. The `callback` is bound to - * `thisArg` and invoked with three arguments; (value, index, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.max(stooges, function(stooge) { return stooge.age; }); - * // => { 'name': 'larry', 'age': 50 }; - * - * // using "_.pluck" callback shorthand - * _.max(stooges, 'age'); - * // => { 'name': 'larry', 'age': 50 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - if (!callback && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = !callback && isString(collection) - ? charAtCallback - : createCallback(callback, thisArg); - - each(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of an `array`. If `callback` is passed, - * it will be executed for each value in the `array` to generate the - * criterion by which the value is ranked. The `callback` is bound to `thisArg` - * and invoked with three arguments; (value, index, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.min(stooges, function(stooge) { return stooge.age; }); - * // => { 'name': 'moe', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.min(stooges, 'age'); - * // => { 'name': 'moe', 'age': 40 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - if (!callback && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = !callback && isString(collection) - ? charAtCallback - : createCallback(callback, thisArg); - - each(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the `collection`. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {String} property The property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.pluck(stooges, 'name'); - * // => ['moe', 'larry'] - */ - var pluck = map; - - /** - * Reduces a `collection` to a value that is the accumulated result of running - * each element in the `collection` through the `callback`, where each successive - * `callback` execution consumes the return value of the previous execution. - * If `accumulator` is not passed, the first element of the `collection` will be - * used as the initial `accumulator` value. The `callback` is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [accumulator] Initial value of the accumulator. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = createCallback(callback, thisArg, 4); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - each(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is similar to `_.reduce`, except that it iterates over a - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [accumulator] Initial value of the accumulator. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var iterable = collection, - length = collection ? collection.length : 0, - noaccum = arguments.length < 3; - - if (typeof length != 'number') { - var props = keys(collection); - length = props.length; - } else if (noCharByIndex && isString(collection)) { - iterable = collection.split(''); - } - callback = createCallback(callback, thisArg, 4); - forEach(collection, function(value, index, collection) { - index = props ? props[--length] : --length; - accumulator = noaccum - ? (noaccum = false, iterable[index]) - : callback(accumulator, iterable[index], index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter`, this method returns the elements of a - * `collection` that `callback` does **not** return truthy for. - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that did **not** pass the - * callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(food, 'organic'); - * // => [{ 'name': 'apple', 'organic': false, 'type': 'fruit' }] - * - * // using "_.where" callback shorthand - * _.reject(food, { 'type': 'fruit' }); - * // => [{ 'name': 'carrot', 'organic': true, 'type': 'vegetable' }] - */ - function reject(collection, callback, thisArg) { - callback = createCallback(callback, thisArg); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Creates an array of shuffled `array` values, using a version of the - * Fisher-Yates shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = floor(nativeRandom() * (++index + 1)); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to inspect. - * @returns {Number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('curly'); - * // => 5 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the `callback` returns a truthy value for **any** element of a - * `collection`. The function returns as soon as it finds passing value, and - * does not iterate over the entire `collection`. The `callback` is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Boolean} Returns `true` if any element passes the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(food, 'organic'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(food, { 'type': 'meat' }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - each(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in the `collection` through the `callback`. This method - * performs a stable sort, that is, it will preserve the original sort order of - * equal elements. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * // using "_.pluck" callback shorthand - * _.sortBy(['banana', 'strawberry', 'apple'], 'length'); - * // => ['apple', 'banana', 'strawberry'] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = createCallback(callback, thisArg); - forEach(collection, function(value, key, collection) { - result[++index] = { - 'criteria': callback(value, key, collection), - 'index': index, - 'value': value - }; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - result[length] = result[length].value; - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return noCharByIndex && isString(collection) - ? collection.split('') - : slice(collection); - } - return values(collection); - } - - /** - * Examines each element in a `collection`, returning an array of all elements - * that have the given `properties`. When checking `properties`, this method - * performs a deep comparison between values to determine if they are equivalent - * to each other. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Object} properties The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given `properties`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.where(stooges, { 'age': 40 }); - * // => [{ 'name': 'moe', 'age': 40 }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values of `array` removed. The values - * `false`, `null`, `0`, `""`, `undefined` and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new filtered array. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - var index = -1, - length = array ? array.length : 0, - flattened = concat.apply(arrayRef, arguments), - contains = cachedContains(flattened, length), - result = []; - - while (++index < length) { - var value = array[index]; - if (!contains(value)) { - result.push(value); - } - } - return result; - } - - /** - * Gets the first element of the `array`. If a number `n` is passed, the first - * `n` elements of the `array` are returned. If a `callback` function is passed, - * the first elements the `callback` returns truthy for are returned. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n] The function called - * per element or the number of elements to return. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var food = [ - * { 'name': 'banana', 'organic': true }, - * { 'name': 'beet', 'organic': false }, - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(food, 'organic'); - * // => [{ 'name': 'banana', 'organic': true }] - * - * var food = [ - * { 'name': 'apple', 'type': 'fruit' }, - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.first(food, { 'type': 'fruit' }); - * // => [{ 'name': 'apple', 'type': 'fruit' }, { 'name': 'banana', 'type': 'fruit' }] - */ - function first(array, callback, thisArg) { - if (array) { - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = createCallback(callback, thisArg); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array[0]; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `shallow` is - * truthy, `array` will only be flattened a single level. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @param {Boolean} shallow A flag to indicate only flattening a single level. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - */ - function flatten(array, shallow) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - // recursively flatten arrays (susceptible to call stack limits) - if (isArray(value)) { - push.apply(result, shallow ? value : flatten(value)); - } else { - result.push(value); - } - } - return result; - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the `array` is already - * sorted, passing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Boolean|Number} [fromIndex=0] The index to search from or `true` to - * perform a binary search on a sorted `array`. - * @returns {Number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - var index = -1, - length = array ? array.length : 0; - - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0) - 1; - } else if (fromIndex) { - index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Gets all but the last element of `array`. If a number `n` is passed, the - * last `n` elements are excluded from the result. If a `callback` function - * is passed, the last elements the `callback` returns truthy for are excluded - * from the result. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var food = [ - * { 'name': 'beet', 'organic': false }, - * { 'name': 'carrot', 'organic': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(food, 'organic'); - * // => [{ 'name': 'beet', 'organic': false }] - * - * var food = [ - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' }, - * { 'name': 'carrot', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.initial(food, { 'type': 'vegetable' }); - * // => [{ 'name': 'banana', 'type': 'fruit' }] - */ - function initial(array, callback, thisArg) { - if (!array) { - return []; - } - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Computes the intersection of all the passed-in arrays using strict equality - * for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of unique elements that are present - * in **all** of the arrays. - * @example - * - * _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); - * // => [1, 2] - */ - function intersection(array) { - var args = arguments, - argsLength = args.length, - cache = { '0': {} }, - index = -1, - length = array ? array.length : 0, - isLarge = length >= 100, - result = [], - seen = result; - - outer: - while (++index < length) { - var value = array[index]; - if (isLarge) { - var key = value + ''; - var inited = hasOwnProperty.call(cache[0], key) - ? !(seen = cache[0][key]) - : (seen = cache[0][key] = []); - } - if (inited || indexOf(seen, value) < 0) { - if (isLarge) { - seen.push(value); - } - var argsIndex = argsLength; - while (--argsIndex) { - if (!(cache[argsIndex] || (cache[argsIndex] = cachedContains(args[argsIndex], 0, 100)))(value)) { - continue outer; - } - } - result.push(value); - } - } - return result; - } - - /** - * Gets the last element of the `array`. If a number `n` is passed, the last - * `n` elements of the `array` are returned. If a `callback` function is passed, - * the last elements the `callback` returns truthy for are returned. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n] The function called - * per element or the number of elements to return. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var food = [ - * { 'name': 'beet', 'organic': false }, - * { 'name': 'carrot', 'organic': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.last(food, 'organic'); - * // => [{ 'name': 'carrot', 'organic': true }] - * - * var food = [ - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' }, - * { 'name': 'carrot', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.last(food, { 'type': 'vegetable' }); - * // => [{ 'name': 'beet', 'type': 'vegetable' }, { 'name': 'carrot', 'type': 'vegetable' }] - */ - function last(array, callback, thisArg) { - if (array) { - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array[length - 1]; - } - } - return slice(array, nativeMax(0, length - n)); - } - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Number} [fromIndex=array.length-1] The index to search from. - * @returns {Number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Pass either - * a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]`, or - * two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.object(['moe', 'larry'], [30, 40]); - * // => { 'moe': 30, 'larry': 40 } - */ - function object(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else { - result[key[0]] = key[1]; - } - } - return result; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Number} [start=0] The start of the range. - * @param {Number} end The end of the range. - * @param {Number} [step=1] The value to increment or descrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(10); - * // => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - * - * _.range(1, 11); - * // => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - * - * _.range(0, 30, 5); - * // => [0, 5, 10, 15, 20, 25] - * - * _.range(0, -10, -1); - * // => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = +step || 1; - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so V8 will avoid the slower "dictionary" mode - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / step)), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * The opposite of `_.initial`, this method gets all but the first value of `array`. - * If a number `n` is passed, the first `n` values are excluded from the result. - * If a `callback` function is passed, the first elements the `callback` returns - * truthy for are excluded from the result. The `callback` is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var food = [ - * { 'name': 'banana', 'organic': true }, - * { 'name': 'beet', 'organic': false }, - * ]; - * - * // using "_.pluck" callback shorthand - * _.rest(food, 'organic'); - * // => [{ 'name': 'beet', 'organic': false }] - * - * var food = [ - * { 'name': 'apple', 'type': 'fruit' }, - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.rest(food, { 'type': 'fruit' }); - * // => [{ 'name': 'beet', 'type': 'vegetable' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = createCallback(callback, thisArg); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which the `value` - * should be inserted into `array` in order to maintain the sort order of the - * sorted `array`. If `callback` is passed, it will be executed for `value` and - * each element in `array` to compute their sort ranking. The `callback` is - * bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to iterate over. - * @param {Mixed} value The value to evaluate. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Number} Returns the index at which the value should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - callback(array[mid]) < value - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Computes the union of the passed-in arrays using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of unique values, in order, that are - * present in one or more of the arrays. - * @example - * - * _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); - * // => [1, 2, 3, 101, 10] - */ - function union() { - return uniq(concat.apply(arrayRef, arguments)); - } - - /** - * Creates a duplicate-value-free version of the `array` using strict equality - * for comparisons, i.e. `===`. If the `array` is already sorted, passing `true` - * for `isSorted` will run a faster algorithm. If `callback` is passed, each - * element of `array` is passed through a callback` before uniqueness is computed. - * The `callback` is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {Boolean} [isSorted=false] A flag to indicate that the `array` is already sorted. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq([1, 2, 1.5, 3, 2.5], function(num) { return Math.floor(num); }); - * // => [1, 2, 3] - * - * _.uniq([1, 2, 1.5, 3, 2.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = [], - seen = result; - - // juggle arguments - if (typeof isSorted == 'function') { - thisArg = callback; - callback = isSorted; - isSorted = false; - } - // init value cache for large arrays - var isLarge = !isSorted && length >= 75; - if (isLarge) { - var cache = {}; - } - if (callback) { - seen = []; - callback = createCallback(callback, thisArg); - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isLarge) { - var key = computed + ''; - var inited = hasOwnProperty.call(cache, key) - ? !(seen = cache[key]) - : (seen = cache[key] = []); - } - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : inited || indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * Creates an array with all occurrences of the passed values removed using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. - * @returns {Array} Returns a new filtered array. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - var index = -1, - length = array ? array.length : 0, - contains = cachedContains(arguments, 1), - result = []; - - while (++index < length) { - var value = array[index]; - if (!contains(value)) { - result.push(value); - } - } - return result; - } - - /** - * Groups the elements of each array at their corresponding indexes. Useful for - * separate data sources that are coordinated through matching array indexes. - * For a matrix of nested arrays, `_.zip.apply(...)` can transpose the matrix - * in a similar fashion. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['moe', 'larry'], [30, 40], [true, false]); - * // => [['moe', 30, true], ['larry', 40, false]] - */ - function zip(array) { - var index = -1, - length = array ? max(pluck(arguments, 'length')) : 0, - result = Array(length); - - while (++index < length) { - result[index] = pluck(arguments, index); - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that is restricted to executing `func` only after it is - * called `n` times. The `func` is executed with the `this` binding of the - * created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Number} n The number of times the function must be called before - * it is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var renderNotes = _.after(notes.length, render); - * _.forEach(notes, function(note) { - * note.asyncSave({ 'success': renderNotes }); - * }); - * // `renderNotes` is run once, after all notes have saved - */ - function after(n, func) { - if (n < 1) { - return func(); - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * passed to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {Mixed} [thisArg] The `this` binding of `func`. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'moe' }, 'hi'); - * func(); - * // => 'hi moe' - */ - function bind(func, thisArg) { - // use `Function#bind` if it exists and is fast - // (in V8 `Function#bind` is slower except when partially applied) - return isBindFast || (nativeBind && arguments.length > 2) - ? nativeBind.call.apply(nativeBind, arguments) - : createBound(func, thisArg, slice(arguments, 2)); - } - - /** - * Binds methods on `object` to `object`, overwriting the existing method. - * Method names may be specified as individual arguments or as arrays of method - * names. If no method names are provided, all the function properties of `object` - * will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { alert('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => alerts 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = concat.apply(arrayRef, arguments), - index = funcs.length > 1 ? 0 : (funcs = functions(object), -1), - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = bind(object[key], object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those passed to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {String} key The key of the method. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'moe', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi moe' - * - * object.greet = function(greeting) { - * return greeting + ', ' + this.name + '!'; - * }; - * - * func(); - * // => 'hi, moe!' - */ - function bindKey(object, key) { - return createBound(object, key, slice(arguments, 2)); - } - - /** - * Creates a function that is the composition of the passed functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} [func1, func2, ...] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var greet = function(name) { return 'hi ' + name; }; - * var exclaim = function(statement) { return statement + '!'; }; - * var welcome = _.compose(exclaim, greet); - * welcome('moe'); - * // => 'hi moe!' - */ - function compose() { - var funcs = arguments; - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. Pass - * `true` for `immediate` to cause debounce to invoke `func` on the leading, - * instead of the trailing, edge of the `wait` timeout. Subsequent calls to - * the debounced function will return the result of the last `func` call. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {Number} wait The number of milliseconds to delay. - * @param {Boolean} immediate A flag to indicate execution is on the leading - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * var lazyLayout = _.debounce(calculateLayout, 300); - * jQuery(window).on('resize', lazyLayout); - */ - function debounce(func, wait, immediate) { - var args, - result, - thisArg, - timeoutId; - - function delayed() { - timeoutId = null; - if (!immediate) { - result = func.apply(thisArg, args); - } - } - return function() { - var isImmediate = immediate && !timeoutId; - args = arguments; - thisArg = this; - - clearTimeout(timeoutId); - timeoutId = setTimeout(delayed, wait); - - if (isImmediate) { - result = func.apply(thisArg, args); - } - return result; - }; - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be passed to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {Number} wait The number of milliseconds to delay execution. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the function with. - * @returns {Number} Returns the `setTimeout` timeout id. - * @example - * - * var log = _.bind(console.log, console); - * _.delay(log, 1000, 'logged later'); - * // => 'logged later' (Appears after one second.) - */ - function delay(func, wait) { - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be passed to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the function with. - * @returns {Number} Returns the `setTimeout` timeout id. - * @example - * - * _.defer(function() { alert('deferred'); }); - * // returns from the function before `alert` is called - */ - function defer(func) { - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - // use `setImmediate` if it's available in Node.js - if (isV8 && freeModule && typeof setImmediate == 'function') { - defer = bind(setImmediate, window); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * passed, it will be used to determine the cache key for storing the result - * based on the arguments passed to the memoized function. By default, the first - * argument passed to the memoized function is used as the cache key. The `func` - * is executed with the `this` binding of the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - */ - function memoize(func, resolver) { - var cache = {}; - return function() { - var key = (resolver ? resolver.apply(this, arguments) : arguments[0]) + ''; - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - }; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those passed to the new function. This - * method is similar to `_.bind`, except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('moe'); - * // => 'hi moe' - */ - function partial(func) { - return createBound(func, slice(arguments, 1)); - } - - /** - * This method is similar to `_.partial`, except that `partial` arguments are - * appended to those passed to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createBound(func, slice(arguments, 1), null, indicatorObject); - } - - /** - * Creates a function that, when executed, will only call the `func` - * function at most once per every `wait` milliseconds. If the throttled - * function is invoked more than once during the `wait` timeout, `func` will - * also be called on the trailing edge of the timeout. Subsequent calls to the - * throttled function will return the result of the last `func` call. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {Number} wait The number of milliseconds to throttle executions to. - * @returns {Function} Returns the new throttled function. - * @example - * - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - */ - function throttle(func, wait) { - var args, - result, - thisArg, - timeoutId, - lastCalled = 0; - - function trailingCall() { - lastCalled = new Date; - timeoutId = null; - result = func.apply(thisArg, args); - } - return function() { - var now = new Date, - remaining = wait - (now - lastCalled); - - args = arguments; - thisArg = this; - - if (remaining <= 0) { - clearTimeout(timeoutId); - timeoutId = null; - lastCalled = now; - result = func.apply(thisArg, args); - } - else if (!timeoutId) { - timeoutId = setTimeout(trailingCall, remaining); - } - return result; - }; - } - - /** - * Creates a function that passes `value` to the `wrapper` function as its - * first argument. Additional arguments passed to the function are appended - * to those passed to the `wrapper` function. The `wrapper` is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Mixed} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var hello = function(name) { return 'hello ' + name; }; - * hello = _.wrap(hello, function(func) { - * return 'before, ' + func('moe') + ', after'; - * }); - * hello(); - * // => 'before, hello moe, after' - */ - function wrap(value, wrapper) { - return function() { - var args = [value]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {String} string The string to escape. - * @returns {String} Returns the escaped string. - * @example - * - * _.escape('Moe, Larry & Curly'); - * // => 'Moe, Larry & Curly' - */ - function escape(string) { - return string == null ? '' : (string + '').replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This function returns the first argument passed to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Mixed} value Any value. - * @returns {Mixed} Returns `value`. - * @example - * - * var moe = { 'name': 'moe' }; - * moe === _.identity(moe); - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds functions properties of `object` to the `lodash` function and chainable - * wrapper. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object of function properties to add to `lodash`. - * @example - * - * _.mixin({ - * 'capitalize': function(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * }); - * - * _.capitalize('moe'); - * // => 'Moe' - * - * _('moe').capitalize(); - * // => 'Moe' - */ - function mixin(object) { - forEach(functions(object), function(methodName) { - var func = lodash[methodName] = object[methodName]; - - lodash.prototype[methodName] = function() { - var args = [this.__wrapped__]; - push.apply(args, arguments); - return new lodash(func.apply(lodash, args)); - }; - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - window._ = oldDash; - return this; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is passed, a number between `0` and the given number will be returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Number} [min=0] The minimum possible value. - * @param {Number} [max=1] The maximum possible value. - * @returns {Number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => a number between 0 and 5 - * - * _.random(5); - * // => also a number between 0 and 5 - */ - function random(min, max) { - if (min == null && max == null) { - max = 1; - } - min = +min || 0; - if (max == null) { - max = min; - min = 0; - } - return min + floor(nativeRandom() * ((+max || 0) - min + 1)); - } - - /** - * Resolves the value of `property` on `object`. If `property` is a function, - * it will be invoked and its result returned, else the property value is - * returned. If `object` is falsey, then `null` is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {String} property The property to get the value of. - * @returns {Mixed} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, property) { - var value = object ? object[property] : undefined; - return isFunction(value) ? object[property]() : value; - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * Note: Lo-Dash may be used in Chrome extensions by either creating a `lodash csp` - * build and using precompiled templates, or loading Lo-Dash in a sandbox. - * - * For more information on precompiling templates see: - * http://lodash.com/#custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {String} text The template text. - * @param {Obect} data The data object used to populate the text. - * @param {Object} options The options object. - * escape - The "escape" delimiter regexp. - * evaluate - The "evaluate" delimiter regexp. - * interpolate - The "interpolate" delimiter regexp. - * sourceURL - The sourceURL of the template's compiled source. - * variable - The data object variable name. - * - * @returns {Function|String} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'moe' }); - * // => 'hello moe' - * - * var list = '<% _.forEach(people, function(name) { %>
  • <%= name %>
  • <% }); %>'; - * _.template(list, { 'people': ['moe', 'larry'] }); - * // => '
  • moe
  • larry
  • ' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' -``` - -Using [`npm`](http://npmjs.org/): - -```bash -npm i --save lodash - -{sudo} npm i -g lodash -npm ln lodash -``` - -In [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/): - -```js -var _ = require('lodash'); -// or as Underscore -var _ = require('lodash/dist/lodash.underscore'); -``` - -**Notes:** - * Don’t assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL - * If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory *before* requiring it - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('lodash.js'); -``` - -In an AMD loader: - -```js -require({ - 'packages': [ - { 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' } - ] -}, -['lodash'], function(_) { - console.log(_.VERSION); -}); -``` - -## Author - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## Contributors - -| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | -|---|---|---| -| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) | - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/lodash/lodash/trend.png)](https://bitdeli.com/free "Bitdeli Badge") diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.compat.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.compat.js deleted file mode 100644 index 79e8ae8750..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/lodash/dist/lodash.compat.js +++ /dev/null @@ -1,7157 +0,0 @@ -/** - * @license - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash -o ./dist/lodash.compat.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre ES5 environments */ - var undefined; - - /** Used to pool arrays and objects used internally */ - var arrayPool = [], - objectPool = []; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used internally to indicate various things */ - var indicatorObject = {}; - - /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */ - var keyPrefix = +new Date + ''; - - /** Used as the size when optimizations are enabled for large arrays */ - var largeArraySize = 75; - - /** Used as the max size of the `arrayPool` and `objectPool` */ - var maxPoolSize = 40; - - /** Used to detect and test whitespace */ - var whitespace = ( - // whitespace - ' \t\x0B\f\xA0\ufeff' + - - // line terminators - '\n\r\u2028\u2029' + - - // unicode category "Zs" space separators - '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' - ); - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detected named functions */ - var reFuncName = /^\s*function[ \n\r\t]+\w/; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match leading whitespace and zeros to be removed */ - var reLeadingSpacesAndZeros = RegExp('^[' + whitespace + ']*0+(?=.$)'); - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to detect functions containing a `this` reference */ - var reThis = /\bthis\b/; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to assign default `context` object properties */ - var contextProps = [ - 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', - 'RegExp', 'String', '_', 'attachEvent', 'clearTimeout', 'isFinite', 'isNaN', - 'parseInt', 'setTimeout' - ]; - - /** Used to fix the JScript [[DontEnum]] bug */ - var shadowedProps = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - errorClass = '[object Error]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used as an internal `_.debounce` options object */ - var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false - }; - - /** Used as the property descriptor for `__bindData__` */ - var descriptor = { - 'configurable': false, - 'enumerable': false, - 'value': null, - 'writable': false - }; - - /** Used as the data object for `iteratorTemplate` */ - var iteratorData = { - 'args': '', - 'array': null, - 'bottom': '', - 'firstArg': '', - 'init': '', - 'keys': null, - 'loop': '', - 'shadowedProps': null, - 'support': null, - 'top': '', - 'useHas': false - }; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Used as a reference to the global object */ - var root = (objectTypes[typeof window] && window) || this; - - /** Detect free variable `exports` */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module` */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports` */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */ - var freeGlobal = objectTypes[typeof global] && global; - if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { - root = freeGlobal; - } - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.indexOf` without support for binary searches - * or `fromIndex` constraints. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * An implementation of `_.contains` for cache objects that mimics the return - * signature of `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache object to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var type = typeof value; - cache = cache.cache; - - if (type == 'boolean' || value == null) { - return cache[value] ? 0 : -1; - } - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value; - cache = (cache = cache[type]) && cache[key]; - - return type == 'object' - ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1) - : (cache ? 0 : -1); - } - - /** - * Adds a given value to the corresponding cache object. - * - * @private - * @param {*} value The value to add to the cache. - */ - function cachePush(value) { - var cache = this.cache, - type = typeof value; - - if (type == 'boolean' || value == null) { - cache[value] = true; - } else { - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value, - typeCache = cache[type] || (cache[type] = {}); - - if (type == 'object') { - (typeCache[key] || (typeCache[key] = [])).push(value); - } else { - typeCache[key] = true; - } - } - } - - /** - * Used by `_.max` and `_.min` as the default callback when a given - * collection is a string value. - * - * @private - * @param {string} value The character to inspect. - * @returns {number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` elements, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ac = a.criteria, - bc = b.criteria, - index = -1, - length = ac.length; - - while (++index < length) { - var value = ac[index], - other = bc[index]; - - if (value !== other) { - if (value > other || typeof value == 'undefined') { - return 1; - } - if (value < other || typeof other == 'undefined') { - return -1; - } - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to return the same value for - // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247 - // - // This also ensures a stable sort in V8 and other engines. - // See http://code.google.com/p/v8/issues/detail?id=90 - return a.index - b.index; - } - - /** - * Creates a cache object to optimize linear searches of large arrays. - * - * @private - * @param {Array} [array=[]] The array to search. - * @returns {null|Object} Returns the cache object or `null` if caching should not be used. - */ - function createCache(array) { - var index = -1, - length = array.length, - first = array[0], - mid = array[(length / 2) | 0], - last = array[length - 1]; - - if (first && typeof first == 'object' && - mid && typeof mid == 'object' && last && typeof last == 'object') { - return false; - } - var cache = getObject(); - cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false; - - var result = getObject(); - result.array = array; - result.cache = cache; - result.push = cachePush; - - while (++index < length) { - result.push(array[index]); - } - return result; - } - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ - function getArray() { - return arrayPool.pop() || []; - } - - /** - * Gets an object from the object pool or creates a new one if the pool is empty. - * - * @private - * @returns {Object} The object from the pool. - */ - function getObject() { - return objectPool.pop() || { - 'array': null, - 'cache': null, - 'criteria': null, - 'false': false, - 'index': 0, - 'null': false, - 'number': null, - 'object': null, - 'push': null, - 'string': null, - 'true': false, - 'undefined': false, - 'value': null - }; - } - - /** - * Checks if `value` is a DOM node in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM node, else `false`. - */ - function isNode(value) { - // IE < 9 presents DOM nodes as `Object` objects except they have `toString` - // methods that are `typeof` "string" and still can coerce nodes to strings - return typeof value.toString != 'function' && typeof (value + '') == 'string'; - } - - /** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ - function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } - } - - /** - * Releases the given object back to the object pool. - * - * @private - * @param {Object} [object] The object to release. - */ - function releaseObject(object) { - var cache = object.cache; - if (cache) { - releaseObject(cache); - } - object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null; - if (objectPool.length < maxPoolSize) { - objectPool.push(object); - } - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new `lodash` function using the given context object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} [context=root] The context object. - * @returns {Function} Returns the `lodash` function. - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See http://es5.github.io/#x11.1.5. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references */ - var Array = context.Array, - Boolean = context.Boolean, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ - var arrayRef = []; - - /** Used for native method references */ - var errorProto = Error.prototype, - objectProto = Object.prototype, - stringProto = String.prototype; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = context._; - - /** Used to resolve the internal [[Class]] of values */ - var toString = objectProto.toString; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' - ); - - /** Native method shortcuts */ - var ceil = Math.ceil, - clearTimeout = context.clearTimeout, - floor = Math.floor, - fnToString = Function.prototype.toString, - getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectProto.hasOwnProperty, - push = arrayRef.push, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - setTimeout = context.setTimeout, - splice = arrayRef.splice, - unshift = arrayRef.unshift; - - /** Used to set meta data on functions */ - var defineProperty = (function() { - // IE 8 only accepts DOM elements - try { - var o = {}, - func = isNative(func = Object.defineProperty) && func, - result = func(o, o, o) && func; - } catch(e) { } - return result; - }()); - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = context.isFinite, - nativeIsNaN = context.isNaN, - nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[funcClass] = Function; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /** Used to avoid iterating non-enumerable properties in IE < 9 */ - var nonEnumProps = {}; - nonEnumProps[arrayClass] = nonEnumProps[dateClass] = nonEnumProps[numberClass] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true }; - nonEnumProps[boolClass] = nonEnumProps[stringClass] = { 'constructor': true, 'toString': true, 'valueOf': true }; - nonEnumProps[errorClass] = nonEnumProps[funcClass] = nonEnumProps[regexpClass] = { 'constructor': true, 'toString': true }; - nonEnumProps[objectClass] = { 'constructor': true }; - - (function() { - var length = shadowedProps.length; - while (length--) { - var key = shadowedProps[length]; - for (var className in nonEnumProps) { - if (hasOwnProperty.call(nonEnumProps, className) && !hasOwnProperty.call(nonEnumProps[className], key)) { - nonEnumProps[className][key] = false; - } - } - } - }()); - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps the given value to enable intuitive - * method chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * Chaining is supported in custom builds as long as the `value` method is - * implicitly or explicitly included in the build. - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, - * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`, - * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`, - * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, - * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, - * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`, - * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`, - * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`, - * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`, - * and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`, - * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, - * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, - * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`, - * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`, - * `template`, `unescape`, `uniqueId`, and `value` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * provided, otherwise they return unwrapped values. - * - * Explicit chaining can be enabled by using the `_.chain` method. - * - * @name _ - * @constructor - * @category Chaining - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(num) { - * return num * num; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor - return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__')) - ? value - : new lodashWrapper(value); - } - - /** - * A fast path for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap in a `lodash` instance. - * @param {boolean} chainAll A flag to enable chaining for all methods - * @returns {Object} Returns a `lodash` instance. - */ - function lodashWrapper(value, chainAll) { - this.__chain__ = !!chainAll; - this.__wrapped__ = value; - } - // ensure `new lodashWrapper` is an instance of `lodash` - lodashWrapper.prototype = lodash.prototype; - - /** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - (function() { - var ctor = function() { this.x = 1; }, - object = { '0': 1, 'length': 1 }, - props = []; - - ctor.prototype = { 'valueOf': 1, 'y': 1 }; - for (var key in new ctor) { props.push(key); } - for (key in arguments) { } - - /** - * Detect if an `arguments` object's [[Class]] is resolvable (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsClass = toString.call(arguments) == argsClass; - - /** - * Detect if `arguments` objects are `Object` objects (all but Narwhal and Opera < 10.5). - * - * @memberOf _.support - * @type boolean - */ - support.argsObject = arguments.constructor == Object && !(arguments instanceof Array); - - /** - * Detect if `name` or `message` properties of `Error.prototype` are - * enumerable by default. (IE < 9, Safari < 5.1) - * - * @memberOf _.support - * @type boolean - */ - support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name'); - - /** - * Detect if `prototype` properties are enumerable by default. - * - * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 - * (if the prototype or a property on the prototype has been set) - * incorrectly sets a function's `prototype` property [[Enumerable]] - * value to `true`. - * - * @memberOf _.support - * @type boolean - */ - support.enumPrototypes = propertyIsEnumerable.call(ctor, 'prototype'); - - /** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). - * - * @memberOf _.support - * @type boolean - */ - support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); - - /** - * Detect if `Function#name` is supported (all but IE). - * - * @memberOf _.support - * @type boolean - */ - support.funcNames = typeof Function.name == 'string'; - - /** - * Detect if `arguments` object indexes are non-enumerable - * (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumArgs = key != 0; - - /** - * Detect if properties shadowing those on `Object.prototype` are non-enumerable. - * - * In IE < 9 an objects own properties, shadowing non-enumerable ones, are - * made non-enumerable as well (a.k.a the JScript [[DontEnum]] bug). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumShadows = !/valueOf/.test(props); - - /** - * Detect if own properties are iterated after inherited properties (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.ownLast = props[0] != 'x'; - - /** - * Detect if `Array#shift` and `Array#splice` augment array-like objects correctly. - * - * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()` - * and `splice()` functions that fail to remove the last element, `value[0]`, - * of array-like objects even though the `length` property is set to `0`. - * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()` - * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9. - * - * @memberOf _.support - * @type boolean - */ - support.spliceObjects = (arrayRef.splice.call(object, 0, 1), !object[0]); - - /** - * Detect lack of support for accessing string characters by index. - * - * IE < 8 can't access characters by index and IE 8 can only access - * characters by index on string literals. - * - * @memberOf _.support - * @type boolean - */ - support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if a DOM node's [[Class]] is resolvable (all but IE < 9) - * and that the JS engine errors when attempting to coerce an object to - * a string without a `toString` function. - * - * @memberOf _.support - * @type boolean - */ - try { - support.nodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + '')); - } catch(e) { - support.nodeClass = true; - } - }(1)); - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The template used to create iterator functions. - * - * @private - * @param {Object} data The data object used to populate the text. - * @returns {string} Returns the interpolated text. - */ - var iteratorTemplate = function(obj) { - - var __p = 'var index, iterable = ' + - (obj.firstArg) + - ', result = ' + - (obj.init) + - ';\nif (!iterable) return result;\n' + - (obj.top) + - ';'; - if (obj.array) { - __p += '\nvar length = iterable.length; index = -1;\nif (' + - (obj.array) + - ') { '; - if (support.unindexedChars) { - __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } '; - } - __p += '\n while (++index < length) {\n ' + - (obj.loop) + - ';\n }\n}\nelse { '; - } else if (support.nonEnumArgs) { - __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' + - (obj.loop) + - ';\n }\n } else { '; - } - - if (support.enumPrototypes) { - __p += '\n var skipProto = typeof iterable == \'function\';\n '; - } - - if (support.enumErrorProps) { - __p += '\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n '; - } - - var conditions = []; if (support.enumPrototypes) { conditions.push('!(skipProto && index == "prototype")'); } if (support.enumErrorProps) { conditions.push('!(skipErrorProps && (index == "message" || index == "name"))'); } - - if (obj.useHas && obj.keys) { - __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n'; - if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - } else { - __p += '\n for (index in iterable) {\n'; - if (obj.useHas) { conditions.push("hasOwnProperty.call(iterable, index)"); } if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - if (support.nonEnumShadows) { - __p += '\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n '; - for (k = 0; k < 7; k++) { - __p += '\n index = \'' + - (obj.shadowedProps[k]) + - '\';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))'; - if (!obj.useHas) { - __p += ' || (!nonEnum[index] && iterable[index] !== objectProto[index])'; - } - __p += ') {\n ' + - (obj.loop) + - ';\n } '; - } - __p += '\n } '; - } - - } - - if (obj.array || support.nonEnumArgs) { - __p += '\n}'; - } - __p += - (obj.bottom) + - ';\nreturn result'; - - return __p - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ - function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, callback, stackA, stackB) { - if (callback) { - var result = callback(value); - if (typeof result != 'undefined') { - return result; - } - } - // inspect [[Class]] - var isObj = isObject(value); - if (isObj) { - var className = toString.call(value); - if (!cloneableClasses[className] || (!support.nodeClass && isNode(value))) { - return value; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return new ctor(+value); - - case numberClass: - case stringClass: - return new ctor(value); - - case regexpClass: - result = ctor(value.source, reFlags.exec(value)); - result.lastIndex = value.lastIndex; - return result; - } - } else { - return value; - } - var isArr = isArray(value); - if (isDeep) { - // check for circular references and return corresponding clone - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - result = isArr ? ctor(value.length) : {}; - } - else { - result = isArr ? slice(value) : assign({}, value); - } - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - // exit for shallow clone - if (!isDeep) { - return result; - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? baseEach : forOwn)(value, function(objValue, key) { - result[key] = baseClone(objValue, isDeep, callback, stackA, stackB); - }); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; - } - // fallback for browsers without `Object.create` - if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - } - - /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); - } - - /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. - */ - function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.difference` that accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to process. - * @param {Array} [values] The array of values to exclude. - * @returns {Array} Returns a new array of filtered values. - */ - function baseDifference(array, values) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - isLarge = length >= largeArraySize && indexOf === baseIndexOf, - result = []; - - if (isLarge) { - var cache = createCache(values); - if (cache) { - indexOf = cacheIndexOf; - values = cache; - } else { - isLarge = false; - } - } - while (++index < length) { - var value = array[index]; - if (indexOf(values, value) < 0) { - result.push(value); - } - } - if (isLarge) { - releaseObject(values); - } - return result; - } - - /** - * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects. - * @param {number} [fromIndex=0] The index to start from. - * @returns {Array} Returns a new flattened array. - */ - function baseFlatten(array, isShallow, isStrict, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - if (value && typeof value == 'object' && typeof value.length == 'number' - && (isArray(value) || isArguments(value))) { - // recursively flatten arrays (susceptible to call stack limits) - if (!isShallow) { - value = baseFlatten(value, isShallow, isStrict); - } - var valIndex = -1, - valLength = value.length, - resIndex = result.length; - - result.length += valLength; - while (++valIndex < valLength) { - result[resIndex++] = value[valIndex]; - } - } else if (!isStrict) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); - - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass || (!support.nodeClass && (isNode(a) || isNode(b)))) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = !support.argsObject && isArguments(a) ? Object : a.constructor, - ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; - - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); - - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [callback] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - */ - function baseMerge(object, source, callback, stackA, stackB) { - (isArray(source) ? forEach : forOwn)(source, function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - var isShallow; - if (callback) { - result = callback(value, source); - if ((isShallow = typeof result != 'undefined')) { - value = result; - } - } - if (!isShallow) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!isShallow) { - baseMerge(value, source, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - - /** - * The base implementation of `_.random` without argument juggling or support - * for returning floating-point numbers. - * - * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns a random number. - */ - function baseRandom(min, max) { - return min + floor(nativeRandom() * (max - min + 1)); - } - - /** - * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. - * - * @private - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function} [callback] The function called per iteration. - * @returns {Array} Returns a duplicate-value-free array. - */ - function baseUniq(array, isSorted, callback) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - result = []; - - var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf, - seen = (callback || isLarge) ? getArray() : result; - - if (isLarge) { - var cache = createCache(seen); - indexOf = cacheIndexOf; - seen = cache; - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - if (isLarge) { - releaseArray(seen.array); - releaseObject(seen); - } else if (callback) { - releaseArray(seen); - } - return result; - } - - /** - * Creates a function that aggregates a collection, creating an object composed - * of keys generated from the results of running each element of the collection - * through a callback. The given `setter` function sets the keys and values - * of the composed object. - * - * @private - * @param {Function} setter The setter function. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter) { - return function(collection, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - setter(result, value, callback(value, index, collection), collection); - } - } else { - baseEach(collection, function(value, key, collection) { - setter(result, value, callback(value, key, collection), collection); - }); - } - return result; - }; - } - - /** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ - function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); - } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); - } - - /** - * Creates compiled iteration functions. - * - * @private - * @param {...Object} [options] The compile options object(s). - * @param {string} [options.array] Code to determine if the iterable is an array or array-like. - * @param {boolean} [options.useHas] Specify using `hasOwnProperty` checks in the object loop. - * @param {Function} [options.keys] A reference to `_.keys` for use in own property iteration. - * @param {string} [options.args] A comma separated string of iteration function arguments. - * @param {string} [options.top] Code to execute before the iteration branches. - * @param {string} [options.loop] Code to execute in the object loop. - * @param {string} [options.bottom] Code to execute after the iteration branches. - * @returns {Function} Returns the compiled function. - */ - function createIterator() { - // data properties - iteratorData.shadowedProps = shadowedProps; - - // iterator options - iteratorData.array = iteratorData.bottom = iteratorData.loop = iteratorData.top = ''; - iteratorData.init = 'iterable'; - iteratorData.useHas = true; - - // merge options into a template data object - for (var object, index = 0; object = arguments[index]; index++) { - for (var key in object) { - iteratorData[key] = object[key]; - } - } - var args = iteratorData.args; - iteratorData.firstArg = /^[^,]+/.exec(args)[0]; - - // create the function factory - var factory = Function( - 'baseCreateCallback, errorClass, errorProto, hasOwnProperty, ' + - 'indicatorObject, isArguments, isArray, isString, keys, objectProto, ' + - 'objectTypes, nonEnumProps, stringClass, stringProto, toString', - 'return function(' + args + ') {\n' + iteratorTemplate(iteratorData) + '\n}' - ); - - // return the compiled function - return factory( - baseCreateCallback, errorClass, errorProto, hasOwnProperty, - indicatorObject, isArguments, isArray, isString, iteratorData.keys, objectProto, - objectTypes, nonEnumProps, stringClass, stringProto, toString - ); - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized, this method returns the custom method, otherwise it returns - * the `baseIndexOf` function. - * - * @private - * @returns {Function} Returns the "indexOf" function. - */ - function getIndexOf() { - var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result; - return result; - } - - /** - * Checks if `value` is a native function. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ - function isNative(value) { - return typeof value == 'function' && reNative.test(value); - } - - /** - * Sets `this` binding data on a given function. - * - * @private - * @param {Function} func The function to set data on. - * @param {Array} value The data array to set. - */ - var setBindData = !defineProperty ? noop : function(func, value) { - descriptor.value = value; - defineProperty(func, '__bindData__', descriptor); - }; - - /** - * A fallback implementation of `isPlainObject` which checks if a given value - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - var ctor, - result; - - // avoid non Object objects, `arguments` objects, and DOM elements - if (!(value && toString.call(value) == objectClass) || - (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor)) || - (!support.argsClass && isArguments(value)) || - (!support.nodeClass && isNode(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - if (support.ownLast) { - forIn(value, function(value, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return typeof result == 'undefined' || hasOwnProperty.call(value, result); - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {string} match The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == argsClass || false; - } - // fallback for browsers that can't detect `arguments` objects by [[Class]] - if (!support.argsClass) { - isArguments = function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') || false; - }; - } - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == arrayClass || false; - }; - - /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. - * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - */ - var shimKeys = createIterator({ - 'args': 'object', - 'init': '[]', - 'top': 'if (!(objectTypes[typeof object])) return result', - 'loop': 'result.push(index)' - }); - - /** - * Creates an array composed of the own enumerable property names of an object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - if ((support.enumPrototypes && typeof object == 'function') || - (support.nonEnumArgs && object.length && isArguments(object))) { - return shimKeys(object); - } - return nativeKeys(object); - }; - - /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */ - var eachIteratorOptions = { - 'args': 'collection, callback, thisArg', - 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)", - 'array': "typeof length == 'number'", - 'keys': keys, - 'loop': 'if (callback(iterable[index], index, collection) === false) return result' - }; - - /** Reusable iterator options for `assign` and `defaults` */ - var defaultsIteratorOptions = { - 'args': 'object, source, guard', - 'top': - 'var args = arguments,\n' + - ' argsIndex = 0,\n' + - " argsLength = typeof guard == 'number' ? 2 : args.length;\n" + - 'while (++argsIndex < argsLength) {\n' + - ' iterable = args[argsIndex];\n' + - ' if (iterable && objectTypes[typeof iterable]) {', - 'keys': keys, - 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]", - 'bottom': ' }\n}' - }; - - /** Reusable iterator options for `forIn` and `forOwn` */ - var forOwnIteratorOptions = { - 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top, - 'array': false - }; - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /** Used to match HTML entities and HTML characters */ - var reEscapedHtml = RegExp('(' + keys(htmlUnescapes).join('|') + ')', 'g'), - reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - - /** - * A function compiled to iterate `arguments` objects, arrays, objects, and - * strings consistenly across environments, executing the callback for each - * element in the collection. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @private - * @type Function - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - */ - var baseEach = createIterator(eachIteratorOptions); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var assign = createIterator(defaultsIteratorOptions, { - 'top': - defaultsIteratorOptions.top.replace(';', - ';\n' + - "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" + - ' var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n' + - "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" + - ' callback = args[--argsLength];\n' + - '}' - ), - 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]' - }); - - /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects will also - * be cloned, otherwise they will be assigned by reference. If a callback - * is provided it will be executed to produce the cloned values. If the - * callback returns `undefined` cloning will be handled by the method instead. - * The callback is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var shallow = _.clone(characters); - * shallow[0] === characters[0]; - * // => true - * - * var deep = _.clone(characters, true); - * deep[0] === characters[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, isDeep, callback, thisArg) { - // allows working with "Collections" methods without using their `index` - // and `collection` arguments for `isDeep` and `callback` - if (typeof isDeep != 'boolean' && isDeep != null) { - thisArg = callback; - callback = isDeep; - isDeep = false; - } - return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates a deep clone of `value`. If a callback is provided it will be - * executed to produce the cloned values. If the callback returns `undefined` - * cloning will be handled by the method instead. The callback is bound to - * `thisArg` and invoked with one argument; (value). - * - * Note: This method is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var deep = _.cloneDeep(characters); - * deep[0] === characters[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : undefined; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? assign(result, properties) : result; - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param- {Object} [guard] Allows working with `_.reduce` without using its - * `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var object = { 'name': 'barney' }; - * _.defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var defaults = createIterator(defaultsIteratorOptions); - - /** - * This method is like `_.findIndex` except that it returns the key of the - * first element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': false }, - * 'fred': { 'age': 40, 'blocked': true }, - * 'pebbles': { 'age': 1, 'blocked': false } - * }; - * - * _.findKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (property order is not guaranteed across environments) - * - * // using "_.where" callback shorthand - * _.findKey(characters, { 'age': 1 }); - * // => 'pebbles' - * - * // using "_.pluck" callback shorthand - * _.findKey(characters, 'blocked'); - * // => 'fred' - */ - function findKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwn(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * This method is like `_.findKey` except that it iterates over elements - * of a `collection` in the opposite order. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': true }, - * 'fred': { 'age': 40, 'blocked': false }, - * 'pebbles': { 'age': 1, 'blocked': true } - * }; - * - * _.findLastKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles`, assuming `_.findKey` returns `barney` - * - * // using "_.where" callback shorthand - * _.findLastKey(characters, { 'age': 40 }); - * // => 'fred' - * - * // using "_.pluck" callback shorthand - * _.findLastKey(characters, 'blocked'); - * // => 'pebbles' - */ - function findLastKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwnRight(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) - */ - var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, { - 'useHas': false - }); - - /** - * This method is like `_.forIn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forInRight(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'move', 'y', and 'x' assuming `_.forIn ` logs 'x', 'y', and 'move' - */ - function forInRight(object, callback, thisArg) { - var pairs = []; - - forIn(object, function(value, key) { - pairs.push(key, value); - }); - - var length = pairs.length; - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - if (callback(pairs[length--], pairs[length], object) === false) { - break; - } - } - return object; - } - - /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ - var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions); - - /** - * This method is like `_.forOwn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length' - */ - function forOwnRight(object, callback, thisArg) { - var props = keys(object), - length = props.length; - - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - var key = props[length]; - if (callback(object[key], key, object) === false) { - break; - } - } - return object; - } - - /** - * Creates a sorted array of property names of all enumerable properties, - * own and inherited, of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified property name exists as a direct property of `object`, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to check. - * @returns {boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, key) { - return object ? hasOwnProperty.call(object, key) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'fred', 'second': 'barney' }); - * // => { 'fred': 'first', 'barney': 'second' } - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - value && typeof value == 'object' && toString.call(value) == boolClass || false; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value && typeof value == 'object' && toString.call(value) == dateClass || false; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value && value.nodeType === 1 || false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || - (support.argsClass ? className == argsClass : isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If a callback is provided it will be executed - * to compare values. If the callback returns `undefined` comparisons will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'name': 'fred' }; - * var copy = { 'name': 'fred' }; - * - * object == copy; - * // => false - * - * _.isEqual(object, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg) { - return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2)); - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite` which will return true for - * booleans and empty strings. See http://es5.github.io/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - // fallback for older versions of Chrome and Safari - if (isFunction(/x/)) { - isFunction = function(value) { - return typeof value == 'function' && toString.call(value) == funcClass; - }; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN` which will return `true` for - * `undefined` and other non-numeric values. See http://es5.github.io/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * Note: `NaN` is considered a number. See http://es5.github.io/#x8.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || - value && typeof value == 'object' && toString.call(value) == numberClass || false; - } - - /** - * Checks if `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * _.isPlainObject(new Shape); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && toString.call(value) == objectClass) || (!support.argsClass && isArguments(value))) { - return false; - } - var valueOf = value.valueOf, - objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/fred/); - * // => true - */ - function isRegExp(value) { - return value && objectTypes[typeof value] && toString.call(value) == regexpClass || false; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a string, else `false`. - * @example - * - * _.isString('fred'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || - value && typeof value == 'object' && toString.call(value) == stringClass || false; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new object with values of the results of each `callback` execution. - * @example - * - * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - * - * var characters = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // using "_.pluck" callback shorthand - * _.mapValues(characters, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } - */ - function mapValues(object, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - forOwn(object, function(value, key, object) { - result[key] = callback(value, key, object); - }); - return result; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * will overwrite property assignments of previous sources. If a callback is - * provided it will be executed to produce the merged values of the destination - * and source properties. If the callback returns `undefined` merging will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'characters': [ - * { 'name': 'barney' }, - * { 'name': 'fred' } - * ] - * }; - * - * var ages = { - * 'characters': [ - * { 'age': 36 }, - * { 'age': 40 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object) { - var args = arguments, - length = 2; - - if (!isObject(object)) { - return object; - } - // allows working with `_.reduce` and `_.reduceRight` without using - // their `index` and `collection` arguments - if (typeof args[2] != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - var callback = baseCreateCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - var sources = slice(arguments, 1, length), - index = -1, - stackA = getArray(), - stackB = getArray(); - - while (++index < length) { - baseMerge(object, sources[index], callback, stackA, stackB); - } - releaseArray(stackA); - releaseArray(stackB); - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` omitting the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The properties to omit or the - * function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'fred', 'age': 40 }, 'age'); - * // => { 'name': 'fred' } - * - * _.omit({ 'name': 'fred', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'fred' } - */ - function omit(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var props = []; - forIn(object, function(value, key) { - props.push(key); - }); - props = baseDifference(props, baseFlatten(arguments, true, false, 1)); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - result[key] = object[key]; - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (!callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates a two dimensional array of an object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` picking the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The function called per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name'); - * // => { 'name': 'fred' } - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'fred' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = -1, - props = baseFlatten(arguments, true, false, 1), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * An alternative to `_.reduce` this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable properties through a callback, with each callback execution - * potentially mutating the `accumulator` object. The callback is bound to - * `thisArg` and invoked with four arguments; (accumulator, value, key, object). - * Callbacks may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var squares = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) { - * num *= num; - * if (num % 2) { - * return result.push(num) < 3; - * } - * }); - * // => [1, 9, 25] - * - * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function transform(object, callback, accumulator, thisArg) { - var isArr = isArray(object); - if (accumulator == null) { - if (isArr) { - accumulator = []; - } else { - var ctor = object && object.constructor, - proto = ctor && ctor.prototype; - - accumulator = baseCreate(proto); - } - } - if (callback) { - callback = lodash.createCallback(callback, thisArg, 4); - (isArr ? baseEach : forOwn)(object, function(value, index, object) { - return callback(accumulator, value, index, object); - }); - } - return accumulator; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] (property order is not guaranteed across environments) - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [index] The indexes of `collection` - * to retrieve, specified as individual indexes or arrays of indexes. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ - function at(collection) { - var args = arguments, - index = -1, - props = baseFlatten(args, true, false, 1), - length = (args[2] && args[2][args[1]] === collection) ? 1 : props.length, - result = Array(length); - - if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given value is present in a collection using strict equality - * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the - * offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {*} target The value to check for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.contains('pebbles', 'eb'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - indexOf = getIndexOf(), - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (isArray(collection)) { - result = indexOf(collection, target, fromIndex) > -1; - } else if (typeof length == 'number') { - result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1; - } else { - baseEach(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through the callback. The corresponding value - * of each key is the number of times the key was returned by the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - - /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning an array of all elements - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(characters, 'blocked'); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - * - * // using "_.where" callback shorthand - * _.filter(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning the first element that - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect, findWhere - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.find(characters, function(chr) { - * return chr.age < 40; - * }); - * // => { 'name': 'barney', 'age': 36, 'blocked': false } - * - * // using "_.where" callback shorthand - * _.find(characters, { 'age': 1 }); - * // => { 'name': 'pebbles', 'age': 1, 'blocked': false } - * - * // using "_.pluck" callback shorthand - * _.find(characters, 'blocked'); - * // => { 'name': 'fred', 'age': 40, 'blocked': true } - */ - function find(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - } - - /** - * This method is like `_.find` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(num) { - * return num % 2 == 1; - * }); - * // => 3 - */ - function findLast(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forEachRight(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over elements of a collection, executing the callback for each - * element. The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * Note: As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(','); - * // => logs each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); }); - * // => logs each number and returns the object (property order is not guaranteed across environments) - */ - function forEach(collection, callback, thisArg) { - if (callback && typeof thisArg == 'undefined' && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - baseEach(collection, callback, thisArg); - } - return collection; - } - - /** - * This method is like `_.forEach` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEachRight(function(num) { console.log(num); }).join(','); - * // => logs each number from right to left and returns '3,2,1' - */ - function forEachRight(collection, callback, thisArg) { - var iterable = collection, - length = collection ? collection.length : 0; - - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (length--) { - if (callback(collection[length], length, collection) === false) { - break; - } - } - } else { - if (typeof length != 'number') { - var props = keys(collection); - length = props.length; - } else if (support.unindexedChars && isString(collection)) { - iterable = collection.split(''); - } - baseEach(collection, function(value, key, collection) { - key = props ? props[--length] : --length; - return callback(iterable[key], key, collection); - }); - } - return collection; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of a collection through the callback. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of the collection through the given callback. The corresponding - * value of each key is the last element responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keys = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keys, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Invokes the method named by `methodName` on each element in the `collection` - * returning an array of the results of each invoked method. Additional arguments - * will be provided to each invoked method. If `methodName` is a function it - * will be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [arg] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the collection - * through the callback. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (property order is not guaranteed across environments) - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(characters, 'name'); - * // => ['barney', 'fred'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = lodash.createCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - baseEach(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of a collection. If the collection is empty or - * falsey `-Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.max(characters, function(chr) { return chr.age; }); - * // => { 'name': 'fred', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.max(characters, 'age'); - * // => { 'name': 'fred', 'age': 40 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of a collection. If the collection is empty or - * falsey `Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.min(characters, function(chr) { return chr.age; }); - * // => { 'name': 'barney', 'age': 36 }; - * - * // using "_.pluck" callback shorthand - * _.min(characters, 'age'); - * // => { 'name': 'barney', 'age': 36 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the collection. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} property The name of the property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.pluck(characters, 'name'); - * // => ['barney', 'fred'] - */ - var pluck = map; - - /** - * Reduces a collection to a value which is the accumulated result of running - * each element in the collection through the callback, where each successive - * callback execution consumes the return value of the previous execution. If - * `accumulator` is not provided the first element of the collection will be - * used as the initial `accumulator` value. The callback is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - baseEach(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is like `_.reduce` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - forEachRight(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter` this method returns the elements of a - * collection that the callback does **not** return truey for. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that failed the callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(characters, 'blocked'); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - * - * // using "_.where" callback shorthand - * _.reject(characters, { 'age': 36 }); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - */ - function reject(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Retrieves a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Allows working with functions like `_.map` - * without using their `index` arguments as `n`. - * @returns {Array} Returns the random sample(s) of `collection`. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ - function sample(collection, n, guard) { - if (collection && typeof collection.length != 'number') { - collection = values(collection); - } else if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - if (n == null || guard) { - return collection ? collection[baseRandom(0, collection.length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(nativeMax(0, n), result.length); - return result; - } - - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = baseRandom(0, ++index); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the callback returns a truey value for **any** element of a - * collection. The function returns as soon as it finds a passing value and - * does not iterate over the entire collection. The callback is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if any element passed the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(characters, 'blocked'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(characters, { 'age': 1 }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through the callback. This method - * performs a stable sort, that is, it will preserve the original sort order - * of equal elements. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an array of property names is provided for `callback` the collection - * will be sorted by each property value. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 26 }, - * { 'name': 'fred', 'age': 30 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(_.sortBy(characters, 'age'), _.values); - * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]] - * - * // sorting by multiple properties - * _.map(_.sortBy(characters, ['name', 'age']), _.values); - * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - isArr = isArray(callback), - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - if (!isArr) { - callback = lodash.createCallback(callback, thisArg, 3); - } - forEach(collection, function(value, key, collection) { - var object = result[++index] = getObject(); - if (isArr) { - object.criteria = map(callback, function(key) { return value[key]; }); - } else { - (object.criteria = getArray())[0] = callback(value, key, collection); - } - object.index = index; - object.value = value; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - var object = result[length]; - result[length] = object.value; - if (!isArr) { - releaseArray(object.criteria); - } - releaseObject(object); - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return (support.unindexedChars && isString(collection)) - ? collection.split('') - : slice(collection); - } - return values(collection); - } - - /** - * Performs a deep comparison of each element in a `collection` to the given - * `properties` object, returning an array of all elements that have equivalent - * property values. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Object} props The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given properties. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.where(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }] - * - * _.where(characters, { 'pets': ['dino'] }); - * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array excluding all values of the provided arrays using strict - * equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - return baseDifference(array, baseFlatten(arguments, true, true, 1)); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.findIndex(characters, function(chr) { - * return chr.age < 20; - * }); - * // => 2 - * - * // using "_.where" callback shorthand - * _.findIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findIndex(characters, 'blocked'); - * // => 1 - */ - function findIndex(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - if (callback(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of a `collection` from right to left. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': true }, - * { 'name': 'fred', 'age': 40, 'blocked': false }, - * { 'name': 'pebbles', 'age': 1, 'blocked': true } - * ]; - * - * _.findLastIndex(characters, function(chr) { - * return chr.age > 30; - * }); - * // => 1 - * - * // using "_.where" callback shorthand - * _.findLastIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findLastIndex(characters, 'blocked'); - * // => 2 - */ - function findLastIndex(array, callback, thisArg) { - var length = array ? array.length : 0; - callback = lodash.createCallback(callback, thisArg, 3); - while (length--) { - if (callback(array[length], length, array)) { - return length; - } - } - return -1; - } - - /** - * Gets the first element or first `n` elements of an array. If a callback - * is provided elements at the beginning of the array are returned as long - * as the callback returns truey. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name'); - * // => ['barney', 'fred'] - */ - function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[0] : undefined; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `isShallow` - * is truey, the array will only be flattened a single level. If a callback - * is provided each element of the array is passed through the callback before - * flattening. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - * - * var characters = [ - * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * // using "_.pluck" callback shorthand - * _.flatten(characters, 'pets'); - * // => ['hoppy', 'baby puss', 'dino'] - */ - function flatten(array, isShallow, callback, thisArg) { - // juggle arguments - if (typeof isShallow != 'boolean' && isShallow != null) { - thisArg = callback; - callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow; - isShallow = false; - } - if (callback != null) { - array = map(array, callback, thisArg); - } - return baseFlatten(array, isShallow); - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the array is already sorted - * providing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - if (typeof fromIndex == 'number') { - var length = array ? array.length : 0; - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0); - } else if (fromIndex) { - var index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - return baseIndexOf(array, value, fromIndex); - } - - /** - * Gets all but the last element or last `n` elements of an array. If a - * callback is provided elements at the end of the array are excluded from - * the result as long as the callback returns truey. The callback is bound - * to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': false, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name'); - * // => ['barney', 'fred'] - */ - function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Creates an array of unique values present in all provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of shared values. - * @example - * - * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2] - */ - function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = getArray(), - indexOf = getIndexOf(), - trustIndexOf = indexOf === baseIndexOf, - seen = getArray(); - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push(trustIndexOf && value.length >= largeArraySize && - createCache(argsIndex ? args[argsIndex] : seen)); - } - } - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = []; - - outer: - while (++index < length) { - var cache = caches[0]; - value = array[index]; - - if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) { - argsIndex = argsLength; - (cache || seen).push(value); - while (--argsIndex) { - cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) { - continue outer; - } - } - result.push(value); - } - } - while (argsLength--) { - cache = caches[argsLength]; - if (cache) { - releaseObject(cache); - } - } - releaseArray(caches); - releaseArray(seen); - return result; - } - - /** - * Gets the last element or last `n` elements of an array. If a callback is - * provided elements at the end of the array are returned as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.last(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.last(characters, { 'employer': 'na' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[length - 1] : undefined; - } - } - return slice(array, nativeMax(0, length - n)); - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Removes all provided values from the given array using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {...*} [value] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ - function pull(array) { - var args = arguments, - argsIndex = 0, - argsLength = args.length, - length = array ? array.length : 0; - - while (++argsIndex < argsLength) { - var index = -1, - value = args[argsIndex]; - while (++index < length) { - if (array[index] === value) { - splice.call(array, index--, 1); - length--; - } - } - } - return array; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. If `start` is less than `stop` a - * zero-length range is created unless a negative `step` is specified. - * - * @static - * @memberOf _ - * @category Arrays - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = typeof step == 'number' ? step : (+step || 1); - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so engines like Chakra and V8 avoid slower modes - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / (step || 1))), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * Removes all elements from an array that the callback returns truey for - * and returns an array of removed elements. The callback is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4, 5, 6]; - * var evens = _.remove(array, function(num) { return num % 2 == 0; }); - * - * console.log(array); - * // => [1, 3, 5] - * - * console.log(evens); - * // => [2, 4, 6] - */ - function remove(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (callback(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; - } - - /** - * The opposite of `_.initial` this method gets all but the first element or - * first `n` elements of an array. If a callback function is provided elements - * at the beginning of the array are excluded from the result as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.rest(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.rest(characters, { 'employer': 'slate' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which a value - * should be inserted into a given sorted array in order to maintain the sort - * order of the array. If a callback is provided it will be executed for - * `value` and each element of `array` to compute their sort ranking. The - * callback is bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - (callback(array[mid]) < value) - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Creates an array of unique values, in order, of the provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of combined values. - * @example - * - * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2, 3, 5, 4] - */ - function union() { - return baseUniq(baseFlatten(arguments, true, true)); - } - - /** - * Creates a duplicate-value-free version of an array using strict equality - * for comparisons, i.e. `===`. If the array is sorted, providing - * `true` for `isSorted` will use a faster algorithm. If a callback is provided - * each element of `array` is passed through the callback before uniqueness - * is computed. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); }); - * // => ['A', 'b', 'C'] - * - * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2.5, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - // juggle arguments - if (typeof isSorted != 'boolean' && isSorted != null) { - thisArg = callback; - callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted; - isSorted = false; - } - if (callback != null) { - callback = lodash.createCallback(callback, thisArg, 3); - } - return baseUniq(array, isSorted, callback); - } - - /** - * Creates an array excluding all provided values using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {...*} [value] The values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - return baseDifference(array, slice(arguments, 1)); - } - - /** - * Creates an array that is the symmetric difference of the provided arrays. - * See http://en.wikipedia.org/wiki/Symmetric_difference. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of values. - * @example - * - * _.xor([1, 2, 3], [5, 2, 1, 4]); - * // => [3, 5, 4] - * - * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]); - * // => [1, 4, 5] - */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseUniq(baseDifference(result, array).concat(baseDifference(array, result))) - : array; - } - } - return result || []; - } - - /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second - * elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @alias unzip - * @category Arrays - * @param {...Array} [array] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ - function zip() { - var array = arguments.length > 1 ? arguments : arguments[0], - index = -1, - length = array ? max(pluck(array, 'length')) : 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = pluck(array, index); - } - return result; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Provide - * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]` - * or two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @alias object - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ - function zipObject(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - if (!values && length && !isArray(keys[0])) { - values = []; - } - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that executes `func`, with the `this` binding and - * arguments of the created function, only after being called `n` times. - * - * @static - * @memberOf _ - * @category Functions - * @param {number} n The number of times the function must be called before - * `func` is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('Done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'Done saving!', after all saves have completed - */ - function after(n, func) { - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * provided to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'fred' }, 'hi'); - * func(); - * // => 'hi fred' - */ - function bind(func, thisArg) { - return arguments.length > 2 - ? createWrapper(func, 17, slice(arguments, 2), null, thisArg) - : createWrapper(func, 1, null, null, thisArg); - } - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all the function properties - * of `object` will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...string} [methodName] The object method names to - * bind, specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { console.log('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = arguments.length > 1 ? baseFlatten(arguments, true, false, 1) : functions(object), - index = -1, - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = createWrapper(object[key], 1, null, null, object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those provided to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'fred', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi fred' - * - * object.greet = function(greeting) { - * return greeting + 'ya ' + this.name + '!'; - * }; - * - * func(); - * // => 'hiya fred!' - */ - function bindKey(object, key) { - return arguments.length > 2 - ? createWrapper(key, 19, slice(arguments, 2), null, object) - : createWrapper(key, 3, null, null, object); - } - - /** - * Creates a function that is the composition of the provided functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {...Function} [func] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var realNameMap = { - * 'pebbles': 'penelope' - * }; - * - * var format = function(name) { - * name = realNameMap[name.toLowerCase()] || name; - * return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase(); - * }; - * - * var greet = function(formatted) { - * return 'Hiya ' + formatted + '!'; - * }; - * - * var welcome = _.compose(greet, format); - * welcome('pebbles'); - * // => 'Hiya Penelope!' - */ - function compose() { - var funcs = arguments, - length = funcs.length; - - while (length--) { - if (!isFunction(funcs[length])) { - throw new TypeError; - } - } - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function which accepts one or more arguments of `func` that when - * invoked either executes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` can be specified - * if `func.length` is not sufficient. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @returns {Function} Returns the new curried function. - * @example - * - * var curried = _.curry(function(a, b, c) { - * console.log(a + b + c); - * }); - * - * curried(1)(2)(3); - * // => 6 - * - * curried(1, 2)(3); - * // => 6 - * - * curried(1, 2, 3); - * // => 6 - */ - function curry(func, arity) { - arity = typeof arity == 'number' ? arity : (+arity || func.length); - return createWrapper(func, 4, null, null, null, arity); - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. - * Provide an options object to indicate that `func` should be invoked on - * the leading and/or trailing edge of the `wait` timeout. Subsequent calls - * to the debounced function will return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {number} wait The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * var lazyLayout = _.debounce(calculateLayout, 150); - * jQuery(window).on('resize', lazyLayout); - * - * // execute `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * }); - * - * // ensure `batchLog` is executed once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * source.addEventListener('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * }, false); - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - wait = nativeMax(0, wait) || 0; - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0); - trailing = 'trailing' in options ? options.trailing : trailing; - } - var delayed = function() { - var remaining = wait - (now() - stamp); - if (remaining <= 0) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - }; - - var maxDelayed = function() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - }; - - return function() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - }; - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { console.log(text); }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ - function defer(func) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay execution. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { console.log(text); }, 1000, 'later'); - * // => logs 'later' after one second - */ - function delay(func, wait) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it will be used to determine the cache key for storing the result - * based on the arguments provided to the memoized function. By default, the - * first argument provided to the memoized function is used as the cache key. - * The `func` is executed with the `this` binding of the memoized function. - * The result cache is exposed as the `cache` property on the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - * - * fibonacci(9) - * // => 34 - * - * var data = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // modifying the result cache - * var get = _.memoize(function(name) { return data[name]; }, _.identity); - * get('pebbles'); - * // => { 'name': 'pebbles', 'age': 1 } - * - * get.cache.pebbles.name = 'penelope'; - * get('pebbles'); - * // => { 'name': 'penelope', 'age': 1 } - */ - function memoize(func, resolver) { - if (!isFunction(func)) { - throw new TypeError; - } - var memoized = function() { - var cache = memoized.cache, - key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0]; - - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - } - memoized.cache = {}; - return memoized; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those provided to the new function. This - * method is similar to `_.bind` except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('fred'); - * // => 'hi fred' - */ - function partial(func) { - return createWrapper(func, 16, slice(arguments, 1)); - } - - /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createWrapper(func, 32, null, slice(arguments, 1)); - } - - /** - * Creates a function that, when executed, will only call the `func` function - * at most once per every `wait` milliseconds. Provide an options object to - * indicate that `func` should be invoked on the leading and/or trailing edge - * of the `wait` timeout. Subsequent calls to the throttled function will - * return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {number} wait The number of milliseconds to throttle executions to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - * - * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? options.leading : leading; - trailing = 'trailing' in options ? options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = wait; - debounceOptions.trailing = trailing; - - return debounce(func, wait, debounceOptions); - } - - /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Additional arguments provided to the function are appended - * to those provided to the wrapper function. The wrapper is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

    ' + func(text) + '

    '; - * }); - * - * p('Fred, Wilma, & Pebbles'); - * // => '

    Fred, Wilma, & Pebbles

    ' - */ - function wrap(value, wrapper) { - return createWrapper(wrapper, 16, [value]); - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new function. - * @example - * - * var object = { 'name': 'fred' }; - * var getter = _.constant(object); - * getter() === object; - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ - function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; - } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } - } - return result; - }; - } - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' - */ - function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds function properties of a source object to the destination object. - * If `object` is a function methods will be added to its prototype as well. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Function|Object} [object=lodash] object The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options] The options object. - * @param {boolean} [options.chain=true] Specify whether the functions added are chainable. - * @example - * - * function capitalize(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * - * _.mixin({ 'capitalize': capitalize }); - * _.capitalize('fred'); - * // => 'Fred' - * - * _('fred').capitalize().value(); - * // => 'Fred' - * - * _.mixin({ 'capitalize': capitalize }, { 'chain': false }); - * _('fred').capitalize(); - * // => 'Fred' - */ - function mixin(object, source, options) { - var chain = true, - methodNames = source && functions(source); - - if (!source || (!options && !methodNames.length)) { - if (options == null) { - options = source; - } - ctor = lodashWrapper; - source = object; - object = lodash; - methodNames = functions(source); - } - if (options === false) { - chain = false; - } else if (isObject(options) && 'chain' in options) { - chain = options.chain; - } - var ctor = object, - isFunc = isFunction(ctor); - - forEach(methodNames, function(methodName) { - var func = object[methodName] = source[methodName]; - if (isFunc) { - ctor.prototype[methodName] = function() { - var chainAll = this.__chain__, - value = this.__wrapped__, - args = [value]; - - push.apply(args, arguments); - var result = func.apply(object, args); - if (chain || chainAll) { - if (value === result && isObject(result)) { - return this; - } - result = new ctor(result); - result.__chain__ = chainAll; - } - return result; - }; - } - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - context._ = oldDash; - return this; - } - - /** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ - function noop() { - // no operation performed - } - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var stamp = _.now(); - * _.defer(function() { console.log(_.now() - stamp); }); - * // => logs the number of milliseconds it took for the deferred function to be called - */ - var now = isNative(now = Date.now) && now || function() { - return new Date().getTime(); - }; - - /** - * Converts the given value into an integer of the specified radix. - * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the - * `value` is a hexadecimal, in which case a `radix` of `16` is used. - * - * Note: This method avoids differences in native ES3 and ES5 `parseInt` - * implementations. See http://es5.github.io/#E. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} value The value to parse. - * @param {number} [radix] The radix used to interpret the value to parse. - * @returns {number} Returns the new integer value. - * @example - * - * _.parseInt('08'); - * // => 8 - */ - var parseInt = nativeParseInt(whitespace + '08') == 8 ? nativeParseInt : function(value, radix) { - // Firefox < 21 and Opera < 15 follow the ES3 specified implementation of `parseInt` - return nativeParseInt(isString(value) ? value.replace(reLeadingSpacesAndZeros, '') : value, radix || 0); - }; - - /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ - function property(key) { - return function(object) { - return object[key]; - }; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number will be - * returned. If `floating` is truey or either `min` or `max` are floats a - * floating-point number will be returned instead of an integer. - * - * @static - * @memberOf _ - * @category Utilities - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating=false] Specify returning a floating-point number. - * @returns {number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (typeof min == 'boolean' && noMax) { - floating = min; - min = 1; - } - else if (!noMax && typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; - } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand +'').length - 1)))), max); - } - return baseRandom(min, max); - } - - /** - * Resolves the value of property `key` on `object`. If `key` is a function - * it will be invoked with the `this` binding of `object` and its result returned, - * else the property value is returned. If `object` is falsey then `undefined` - * is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to resolve. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, key) { - if (object) { - var value = object[key]; - return isFunction(value) ? object[key]() : value; - } - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * For more information on precompiling templates see: - * http://lodash.com/custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} text The template text. - * @param {Object} data The data object used to populate the text. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as local variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [sourceURL] The sourceURL of the template's compiled source. - * @param {string} [variable] The data object variable name. - * @returns {Function|string} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'fred' }); - * // => 'hello fred' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.css b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.css deleted file mode 100644 index 5181e157c9..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.js deleted file mode 100644 index eaf4912c93..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.html deleted file mode 100644 index e4f84d2346..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - Code coverage report for vinyl/ - - - - - - - -
    -

    Code coverage report for vinyl/

    -

    - - Statements: 100% (89 / 89)      - - - Branches: 100% (76 / 76)      - - - Functions: 100% (15 / 15)      - - - Lines: 100% (82 / 82)      - - Ignored: none      -

    -
    All files » vinyl/
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    index.js100%(89 / 89)100%(76 / 76)100%(15 / 15)100%(82 / 82)
    -
    -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html deleted file mode 100644 index f47d9b3794..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/index.js.html +++ /dev/null @@ -1,847 +0,0 @@ - - - - Code coverage report for vinyl/index.js - - - - - - - -
    -

    Code coverage report for vinyl/index.js

    -

    - - Statements: 100% (89 / 89)      - - - Branches: 100% (76 / 76)      - - - Functions: 100% (15 / 15)      - - - Lines: 100% (82 / 82)      - - Ignored: none      -

    -
    All files » vinyl/ » index.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -1761 -1 -1 -1 -1 -1 -1 -1 -1 -  -1 -73 -  -  -73 -73 -  -  -73 -73 -  -  -  -73 -  -  -73 -  -  -1 -26 -  -  -1 -29 -  -  -1 -6 -  -  -  -1 -3 -  -  -1 -14 -2 -  -  -  -12 -7 -  -  -  -  -5 -5 -  -  -  -14 -14 -1 -1 -13 -6 -  -  -14 -  -  -  -  -  -  -  -  -14 -  -75 -  -  -70 -  -5 -  -14 -  -  -1 -6 -6 -  -6 -2 -  -4 -2 -1 -  -1 -  -2 -  -  -  -2 -2 -  -  -1 -6 -  -  -6 -  -6 -4 -  -  -6 -3 -  -  -6 -1 -  -  -6 -  -  -  -  -1 -  -99 -  -  -78 -1 -  -77 -  -  -  -  -1 -  -7 -6 -5 -  -  -1 -  -  -  -1 -  -46 -  -  -9 -  -  -8 -5 -  -  -  -  -1 - 
    var path = require('path');
    -var clone = require('lodash').clone;
    -var cloneStats = require('clone-stats');
    -var cloneBuffer = require('./lib/cloneBuffer');
    -var isBuffer = require('./lib/isBuffer');
    -var isStream = require('./lib/isStream');
    -var isNull = require('./lib/isNull');
    -var inspectStream = require('./lib/inspectStream');
    -var Stream = require('stream');
    - 
    -function File(file) {
    -  if (!file) file = {};
    - 
    -  // record path change
    -  var history = file.path ? [file.path] : file.history;
    -  this.history = history || [];
    - 
    -  // TODO: should this be moved to vinyl-fs?
    -  this.cwd = file.cwd || process.cwd();
    -  this.base = file.base || this.cwd;
    - 
    -  // stat = fs stats object
    -  // TODO: should this be moved to vinyl-fs?
    -  this.stat = file.stat || null;
    - 
    -  // contents = stream, buffer, or null if not read
    -  this.contents = file.contents || null;
    -}
    - 
    -File.prototype.isBuffer = function() {
    -  return isBuffer(this.contents);
    -};
    - 
    -File.prototype.isStream = function() {
    -  return isStream(this.contents);
    -};
    - 
    -File.prototype.isNull = function() {
    -  return isNull(this.contents);
    -};
    - 
    -// TODO: should this be moved to vinyl-fs?
    -File.prototype.isDirectory = function() {
    -  return this.isNull() && this.stat && this.stat.isDirectory();
    -};
    - 
    -File.prototype.clone = function(opt) {
    -  if (typeof opt === 'boolean') {
    -    opt = {
    -      deep: opt,
    -      contents: true
    -    };
    -  } else if (!opt) {
    -    opt = {
    -      deep: false,
    -      contents: true
    -    };
    -  } else {
    -    opt.deep = opt.deep === true;
    -    opt.contents = opt.contents !== false;
    -  }
    - 
    -  // clone our file contents
    -  var contents;
    -  if (this.isStream()) {
    -    contents = this.contents.pipe(new Stream.PassThrough());
    -    this.contents = this.contents.pipe(new Stream.PassThrough());
    -  } else if (this.isBuffer()) {
    -    contents = opt.contents ? cloneBuffer(this.contents) : this.contents;
    -  }
    - 
    -  var file = new File({
    -    cwd: this.cwd,
    -    base: this.base,
    -    stat: (this.stat ? cloneStats(this.stat) : null),
    -    history: this.history.slice(),
    -    contents: contents
    -  });
    - 
    -  // clone our custom properties
    -  Object.keys(this).forEach(function(key) {
    -    // ignore built-in fields
    -    if (key === '_contents' || key === 'stat' ||
    -      key === 'history' || key === 'path' ||
    -      key === 'base' || key === 'cwd') {
    -      return;
    -    }
    -    file[key] = opt.deep ? clone(this[key], true) : this[key];
    -  }, this);
    -  return file;
    -};
    - 
    -File.prototype.pipe = function(stream, opt) {
    -  if (!opt) opt = {};
    -  if (typeof opt.end === 'undefined') opt.end = true;
    - 
    -  if (this.isStream()) {
    -    return this.contents.pipe(stream, opt);
    -  }
    -  if (this.isBuffer()) {
    -    if (opt.end) {
    -      stream.end(this.contents);
    -    } else {
    -      stream.write(this.contents);
    -    }
    -    return stream;
    -  }
    - 
    -  // isNull
    -  if (opt.end) stream.end();
    -  return stream;
    -};
    - 
    -File.prototype.inspect = function() {
    -  var inspect = [];
    - 
    -  // use relative path if possible
    -  var filePath = (this.base && this.path) ? this.relative : this.path;
    - 
    -  if (filePath) {
    -    inspect.push('"'+filePath+'"');
    -  }
    - 
    -  if (this.isBuffer()) {
    -    inspect.push(this.contents.inspect());
    -  }
    - 
    -  if (this.isStream()) {
    -    inspect.push(inspectStream(this.contents));
    -  }
    - 
    -  return '<File '+inspect.join(' ')+'>';
    -};
    - 
    -// virtual attributes
    -// or stuff with extra logic
    -Object.defineProperty(File.prototype, 'contents', {
    -  get: function() {
    -    return this._contents;
    -  },
    -  set: function(val) {
    -    if (!isBuffer(val) && !isStream(val) && !isNull(val)) {
    -      throw new Error('File.contents can only be a Buffer, a Stream, or null.');
    -    }
    -    this._contents = val;
    -  }
    -});
    - 
    -// TODO: should this be moved to vinyl-fs?
    -Object.defineProperty(File.prototype, 'relative', {
    -  get: function() {
    -    if (!this.base) throw new Error('No base specified! Can not get relative.');
    -    if (!this.path) throw new Error('No path specified! Can not get relative.');
    -    return path.relative(this.base, this.path);
    -  },
    -  set: function() {
    -    throw new Error('File.relative is generated from the base and path attributes. Do not modify it.');
    -  }
    -});
    - 
    -Object.defineProperty(File.prototype, 'path', {
    -  get: function() {
    -    return this.history[this.history.length - 1];
    -  },
    -  set: function(path) {
    -    if (typeof path !== 'string') throw new Error('path should be string');
    - 
    -    // record history only when path changed
    -    if (path && path !== this.path) {
    -      this.history.push(path);
    -    }
    -  }
    -});
    - 
    -module.exports = File;
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html deleted file mode 100644 index db5a686f37..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/cloneBuffer.js.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - Code coverage report for vinyl/lib/cloneBuffer.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/cloneBuffer.js

    -

    - - Statements: 100% (5 / 5)      - - - Branches: 100% (0 / 0)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (5 / 5)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » cloneBuffer.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -81 -  -1 -7 -7 -7 -  - 
    var Buffer = require('buffer').Buffer;
    - 
    -module.exports = function(buf) {
    -  var out = new Buffer(buf.length);
    -  buf.copy(out);
    -  return out;
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html deleted file mode 100644 index e5389556fa..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/index.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - Code coverage report for vinyl/lib/ - - - - - - - -
    -

    Code coverage report for vinyl/lib/

    -

    - - Statements: 100% (22 / 22)      - - - Branches: 100% (8 / 8)      - - - Functions: 100% (5 / 5)      - - - Lines: 100% (20 / 20)      - - Ignored: none      -

    -
    All files » vinyl/lib/
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FileStatementsBranchesFunctionsLines
    cloneBuffer.js100%(5 / 5)100%(0 / 0)100%(1 / 1)100%(5 / 5)
    inspectStream.js100%(8 / 8)100%(4 / 4)100%(1 / 1)100%(6 / 6)
    isBuffer.js100%(4 / 4)100%(2 / 2)100%(1 / 1)100%(4 / 4)
    isNull.js100%(2 / 2)100%(0 / 0)100%(1 / 1)100%(2 / 2)
    isStream.js100%(3 / 3)100%(2 / 2)100%(1 / 1)100%(3 / 3)
    -
    -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html deleted file mode 100644 index 4cc79c7d8b..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/inspectStream.js.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - Code coverage report for vinyl/lib/inspectStream.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/inspectStream.js

    -

    - - Statements: 100% (8 / 8)      - - - Branches: 100% (4 / 4)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (6 / 6)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » inspectStream.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -121 -  -1 -9 -  -7 -  -7 -  -7 -  - 
    var isStream = require('./isStream');
    - 
    -module.exports = function(stream) {
    -  if (!isStream(stream)) return;
    - 
    -  var streamType = stream.constructor.name;
    -  // avoid StreamStream
    -  if (streamType === 'Stream') streamType = '';
    - 
    -  return '<'+streamType+'Stream>';
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html deleted file mode 100644 index b8d03cf3c7..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isBuffer.js.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - Code coverage report for vinyl/lib/isBuffer.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isBuffer.js

    -

    - - Statements: 100% (4 / 4)      - - - Branches: 100% (2 / 2)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (4 / 4)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isBuffer.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -5 -6 -71 -1 -  -  -1 -108 - 
    var buf = require('buffer');
    -var Buffer = buf.Buffer;
    - 
    -// could use Buffer.isBuffer but this is the same exact thing...
    -module.exports = function(o) {
    -  return typeof o === 'object' && o instanceof Buffer;
    -};
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html deleted file mode 100644 index 7db9769a84..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isNull.js.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - Code coverage report for vinyl/lib/isNull.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isNull.js

    -

    - - Statements: 100% (2 / 2)      - - - Branches: 100% (0 / 0)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (2 / 2)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isNull.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -41 -57 -  - 
    module.exports = function(v) {
    -  return v === null;
    -};
    - 
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html deleted file mode 100644 index 6a28a3dec5..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov-report/vinyl/lib/isStream.js.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - Code coverage report for vinyl/lib/isStream.js - - - - - - - -
    -

    Code coverage report for vinyl/lib/isStream.js

    -

    - - Statements: 100% (3 / 3)      - - - Branches: 100% (2 / 2)      - - - Functions: 100% (1 / 1)      - - - Lines: 100% (3 / 3)      - - Ignored: none      -

    -
    All files » vinyl/lib/ » isStream.js
    -
    -
    -
    
    -
    -
    1 -2 -3 -4 -51 -  -1 -99 - 
    var Stream = require('stream').Stream;
    - 
    -module.exports = function(o) {
    -  return !!o && o instanceof Stream;
    -};
    - -
    - - - - - - - - diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov.info b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov.info deleted file mode 100644 index a4ec23afaf..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/coverage/lcov.info +++ /dev/null @@ -1,280 +0,0 @@ -TN: -SF:/Users/contra/Projects/vinyl/index.js -FN:11,File -FN:30,(anonymous_2) -FN:34,(anonymous_3) -FN:38,(anonymous_4) -FN:43,(anonymous_5) -FN:47,(anonymous_6) -FN:81,(anonymous_7) -FN:93,(anonymous_8) -FN:114,(anonymous_9) -FN:138,(anonymous_10) -FN:141,(anonymous_11) -FN:151,(anonymous_12) -FN:156,(anonymous_13) -FN:162,(anonymous_14) -FN:165,(anonymous_15) -FNF:15 -FNH:15 -FNDA:73,File -FNDA:26,(anonymous_2) -FNDA:29,(anonymous_3) -FNDA:6,(anonymous_4) -FNDA:3,(anonymous_5) -FNDA:14,(anonymous_6) -FNDA:75,(anonymous_7) -FNDA:6,(anonymous_8) -FNDA:6,(anonymous_9) -FNDA:99,(anonymous_10) -FNDA:78,(anonymous_11) -FNDA:7,(anonymous_12) -FNDA:1,(anonymous_13) -FNDA:46,(anonymous_14) -FNDA:9,(anonymous_15) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:9,1 -DA:11,1 -DA:12,73 -DA:15,73 -DA:16,73 -DA:19,73 -DA:20,73 -DA:24,73 -DA:27,73 -DA:30,1 -DA:31,26 -DA:34,1 -DA:35,29 -DA:38,1 -DA:39,6 -DA:43,1 -DA:44,3 -DA:47,1 -DA:48,14 -DA:49,2 -DA:53,12 -DA:54,7 -DA:59,5 -DA:60,5 -DA:64,14 -DA:65,14 -DA:66,1 -DA:67,1 -DA:68,13 -DA:69,6 -DA:72,14 -DA:81,14 -DA:83,75 -DA:86,70 -DA:88,5 -DA:90,14 -DA:93,1 -DA:94,6 -DA:95,6 -DA:97,6 -DA:98,2 -DA:100,4 -DA:101,2 -DA:102,1 -DA:104,1 -DA:106,2 -DA:110,2 -DA:111,2 -DA:114,1 -DA:115,6 -DA:118,6 -DA:120,6 -DA:121,4 -DA:124,6 -DA:125,3 -DA:128,6 -DA:129,1 -DA:132,6 -DA:137,1 -DA:139,99 -DA:142,78 -DA:143,1 -DA:145,77 -DA:150,1 -DA:152,7 -DA:153,6 -DA:154,5 -DA:157,1 -DA:161,1 -DA:163,46 -DA:166,9 -DA:169,8 -DA:170,5 -DA:175,1 -LF:82 -LH:82 -BRDA:12,1,0,14 -BRDA:12,1,1,59 -BRDA:15,2,0,25 -BRDA:15,2,1,48 -BRDA:16,3,0,73 -BRDA:16,3,1,33 -BRDA:19,4,0,73 -BRDA:19,4,1,32 -BRDA:20,5,0,73 -BRDA:20,5,1,39 -BRDA:24,6,0,73 -BRDA:24,6,1,65 -BRDA:27,7,0,73 -BRDA:27,7,1,44 -BRDA:44,8,0,3 -BRDA:44,8,1,1 -BRDA:44,8,2,1 -BRDA:48,9,0,2 -BRDA:48,9,1,12 -BRDA:53,10,0,7 -BRDA:53,10,1,5 -BRDA:65,11,0,1 -BRDA:65,11,1,13 -BRDA:68,12,0,6 -BRDA:68,12,1,7 -BRDA:69,13,0,5 -BRDA:69,13,1,1 -BRDA:75,14,0,2 -BRDA:75,14,1,12 -BRDA:83,15,0,70 -BRDA:83,15,1,5 -BRDA:83,16,0,75 -BRDA:83,16,1,61 -BRDA:83,16,2,47 -BRDA:83,16,3,33 -BRDA:83,16,4,33 -BRDA:83,16,5,19 -BRDA:88,17,0,2 -BRDA:88,17,1,3 -BRDA:94,18,0,3 -BRDA:94,18,1,3 -BRDA:95,19,0,3 -BRDA:95,19,1,3 -BRDA:97,20,0,2 -BRDA:97,20,1,4 -BRDA:100,21,0,2 -BRDA:100,21,1,2 -BRDA:101,22,0,1 -BRDA:101,22,1,1 -BRDA:110,23,0,1 -BRDA:110,23,1,1 -BRDA:118,24,0,3 -BRDA:118,24,1,3 -BRDA:118,25,0,6 -BRDA:118,25,1,5 -BRDA:120,26,0,4 -BRDA:120,26,1,2 -BRDA:124,27,0,3 -BRDA:124,27,1,3 -BRDA:128,28,0,1 -BRDA:128,28,1,5 -BRDA:142,29,0,1 -BRDA:142,29,1,77 -BRDA:142,30,0,78 -BRDA:142,30,1,57 -BRDA:142,30,2,46 -BRDA:152,31,0,1 -BRDA:152,31,1,6 -BRDA:153,32,0,1 -BRDA:153,32,1,5 -BRDA:166,33,0,1 -BRDA:166,33,1,8 -BRDA:169,34,0,5 -BRDA:169,34,1,3 -BRDA:169,35,0,8 -BRDA:169,35,1,7 -BRF:76 -BRH:76 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/cloneBuffer.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:7,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,7 -DA:5,7 -DA:6,7 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isBuffer.js -FN:5,(anonymous_1) -FNF:1 -FNH:1 -FNDA:108,(anonymous_1) -DA:1,1 -DA:2,1 -DA:5,1 -DA:6,108 -LF:4 -LH:4 -BRDA:6,1,0,108 -BRDA:6,1,1,107 -BRF:2 -BRH:2 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isStream.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:99,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,99 -LF:3 -LH:3 -BRDA:4,1,0,99 -BRDA:4,1,1,40 -BRF:2 -BRH:2 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/isNull.js -FN:1,(anonymous_1) -FNF:1 -FNH:1 -FNDA:57,(anonymous_1) -DA:1,1 -DA:2,57 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/contra/Projects/vinyl/lib/inspectStream.js -FN:3,(anonymous_1) -FNF:1 -FNH:1 -FNDA:9,(anonymous_1) -DA:1,1 -DA:3,1 -DA:4,9 -DA:6,7 -DA:8,7 -DA:10,7 -LF:6 -LH:6 -BRDA:4,1,0,2 -BRDA:4,1,1,7 -BRDA:8,2,0,1 -BRDA:8,2,1,6 -BRF:4 -BRH:4 -end_of_record diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/index.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/index.js index 7e1b58454f..9aa47b78f1 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/index.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/index.js @@ -1,175 +1,175 @@ -var path = require('path'); -var clone = require('lodash').clone; -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: false, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; +var path = require('path'); +var clone = require('clone'); +var cloneStats = require('clone-stats'); +var cloneBuffer = require('./lib/cloneBuffer'); +var isBuffer = require('./lib/isBuffer'); +var isStream = require('./lib/isStream'); +var isNull = require('./lib/isNull'); +var inspectStream = require('./lib/inspectStream'); +var Stream = require('stream'); + +function File(file) { + if (!file) file = {}; + + // record path change + var history = file.path ? [file.path] : file.history; + this.history = history || []; + + // TODO: should this be moved to vinyl-fs? + this.cwd = file.cwd || process.cwd(); + this.base = file.base || this.cwd; + + // stat = fs stats object + // TODO: should this be moved to vinyl-fs? + this.stat = file.stat || null; + + // contents = stream, buffer, or null if not read + this.contents = file.contents || null; +} + +File.prototype.isBuffer = function() { + return isBuffer(this.contents); +}; + +File.prototype.isStream = function() { + return isStream(this.contents); +}; + +File.prototype.isNull = function() { + return isNull(this.contents); +}; + +// TODO: should this be moved to vinyl-fs? +File.prototype.isDirectory = function() { + return this.isNull() && this.stat && this.stat.isDirectory(); +}; + +File.prototype.clone = function(opt) { + if (typeof opt === 'boolean') { + opt = { + deep: opt, + contents: true + }; + } else if (!opt) { + opt = { + deep: false, + contents: true + }; + } else { + opt.deep = opt.deep === true; + opt.contents = opt.contents !== false; + } + + // clone our file contents + var contents; + if (this.isStream()) { + contents = this.contents.pipe(new Stream.PassThrough()); + this.contents = this.contents.pipe(new Stream.PassThrough()); + } else if (this.isBuffer()) { + contents = opt.contents ? cloneBuffer(this.contents) : this.contents; + } + + var file = new File({ + cwd: this.cwd, + base: this.base, + stat: (this.stat ? cloneStats(this.stat) : null), + history: this.history.slice(), + contents: contents + }); + + // clone our custom properties + Object.keys(this).forEach(function(key) { + // ignore built-in fields + if (key === '_contents' || key === 'stat' || + key === 'history' || key === 'path' || + key === 'base' || key === 'cwd') { + return; + } + file[key] = opt.deep ? clone(this[key], true) : this[key]; + }, this); + return file; +}; + +File.prototype.pipe = function(stream, opt) { + if (!opt) opt = {}; + if (typeof opt.end === 'undefined') opt.end = true; + + if (this.isStream()) { + return this.contents.pipe(stream, opt); + } + if (this.isBuffer()) { + if (opt.end) { + stream.end(this.contents); + } else { + stream.write(this.contents); + } + return stream; + } + + // isNull + if (opt.end) stream.end(); + return stream; +}; + +File.prototype.inspect = function() { + var inspect = []; + + // use relative path if possible + var filePath = (this.base && this.path) ? this.relative : this.path; + + if (filePath) { + inspect.push('"'+filePath+'"'); + } + + if (this.isBuffer()) { + inspect.push(this.contents.inspect()); + } + + if (this.isStream()) { + inspect.push(inspectStream(this.contents)); + } + + return ''; +}; + +// virtual attributes +// or stuff with extra logic +Object.defineProperty(File.prototype, 'contents', { + get: function() { + return this._contents; + }, + set: function(val) { + if (!isBuffer(val) && !isStream(val) && !isNull(val)) { + throw new Error('File.contents can only be a Buffer, a Stream, or null.'); + } + this._contents = val; + } +}); + +// TODO: should this be moved to vinyl-fs? +Object.defineProperty(File.prototype, 'relative', { + get: function() { + if (!this.base) throw new Error('No base specified! Can not get relative.'); + if (!this.path) throw new Error('No path specified! Can not get relative.'); + return path.relative(this.base, this.path); + }, + set: function() { + throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); + } +}); + +Object.defineProperty(File.prototype, 'path', { + get: function() { + return this.history[this.history.length - 1]; + }, + set: function(path) { + if (typeof path !== 'string') throw new Error('path should be string'); + + // record history only when path changed + if (path && path !== this.path) { + this.history.push(path); + } + } +}); + +module.exports = File; diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js index 13973712e6..89f09eda13 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js @@ -1,7 +1,7 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; +var Buffer = require('buffer').Buffer; + +module.exports = function(buf) { + var out = new Buffer(buf.length); + buf.copy(out); + return out; +}; diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js index c484a33dcd..d36df6ff66 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js @@ -1,11 +1,11 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; +var isStream = require('./isStream'); + +module.exports = function(stream) { + if (!isStream(stream)) return; + + var streamType = stream.constructor.name; + // avoid StreamStream + if (streamType === 'Stream') streamType = ''; + + return '<'+streamType+'Stream>'; +}; diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js index da2bcb2631..0e23782c41 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js @@ -1,7 +1,7 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; +var buf = require('buffer'); +var Buffer = buf.Buffer; + +// could use Buffer.isBuffer but this is the same exact thing... +module.exports = function(o) { + return typeof o === 'object' && o instanceof Buffer; }; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js index 5d950dc476..7f22c63ae8 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js @@ -1,3 +1,3 @@ -module.exports = function(v) { - return v === null; -}; +module.exports = function(v) { + return v === null; +}; diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js index 33f7850e17..9ce0929b03 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js @@ -1,5 +1,5 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; +var Stream = require('stream').Stream; + +module.exports = function(o) { + return !!o && o instanceof Stream; }; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/LICENSE.md b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/LICENSE.md index a23ecfb40b..146cb32a7d 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/LICENSE.md +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/LICENSE.md @@ -1,21 +1,21 @@ -## The MIT License (MIT) ## - -Copyright (c) 2014 Hugh Kennedy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +## The MIT License (MIT) ## + +Copyright (c) 2014 Hugh Kennedy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/README.md b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/README.md index 35dfb2ad2e..8b12b6fa5e 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/README.md +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/README.md @@ -1,17 +1,17 @@ -# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) # - -Safely clone node's -[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without -losing their class methods, i.e. `stat.isDirectory()` and co. - -## Usage ## - -[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats) - -### `copy = require('clone-stats')(stat)` ### - -Returns a clone of the original `fs.Stats` instance (`stat`). - -## License ## - -MIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details. +# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) # + +Safely clone node's +[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without +losing their class methods, i.e. `stat.isDirectory()` and co. + +## Usage ## + +[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats) + +### `copy = require('clone-stats')(stat)` ### + +Returns a clone of the original `fs.Stats` instance (`stat`). + +## License ## + +MIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details. diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/index.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/index.js index 23a2e4c8f5..e797cfe6eb 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/index.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/index.js @@ -1,13 +1,13 @@ -var Stat = require('fs').Stats - -module.exports = cloneStats - -function cloneStats(stats) { - var replacement = new Stat - - Object.keys(stats).forEach(function(key) { - replacement[key] = stats[key] - }) - - return replacement -} +var Stat = require('fs').Stats + +module.exports = cloneStats + +function cloneStats(stats) { + var replacement = new Stat + + Object.keys(stats).forEach(function(key) { + replacement[key] = stats[key] + }) + + return replacement +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json index e8d355860c..76699ca0f0 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/package.json @@ -1,57 +1,57 @@ -{ - "name": "clone-stats", - "description": "Safely clone node's fs.Stats instances without losing their class methods", - "version": "0.0.1", - "main": "index.js", - "browser": "index.js", - "dependencies": {}, - "devDependencies": { - "tape": "~2.3.2" - }, - "scripts": { - "test": "node test" - }, - "author": { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com", - "url": "http://hughsk.io/" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/hughsk/clone-stats" - }, - "bugs": { - "url": "https://github.com/hughsk/clone-stats/issues" - }, - "homepage": "https://github.com/hughsk/clone-stats", - "keywords": [ - "stats", - "fs", - "clone", - "copy", - "prototype" - ], - "readme": "# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #\n\nSafely clone node's\n[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without\nlosing their class methods, i.e. `stat.isDirectory()` and co.\n\n## Usage ##\n\n[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats)\n\n### `copy = require('clone-stats')(stat)` ###\n\nReturns a clone of the original `fs.Stats` instance (`stat`).\n\n## License ##\n\nMIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details.\n", - "readmeFilename": "README.md", - "_id": "clone-stats@0.0.1", - "dist": { - "shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", - "tarball": "http://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - }, - "_from": "clone-stats@^0.0.1", - "_npmVersion": "1.3.22", - "_npmUser": { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - }, - "maintainers": [ - { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - } - ], - "directories": {}, - "_shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", - "_resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" -} +{ + "name": "clone-stats", + "description": "Safely clone node's fs.Stats instances without losing their class methods", + "version": "0.0.1", + "main": "index.js", + "browser": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.3.2" + }, + "scripts": { + "test": "node test" + }, + "author": { + "name": "Hugh Kennedy", + "email": "hughskennedy@gmail.com", + "url": "http://hughsk.io/" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/hughsk/clone-stats" + }, + "bugs": { + "url": "https://github.com/hughsk/clone-stats/issues" + }, + "homepage": "https://github.com/hughsk/clone-stats", + "keywords": [ + "stats", + "fs", + "clone", + "copy", + "prototype" + ], + "readme": "# clone-stats [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/clone-stats&title=clone-stats&description=hughsk/clone-stats%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #\n\nSafely clone node's\n[`fs.Stats`](http://nodejs.org/api/fs.html#fs_class_fs_stats) instances without\nlosing their class methods, i.e. `stat.isDirectory()` and co.\n\n## Usage ##\n\n[![clone-stats](https://nodei.co/npm/clone-stats.png?mini=true)](https://nodei.co/npm/clone-stats)\n\n### `copy = require('clone-stats')(stat)` ###\n\nReturns a clone of the original `fs.Stats` instance (`stat`).\n\n## License ##\n\nMIT. See [LICENSE.md](http://github.com/hughsk/clone-stats/blob/master/LICENSE.md) for details.\n", + "readmeFilename": "README.md", + "_id": "clone-stats@0.0.1", + "dist": { + "shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", + "tarball": "http://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" + }, + "_from": "clone-stats@>=0.0.1 <0.0.2", + "_npmVersion": "1.3.22", + "_npmUser": { + "name": "hughsk", + "email": "hughskennedy@gmail.com" + }, + "maintainers": [ + { + "name": "hughsk", + "email": "hughskennedy@gmail.com" + } + ], + "directories": {}, + "_shasum": "b88f94a82cf38b8791d58046ea4029ad88ca99d1", + "_resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/test.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/test.js index 491d2a3746..e4bb2814d8 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/test.js +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone-stats/test.js @@ -1,36 +1,36 @@ -var test = require('tape') -var clone = require('./') -var fs = require('fs') - -test('file', function(t) { - compare(t, fs.statSync(__filename)) - t.end() -}) - -test('directory', function(t) { - compare(t, fs.statSync(__dirname)) - t.end() -}) - -function compare(t, stat) { - var copy = clone(stat) - - t.deepEqual(stat, copy, 'clone has equal properties') - t.ok(stat instanceof fs.Stats, 'original is an fs.Stat') - t.ok(copy instanceof fs.Stats, 'copy is an fs.Stat') - - ;['isDirectory' - , 'isFile' - , 'isBlockDevice' - , 'isCharacterDevice' - , 'isSymbolicLink' - , 'isFIFO' - , 'isSocket' - ].forEach(function(method) { - t.equal( - stat[method].call(stat) - , copy[method].call(copy) - , 'equal value for stat.' + method + '()' - ) - }) -} +var test = require('tape') +var clone = require('./') +var fs = require('fs') + +test('file', function(t) { + compare(t, fs.statSync(__filename)) + t.end() +}) + +test('directory', function(t) { + compare(t, fs.statSync(__dirname)) + t.end() +}) + +function compare(t, stat) { + var copy = clone(stat) + + t.deepEqual(stat, copy, 'clone has equal properties') + t.ok(stat instanceof fs.Stats, 'original is an fs.Stat') + t.ok(copy instanceof fs.Stats, 'copy is an fs.Stat') + + ;['isDirectory' + , 'isFile' + , 'isBlockDevice' + , 'isCharacterDevice' + , 'isSymbolicLink' + , 'isFIFO' + , 'isSocket' + ].forEach(function(method) { + t.equal( + stat[method].call(stat) + , copy[method].call(copy) + , 'equal value for stat.' + method + '()' + ) + }) +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.npmignore b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.npmignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.travis.yml b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.travis.yml new file mode 100644 index 0000000000..58f23716ae --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.10 diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/LICENSE b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/LICENSE new file mode 100644 index 0000000000..fc808cce89 --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/LICENSE @@ -0,0 +1,18 @@ +Copyright © 2011-2014 Paul Vorbach + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/README.md b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/README.md new file mode 100644 index 0000000000..d7231cfca7 --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/README.md @@ -0,0 +1,126 @@ +# clone + +[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) + +offers foolproof _deep cloning_ of variables in JavaScript. + + +## Installation + + npm install clone + +or + + ender build clone + + +## Example + +~~~ javascript +var clone = require('clone'); + +var a, b; + +a = { foo: { bar: 'baz' } }; // initial value of a + +b = clone(a); // clone a -> b +a.foo.bar = 'foo'; // change a + +console.log(a); // show a +console.log(b); // show b +~~~ + +This will print: + +~~~ javascript +{ foo: { bar: 'foo' } } +{ foo: { bar: 'baz' } } +~~~ + +**clone** masters cloning simple objects (even with custom prototype), arrays, +Date objects, and RegExp objects. Everything is cloned recursively, so that you +can clone dates in arrays in objects, for example. + + +## API + +`clone(val, circular, depth)` + + * `val` -- the value that you want to clone, any type allowed + * `circular` -- boolean + + Call `clone` with `circular` set to `false` if you are certain that `obj` + contains no circular references. This will give better performance if needed. + There is no error if `undefined` or `null` is passed as `obj`. + * `depth` -- depth to which the object is to be cloned (optional, + defaults to infinity) + +`clone.clonePrototype(obj)` + + * `obj` -- the object that you want to clone + +Does a prototype clone as +[described by Oran Looney](http://oranlooney.com/functional-javascript/). + + +## Circular References + +~~~ javascript +var a, b; + +a = { hello: 'world' }; + +a.myself = a; +b = clone(a); + +console.log(b); +~~~ + +This will print: + +~~~ javascript +{ hello: "world", myself: [Circular] } +~~~ + +So, `b.myself` points to `b`, not `a`. Neat! + + +## Test + + npm test + + +## Caveat + +Some special objects like a socket or `process.stdout`/`stderr` are known to not +be cloneable. If you find other objects that cannot be cloned, please [open an +issue](https://github.com/pvorb/node-clone/issues/new). + + +## Bugs and Issues + +If you encounter any bugs or issues, feel free to [open an issue at +github](https://github.com/pvorb/node-clone/issues) or send me an email to +. I also always like to hear from you, if you’re using my code. + +## License + +Copyright © 2011-2014 [Paul Vorbach](http://paul.vorba.ch/) and +[contributors](https://github.com/pvorb/node-clone/graphs/contributors). + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/clone.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/clone.js new file mode 100644 index 0000000000..f8fa3159a7 --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/clone.js @@ -0,0 +1,144 @@ +'use strict'; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +// shim for Node's 'util' package +// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). +var util = { + isArray: function (ar) { + return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); + }, + isDate: function (d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; + }, + isRegExp: function (re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; + }, + getRegExpFlags: function (re) { + var flags = ''; + re.global && (flags += 'g'); + re.ignoreCase && (flags += 'i'); + re.multiline && (flags += 'm'); + return flags; + } +}; + + +if (typeof module === 'object') + module.exports = clone; + +/** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). +*/ + +function clone(parent, circular, depth, prototype) { + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth == 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (util.isArray(parent)) { + child = []; + } else if (util.isRegExp(parent)) { + child = new RegExp(parent.source, util.getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (util.isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + child = new Buffer(parent.length); + parent.copy(child); + return child; + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + for (var i in parent) { + var attrs; + if (proto) { + attrs = Object.getOwnPropertyDescriptor(proto, i); + } + + if (attrs && attrs.set == null) { + continue; + } + child[i] = _clone(parent[i], depth - 1); + } + + return child; + } + + return _clone(parent, depth); +} + +/** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ +clone.clonePrototype = function(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); +}; diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json new file mode 100644 index 0000000000..94633177fe --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/package.json @@ -0,0 +1,127 @@ +{ + "name": "clone", + "description": "deep cloning of objects and arrays", + "tags": [ + "clone", + "object", + "array", + "function", + "date" + ], + "version": "0.2.0", + "repository": { + "type": "git", + "url": "git://github.com/pvorb/node-clone.git" + }, + "bugs": { + "url": "https://github.com/pvorb/node-clone/issues" + }, + "main": "clone.js", + "author": { + "name": "Paul Vorbach", + "email": "paul@vorba.ch", + "url": "http://paul.vorba.ch/" + }, + "contributors": [ + { + "name": "Blake Miner", + "email": "miner.blake@gmail.com", + "url": "http://www.blakeminer.com/" + }, + { + "name": "Tian You", + "email": "axqd001@gmail.com", + "url": "http://blog.axqd.net/" + }, + { + "name": "George Stagas", + "email": "gstagas@gmail.com", + "url": "http://stagas.com/" + }, + { + "name": "Tobiasz Cudnik", + "email": "tobiasz.cudnik@gmail.com", + "url": "https://github.com/TobiaszCudnik" + }, + { + "name": "Pavel Lang", + "email": "langpavel@phpskelet.org", + "url": "https://github.com/langpavel" + }, + { + "name": "Dan MacTough", + "url": "http://yabfog.com/" + }, + { + "name": "w1nk", + "url": "https://github.com/w1nk" + }, + { + "name": "Hugh Kennedy", + "url": "http://twitter.com/hughskennedy" + }, + { + "name": "Dustin Diaz", + "url": "http://dustindiaz.com" + }, + { + "name": "Ilya Shaisultanov", + "url": "https://github.com/diversario" + }, + { + "name": "Nathan MacInnes", + "email": "nathan@macinn.es", + "url": "http://macinn.es/" + }, + { + "name": "Benjamin E. Coe", + "email": "ben@npmjs.com", + "url": "https://twitter.com/benjamincoe" + }, + { + "name": "Nathan Zadoks", + "url": "https://github.com/nathan7" + }, + { + "name": "Róbert Oroszi", + "email": "robert+gh@oroszi.net", + "url": "https://github.com/oroce" + } + ], + "license": "MIT", + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": { + "underscore": "*", + "nodeunit": "*" + }, + "optionalDependencies": {}, + "scripts": { + "test": "nodeunit test.js" + }, + "gitHead": "bb11a43363a0f69e8ac014cb5376ce215ea1f8fd", + "homepage": "https://github.com/pvorb/node-clone", + "_id": "clone@0.2.0", + "_shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", + "_from": "clone@>=0.2.0 <0.3.0", + "_npmVersion": "1.4.14", + "_npmUser": { + "name": "pvorb", + "email": "paul@vorba.ch" + }, + "maintainers": [ + { + "name": "pvorb", + "email": "paul@vorb.de" + } + ], + "dist": { + "shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", + "tarball": "http://registry.npmjs.org/clone/-/clone-0.2.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/test.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/test.js new file mode 100644 index 0000000000..cb3d16631a --- /dev/null +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/node_modules/clone/test.js @@ -0,0 +1,289 @@ +if(module.parent === null) { + console.log('Run this test file with nodeunit:'); + console.log('$ nodeunit test.js'); +} + + +var clone = require('./'); +var util = require('util'); +var _ = require('underscore'); + + + +exports["clone string"] = function(test) { + test.expect(2); // how many tests? + + var a = "foo"; + test.strictEqual(clone(a), a); + a = ""; + test.strictEqual(clone(a), a); + + test.done(); +}; + + + +exports["clone number"] = function(test) { + test.expect(5); // how many tests? + + var a = 0; + test.strictEqual(clone(a), a); + a = 1; + test.strictEqual(clone(a), a); + a = -1000; + test.strictEqual(clone(a), a); + a = 3.1415927; + test.strictEqual(clone(a), a); + a = -3.1415927; + test.strictEqual(clone(a), a); + + test.done(); +}; + + + +exports["clone date"] = function(test) { + test.expect(3); // how many tests? + + var a = new Date; + var c = clone(a); + test.ok(a instanceof Date); + test.ok(c instanceof Date); + test.equal(c.getTime(), a.getTime()); + + test.done(); +}; + + + +exports["clone object"] = function(test) { + test.expect(2); // how many tests? + + var a = { foo: { bar: "baz" } }; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + + + +exports["clone array"] = function(test) { + test.expect(2); // how many tests? + + var a = [ + { foo: "bar" }, + "baz" + ]; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + +exports["clone buffer"] = function(test) { + test.expect(1); + + var a = new Buffer("this is a test buffer"); + var b = clone(a); + + // no underscore equal since it has no concept of Buffers + test.deepEqual(b, a); + test.done(); +}; + + + +exports["clone regexp"] = function(test) { + test.expect(5); + + var a = /abc123/gi; + var b = clone(a); + + test.deepEqual(b, a); + + var c = /a/g; + test.ok(c.lastIndex === 0); + + c.exec('123a456a'); + test.ok(c.lastIndex === 4); + + var d = clone(c); + test.ok(d.global); + test.ok(d.lastIndex === 4); + + test.done(); +}; + + +exports["clone object containing array"] = function(test) { + test.expect(2); // how many tests? + + var a = { + arr1: [ { a: '1234', b: '2345' } ], + arr2: [ { c: '345', d: '456' } ] + }; + var b = clone(a); + + test.ok(_(a).isEqual(b), "underscore equal"); + test.deepEqual(b, a); + + test.done(); +}; + + + +exports["clone object with circular reference"] = function(test) { + test.expect(8); // how many tests? + + var _ = test.ok; + var c = [1, "foo", {'hello': 'bar'}, function() {}, false, [2]]; + var b = [c, 2, 3, 4]; + var a = {'b': b, 'c': c}; + a.loop = a; + a.loop2 = a; + c.loop = c; + c.aloop = a; + var aCopy = clone(a); + _(a != aCopy); + _(a.c != aCopy.c); + _(aCopy.c == aCopy.b[0]); + _(aCopy.c.loop.loop.aloop == aCopy); + _(aCopy.c[0] == a.c[0]); + + //console.log(util.inspect(aCopy, true, null) ); + //console.log("------------------------------------------------------------"); + //console.log(util.inspect(a, true, null) ); + _(eq(a, aCopy)); + aCopy.c[0] = 2; + _(!eq(a, aCopy)); + aCopy.c = "2"; + _(!eq(a, aCopy)); + //console.log("------------------------------------------------------------"); + //console.log(util.inspect(aCopy, true, null) ); + + function eq(x, y) { + return util.inspect(x, true, null) === util.inspect(y, true, null); + } + + test.done(); +}; + + + +exports['clonePrototype'] = function(test) { + test.expect(3); // how many tests? + + var a = { + a: "aaa", + x: 123, + y: 45.65 + }; + var b = clone.clonePrototype(a); + + test.strictEqual(b.a, a.a); + test.strictEqual(b.x, a.x); + test.strictEqual(b.y, a.y); + + test.done(); +} + +exports['cloneWithinNewVMContext'] = function(test) { + test.expect(3); + var vm = require('vm'); + var ctx = vm.createContext({ clone: clone }); + var script = "clone( {array: [1, 2, 3], date: new Date(), regex: /^foo$/ig} );"; + var results = vm.runInContext(script, ctx); + test.ok(results.array instanceof Array); + test.ok(results.date instanceof Date); + test.ok(results.regex instanceof RegExp); + test.done(); +} + +exports['cloneObjectWithNoConstructor'] = function(test) { + test.expect(3); + var n = null; + var a = { foo: 'bar' }; + a.__proto__ = n; + test.ok(typeof a === 'object'); + test.ok(typeof a !== null); + var b = clone(a); + test.ok(a.foo, b.foo); + test.done(); +} + +exports['clone object with depth argument'] = function (test) { + test.expect(6); + var a = { + foo: { + bar : { + baz : 'qux' + } + } + }; + var b = clone(a, false, 1); + test.deepEqual(b, a); + test.notEqual(b, a); + test.strictEqual(b.foo, a.foo); + + b = clone(a, true, 2); + test.deepEqual(b, a); + test.notEqual(b.foo, a.foo); + test.strictEqual(b.foo.bar, a.foo.bar); + test.done(); +} + +exports['maintain prototype chain in clones'] = function (test) { + test.expect(1); + function Constructor() {} + var a = new Constructor(); + var b = clone(a); + test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); + test.done(); +} + +exports['parent prototype is overriden with prototype provided'] = function (test) { + test.expect(1); + function Constructor() {} + var a = new Constructor(); + var b = clone(a, true, Infinity, null); + test.strictEqual(b.__defineSetter__, undefined); + test.done(); +} + +exports['clone object with null children'] = function(test) { + test.expect(1); + var a = { + foo: { + bar: null, + baz: { + qux: false + } + } + }; + var b = clone(a); + test.deepEqual(b, a); + test.done(); +} + +exports['clone instance with getter'] = function(test) { + test.expect(1); + function Ctor() {}; + Object.defineProperty(Ctor.prototype, 'prop', { + configurable: true, + enumerable: true, + get: function() { + return 'value'; + } + }); + + var a = new Ctor(); + var b = clone(a); + + test.strictEqual(b.prop, 'value'); + test.done(); +}; \ No newline at end of file diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/package.json b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/package.json index 364e495d4e..c94ac8ef65 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/package.json +++ b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/package.json @@ -1,69 +1,75 @@ -{ - "name": "vinyl", - "description": "A virtual file format", - "version": "0.4.3", - "homepage": "http://github.com/wearefractal/vinyl", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "author": { - "name": "Fractal", - "email": "contact@wearefractal.com", - "url": "http://wearefractal.com/" - }, - "main": "./index.js", - "dependencies": { - "clone-stats": "^0.0.1", - "lodash": "^2.4.1" - }, - "devDependencies": { - "mocha": "^1.17.0", - "should": "^4.0.4", - "mocha-lcov-reporter": "^0.0.1", - "coveralls": "^2.6.1", - "istanbul": "^0.3.0", - "rimraf": "^2.2.5", - "jshint": "^2.4.1", - "buffer-equal": "0.0.1", - "lodash.templatesettings": "^2.4.1", - "event-stream": "^3.1.0" - }, - "scripts": { - "test": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter spec && jshint .", - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" - }, - "engines": { - "node": ">= 0.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "gitHead": "6eae432519b007c313a8df83b093adfb97a2944c", - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "_id": "vinyl@0.4.3", - "_shasum": "19f61a1b28e72b4c50697889dbe91d7503943ecf", - "_from": "vinyl@^0.4.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "fractal", - "email": "contact@wearefractal.com" - }, - "maintainers": [ - { - "name": "fractal", - "email": "contact@wearefractal.com" - } - ], - "dist": { - "shasum": "19f61a1b28e72b4c50697889dbe91d7503943ecf", - "tarball": "http://registry.npmjs.org/vinyl/-/vinyl-0.4.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.3.tgz" -} +{ + "name": "vinyl", + "description": "A virtual file format", + "version": "0.4.6", + "homepage": "http://github.com/wearefractal/vinyl", + "repository": { + "type": "git", + "url": "git://github.com/wearefractal/vinyl.git" + }, + "author": { + "name": "Fractal", + "email": "contact@wearefractal.com", + "url": "http://wearefractal.com/" + }, + "main": "./index.js", + "files": [ + "index.js", + "lib" + ], + "dependencies": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + }, + "devDependencies": { + "mocha": "^2.0.0", + "should": "^4.0.4", + "mocha-lcov-reporter": "^0.0.1", + "coveralls": "^2.6.1", + "istanbul": "^0.3.0", + "rimraf": "^2.2.5", + "jshint": "^2.4.1", + "buffer-equal": "0.0.1", + "lodash.templatesettings": "^2.4.1", + "event-stream": "^3.1.0" + }, + "scripts": { + "test": "mocha --reporter spec && jshint lib", + "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engines": { + "node": ">= 0.9" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" + } + ], + "gitHead": "8255a5f1de7fecb1cd5e7ba7ac1ec997395f6be1", + "bugs": { + "url": "https://github.com/wearefractal/vinyl/issues" + }, + "_id": "vinyl@0.4.6", + "_shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", + "_from": "vinyl@>=0.4.3 <0.5.0", + "_npmVersion": "2.1.6", + "_nodeVersion": "0.10.33", + "_npmUser": { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + "maintainers": [ + { + "name": "fractal", + "email": "contact@wearefractal.com" + } + ], + "dist": { + "shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", + "tarball": "http://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/perf/clone.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/perf/clone.js deleted file mode 100644 index f51d7f72d5..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/perf/clone.js +++ /dev/null @@ -1,59 +0,0 @@ -var File = require('../'); - -var contents = new Buffer('blah blah blah'); - -var originalFile = new File({ - path: 'yo.coffee', - contents: contents -}); - -// simulate some history -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; -originalFile.path = 'yo.js'; - -originalFile.ast = { - a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { -a: { - b: { - c: { - - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } -}; - -for (var i = 0; i < 10000; i++) { - originalFile.clone(true).ast; -} \ No newline at end of file diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/File.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/File.js deleted file mode 100644 index 0eb97765c9..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/File.js +++ /dev/null @@ -1,753 +0,0 @@ -var Stream = require('stream'); -var fs = require('fs'); -var path = require('path'); -var es = require('event-stream'); -var File = require('../'); - -var should = require('should'); -require('mocha'); - -describe('File', function() { - describe('constructor()', function() { - it('should default cwd to process.cwd', function(done) { - var file = new File(); - file.cwd.should.equal(process.cwd()); - done(); - }); - - it('should default base to cwd', function(done) { - var cwd = '/'; - var file = new File({cwd: cwd}); - file.base.should.equal(cwd); - done(); - }); - - it('should default base to cwd even when none is given', function(done) { - var file = new File(); - file.base.should.equal(process.cwd()); - done(); - }); - - it('should default path to null', function(done) { - var file = new File(); - should.not.exist(file.path); - done(); - }); - - it('should default history to []', function(done) { - var file = new File(); - file.history.should.eql([]); - done(); - }); - - it('should default stat to null', function(done) { - var file = new File(); - should.not.exist(file.stat); - done(); - }); - - it('should default contents to null', function(done) { - var file = new File(); - should.not.exist(file.contents); - done(); - }); - - it('should set base to given value', function(done) { - var val = '/'; - var file = new File({base: val}); - file.base.should.equal(val); - done(); - }); - - it('should set cwd to given value', function(done) { - var val = '/'; - var file = new File({cwd: val}); - file.cwd.should.equal(val); - done(); - }); - - it('should set path to given value', function(done) { - var val = '/test.coffee'; - var file = new File({path: val}); - file.path.should.equal(val); - file.history.should.eql([val]); - done(); - }); - - it('should set history to given value', function(done) { - var val = '/test.coffee'; - var file = new File({history: [val]}); - file.path.should.equal(val); - file.history.should.eql([val]); - done(); - }); - - it('should set stat to given value', function(done) { - var val = {}; - var file = new File({stat: val}); - file.stat.should.equal(val); - done(); - }); - - it('should set contents to given value', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.contents.should.equal(val); - done(); - }); - }); - - describe('isBuffer()', function() { - it('should return true when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isBuffer().should.equal(true); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isBuffer().should.equal(false); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isBuffer().should.equal(false); - done(); - }); - }); - - describe('isStream()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isStream().should.equal(false); - done(); - }); - - it('should return true when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isStream().should.equal(true); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isStream().should.equal(false); - done(); - }); - }); - - describe('isNull()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isNull().should.equal(true); - done(); - }); - }); - - describe('isDirectory()', function() { - var fakeStat = { - isDirectory: function() { - return true; - } - }; - - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer('test'); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null, stat: fakeStat}); - file.isDirectory().should.equal(true); - done(); - }); - }); - - describe('clone()', function() { - it('should copy all attributes over with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.not.equal(file.contents, 'buffer ref should be different'); - file2.contents.toString('utf8').should.equal(file.contents.toString('utf8')); - done(); - }); - - it('should copy buffer\'s reference with option contents: false', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test') - }; - - var file = new File(options); - - var copy1 = file.clone({ contents: false }); - copy1.contents.should.equal(file.contents); - - var copy2 = file.clone({}); - copy2.contents.should.not.equal(file.contents); - - var copy3 = file.clone({ contents: 'any string' }); - copy3.contents.should.not.equal(file.contents); - - done(); - }); - - it('should copy all attributes over with Stream', function(done) { - var contents = new Stream.PassThrough(); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: contents - }; - var file = new File(options); - var file2 = file.clone(); - - contents.write(new Buffer('wa')); - - process.nextTick(function() { - contents.write(new Buffer('dup')); - contents.end(); - }); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.not.equal(file.contents, 'stream ref should not be the same'); - file.contents.pipe(es.wait(function(err, data) { - file2.contents.pipe(es.wait(function(err, data2) { - data2.should.not.equal(data, 'stream contents ref should not be the same'); - data2.should.eql(data, 'stream contents should be the same'); - })); - })); - done(); - }); - - it('should copy all attributes over with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - should.not.exist(file2.contents); - done(); - }); - - it('should properly clone the `stat` property', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test'), - stat: fs.statSync(__filename) - }; - - var file = new File(options); - var copy = file.clone(); - - copy.stat.isFile().should.equal(true); - copy.stat.isDirectory().should.equal(false); - should(file.stat instanceof fs.Stats).equal(true); - should(copy.stat instanceof fs.Stats).equal(true); - - done(); - }); - - it('should properly clone the `history` property', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.js', - contents: new Buffer('test'), - stat: fs.statSync(__filename) - }; - - var file = new File(options); - var copy = file.clone(); - - copy.history[0].should.equal(options.path); - copy.path = 'lol'; - file.path.should.not.equal(copy.path); - done(); - }); - - it('should copy custom properties', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.custom = { a: 'custom property' }; - - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.custom.should.equal(file.custom); - file2.custom.a.should.equal(file.custom.a); - - done(); - }); - - it('should copy history', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.path = '/test/test.js'; - file.path = '/test/test-938di2s.js'; - var file2 = file.clone(); - - file2.history.should.eql([ - '/test/test.coffee', - '/test/test.js', - '/test/test-938di2s.js' - ]); - file2.history.should.not.equal([ - '/test/test.coffee', - '/test/test.js', - '/test/test-938di2s.js' - ]); - file2.path.should.eql('/test/test-938di2s.js'); - - done(); - }); - - it('should copy all attributes deeply', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - - var file = new File(options); - file.custom = { a: 'custom property' }; - - var file2 = file.clone(true); - file2.custom.should.eql(file.custom); - file2.custom.should.not.equal(file.custom); - file2.custom.a.should.equal(file.custom.a); - - var file3 = file.clone({ deep: true }); - file3.custom.should.eql(file.custom); - file3.custom.should.not.equal(file.custom); - file3.custom.a.should.equal(file.custom.a); - - var file4 = file.clone(false); - file4.custom.should.eql(file.custom); - file4.custom.should.equal(file.custom); - file4.custom.a.should.equal(file.custom.a); - - var file5 = file.clone({ deep: false }); - file5.custom.should.eql(file.custom); - file5.custom.should.equal(file.custom); - file5.custom.a.should.equal(file.custom.a); - - done(); - }); - }); - - describe('pipe()', function() { - it('should write to stream with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - }); - stream.on('end', function() { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer('test'); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function() { - throw new Error('should not write'); - }); - stream.on('end', function() { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should write to stream with Buffer', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Buffer('test') - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - done(); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer('test'); - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function() { - throw new Error('should not write'); - }); - stream.on('end', function() { - throw new Error('should not end'); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - process.nextTick(done); - }); - }); - - describe('inspect()', function() { - it('should return correct format when no contents and no path', function(done) { - var file = new File(); - file.inspect().should.equal(''); - done(); - }); - - it('should return correct format when Buffer and no path', function(done) { - var val = new Buffer('test'); - var file = new File({ - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and relative path', function(done) { - var val = new Buffer('test'); - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and only path and no base', function(done) { - var val = new Buffer('test'); - var file = new File({ - cwd: '/', - path: '/test/test.coffee', - contents: val - }); - delete file.base; - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Stream and relative path', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: new Stream.PassThrough() - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when null and relative path', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee', - contents: null - }); - file.inspect().should.equal(''); - done(); - }); - }); - - describe('contents get/set', function() { - it('should work with Buffer', function(done) { - var val = new Buffer('test'); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with Stream', function(done) { - var val = new Stream.PassThrough(); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with null', function(done) { - var val = null; - var file = new File(); - file.contents = val; - (file.contents === null).should.equal(true); - done(); - }); - - it('should not work with string', function(done) { - var val = 'test'; - var file = new File(); - try { - file.contents = val; - } catch (err) { - should.exist(err); - done(); - } - }); - }); - - describe('relative get/set', function() { - it('should error on set', function(done) { - var file = new File(); - try { - file.relative = 'test'; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no base', function(done) { - var a; - var file = new File(); - delete file.base; - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no path', function(done) { - var a; - var file = new File(); - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should return a relative path from base', function(done) { - var file = new File({ - cwd: '/', - base: '/test/', - path: '/test/test.coffee' - }); - file.relative.should.equal('test.coffee'); - done(); - }); - - it('should return a relative path from cwd', function(done) { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - file.relative.should.equal(path.join('test','test.coffee')); - done(); - }); - }); - - describe('path get/set', function() { - - it('should record history when instantiation', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - }); - - it('should record history when path change', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path = '/test/test.js'; - file.path.should.eql('/test/test.js'); - file.history.should.eql(['/test/test.coffee', '/test/test.js']); - - file.path = '/test/test.coffee'; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee', '/test/test.js', '/test/test.coffee']); - }); - - it('should not record history when set the same path', function() { - var file = new File({ - cwd: '/', - path: '/test/test.coffee' - }); - - file.path = '/test/test.coffee'; - file.path = '/test/test.coffee'; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - - // ignore when set empty string - file.path = ''; - file.path.should.eql('/test/test.coffee'); - file.history.should.eql(['/test/test.coffee']); - }); - - it('should throw when set path null', function() { - var file = new File({ - cwd: '/', - path: null - }); - - should.not.exist(file.path); - file.history.should.eql([]); - - (function() { - file.path = null; - }).should.throw('path should be string'); - }); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/cloneBuffer.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/cloneBuffer.js deleted file mode 100644 index 31f30fe8ac..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/cloneBuffer.js +++ /dev/null @@ -1,27 +0,0 @@ -var cloneBuffer = require('../lib/cloneBuffer'); -var should = require('should'); -require('mocha'); - -describe('cloneBuffer()', function() { - it('should return a new Buffer reference', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - should.exist(testBuffer2, 'should return something'); - (testBuffer2 instanceof Buffer).should.equal(true, 'should return a Buffer'); - testBuffer2.should.not.equal(testBuffer, 'pointer should change'); - done(); - }); - - it('should not replicate modifications to the original buffer', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - // test that changes dont modify both pointers - testBuffer2.write('w'); - - testBuffer.toString('utf8').should.equal('test', 'original should stay the same'); - testBuffer2.toString('utf8').should.equal('west', 'new buffer should be modified'); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/inspectStream.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/inspectStream.js deleted file mode 100644 index 4bef458ae6..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/inspectStream.js +++ /dev/null @@ -1,53 +0,0 @@ -var inspectStream = require('../lib/inspectStream'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('inspectStream()', function() { - it('should work on a core Stream', function(done) { - var testStream = new Stream(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Readable Stream', function(done) { - var testStream = new Stream.Readable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Writable Stream', function(done) { - var testStream = new Stream.Writable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Duplex Stream', function(done) { - var testStream = new Stream.Duplex(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Transform Stream', function(done) { - var testStream = new Stream.Transform(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core PassThrough Stream', function(done) { - var testStream = new Stream.PassThrough(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should not work on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - should.not.exist(inspectStream(testBuffer)); - done(); - }); - - it('should not work on a null', function(done) { - should.not.exist(inspectStream(null)); - done(); - }); -}); \ No newline at end of file diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isBuffer.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isBuffer.js deleted file mode 100644 index 6796844e9a..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isBuffer.js +++ /dev/null @@ -1,29 +0,0 @@ -var isBuffer = require('../lib/isBuffer'); -var Stream = require('stream'); -require('should'); -require('mocha'); - -describe('isBuffer()', function() { - it('should return true on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isBuffer(testBuffer).should.equal(true); - done(); - }); - - it('should return false on a Stream', function(done) { - var testStream = new Stream(); - isBuffer(testStream).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isBuffer(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isBuffer(testArray).should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isNull.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isNull.js deleted file mode 100644 index 7e741f706d..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isNull.js +++ /dev/null @@ -1,22 +0,0 @@ -var isNull = require('../lib/isNull'); -require('should'); -require('mocha'); - -describe('isNull()', function() { - it('should return true on null', function(done) { - isNull(null).should.equal(true); - done(); - }); - - it('should return false on undefined', function(done) { - isNull().should.equal(false); - isNull(undefined).should.equal(false); - done(); - }); - - it('should return false on defined values', function(done) { - isNull(1).should.equal(false); - isNull('test').should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isStream.js b/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isStream.js deleted file mode 100644 index be033352b9..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/node_modules/vinyl/test/isStream.js +++ /dev/null @@ -1,29 +0,0 @@ -var isStream = require('../lib/isStream'); -var Stream = require('stream'); -require('should'); -require('mocha'); - -describe('isStream()', function() { - it('should return true on a Stream', function(done) { - var testStream = new Stream(); - isStream(testStream).should.equal(true); - done(); - }); - - it('should return false on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isStream(testBuffer).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isStream(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isStream(testArray).should.equal(false); - done(); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/package.json b/node_modules/gulp/node_modules/vinyl-fs/package.json index 0702e2bcb2..2edec22f59 100644 --- a/node_modules/gulp/node_modules/vinyl-fs/package.json +++ b/node_modules/gulp/node_modules/vinyl-fs/package.json @@ -1,76 +1,81 @@ -{ - "name": "vinyl-fs", - "description": "Vinyl adapter for the file system", - "version": "0.3.10", - "homepage": "http://github.com/wearefractal/vinyl-fs", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl-fs.git" - }, - "author": { - "name": "Fractal", - "email": "contact@wearefractal.com", - "url": "http://wearefractal.com/" - }, - "main": "./index.js", - "dependencies": { - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "lodash": "^2.4.1", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "devDependencies": { - "buffer-equal": "^0.0.1", - "coveralls": "^2.6.1", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "rimraf": "^2.2.5", - "should": "^4.0.0", - "sinon": "^1.10.3" - }, - "scripts": { - "test": "mocha --reporter spec && jshint lib", - "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" - }, - "engines": { - "node": ">= 0.10" - }, - "engineStrict": true, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl-fs/raw/master/LICENSE" - } - ], - "gitHead": "c6e7433a93d052905611680dc3f6f87c8e629376", - "bugs": { - "url": "https://github.com/wearefractal/vinyl-fs/issues" - }, - "_id": "vinyl-fs@0.3.10", - "_shasum": "f59ac977cb040e95df865ad34cdeb00f57f31f47", - "_from": "vinyl-fs@^0.3.0", - "_npmVersion": "2.1.4", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "fractal", - "email": "contact@wearefractal.com" - }, - "maintainers": [ - { - "name": "fractal", - "email": "contact@wearefractal.com" - } - ], - "dist": { - "shasum": "f59ac977cb040e95df865ad34cdeb00f57f31f47", - "tarball": "http://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.10.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.10.tgz" -} +{ + "name": "vinyl-fs", + "description": "Vinyl adapter for the file system", + "version": "0.3.13", + "homepage": "http://github.com/wearefractal/vinyl-fs", + "repository": { + "type": "git", + "url": "git://github.com/wearefractal/vinyl-fs.git" + }, + "author": { + "name": "Fractal", + "email": "contact@wearefractal.com", + "url": "http://wearefractal.com/" + }, + "main": "./index.js", + "files": [ + "index.js", + "lib" + ], + "dependencies": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "devDependencies": { + "buffer-equal": "^0.0.1", + "coveralls": "^2.6.1", + "istanbul": "^0.3.0", + "jshint": "^2.4.1", + "mocha": "^2.0.0", + "mocha-lcov-reporter": "^0.0.1", + "rimraf": "^2.2.5", + "should": "^4.0.0", + "sinon": "^1.10.3" + }, + "scripts": { + "test": "mocha --reporter spec && jshint lib", + "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engines": { + "node": ">= 0.10" + }, + "engineStrict": true, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/vinyl-fs/raw/master/LICENSE" + } + ], + "gitHead": "315e76a248e9d150f228e4ef50b61de15dc55123", + "bugs": { + "url": "https://github.com/wearefractal/vinyl-fs/issues" + }, + "_id": "vinyl-fs@0.3.13", + "_shasum": "3d384c5b3032e356cd388023e3a085303382ac23", + "_from": "vinyl-fs@>=0.3.0 <0.4.0", + "_npmVersion": "2.1.6", + "_nodeVersion": "0.10.33", + "_npmUser": { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + "maintainers": [ + { + "name": "fractal", + "email": "contact@wearefractal.com" + } + ], + "dist": { + "shasum": "3d384c5b3032e356cd388023e3a085303382ac23", + "tarball": "http://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.13.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.13.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/gulp/node_modules/vinyl-fs/test/dest.js b/node_modules/gulp/node_modules/vinyl-fs/test/dest.js deleted file mode 100644 index 4d86326c5d..0000000000 --- a/node_modules/gulp/node_modules/vinyl-fs/test/dest.js +++ /dev/null @@ -1,631 +0,0 @@ -var spies = require('./spy'); -var chmodSpy = spies.chmodSpy; -var statSpy = spies.statSpy; - -var vfs = require('../'); - -var path = require('path'); -var fs = require('graceful-fs'); -var rimraf = require('rimraf'); - -var bufEqual = require('buffer-equal'); -var through = require('through2'); -var File = require('vinyl'); - -var should = require('should'); -require('mocha'); - -var wipeOut = function(cb) { - rimraf(path.join(__dirname, './out-fixtures/'), cb); - spies.setError('false'); - statSpy.reset(); - chmodSpy.reset(); -}; - -var dataWrap = function(fn) { - return function(data, enc, cb) { - fn(data); - cb(); - }; -}; - -var realMode = function(n) { - return n & 07777; -}; - -describe('dest stream', function() { - beforeEach(wipeOut); - afterEach(wipeOut); - - it('should explode on invalid folder', function(done) { - var stream; - try { - stream = gulp.dest(); - } catch (err) { - should.exist(err); - should.not.exist(stream); - done(); - } - }); - - it('should pass through writes with cwd', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - - var expectedFile = new File({ - base: __dirname, - cwd: __dirname, - path: inputPath, - contents: null - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should pass through writes with default cwd', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - - var expectedFile = new File({ - base: __dirname, - cwd: __dirname, - path: inputPath, - contents: null - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - done(); - }; - - var stream = vfs.dest(path.join(__dirname, './out-fixtures/')); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should not write null files', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: null - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(false); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should write buffer files to the right folder with relative cwd', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedContents = fs.readFileSync(inputPath); - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(true); - bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: path.relative(process.cwd(), __dirname)}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should write buffer files to the right folder with function and relative cwd', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedContents = fs.readFileSync(inputPath); - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(true); - bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true); - done(); - }; - - var stream = vfs.dest(function(file){ - should.exist(file); - file.should.equal(expectedFile); - return './out-fixtures'; - }, {cwd: path.relative(process.cwd(), __dirname)}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should write buffer files to the right folder', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0655; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(true); - bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true); - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should write streaming files to the right folder', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0655; - - var contentStream = through.obj(); - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: contentStream, - stat: { - mode: expectedMode - } - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(true); - bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true); - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - setTimeout(function(){ - contentStream.write(expectedContents); - contentStream.end(); - }, 100); - stream.end(); - }); - - it('should write directories to the right folder', function(done) { - var inputPath = path.join(__dirname, './fixtures/test'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test'); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0655; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: null, - stat: { - isDirectory: function(){ - return true; - }, - mode: expectedMode - } - }); - - var onEnd = function(){ - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - fs.existsSync(expectedPath).should.equal(true); - fs.lstatSync(expectedPath).isDirectory().should.equal(true); - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should allow piping multiple dests in streaming mode', function(done) { - var inputPath1 = path.join(__dirname, './out-fixtures/multiple-first'); - var inputPath2 = path.join(__dirname, './out-fixtures/multiple-second'); - var inputBase = path.join(__dirname, './out-fixtures/'); - var srcPath = path.join(__dirname, './fixtures/test.coffee'); - var stream1 = vfs.dest('./out-fixtures/', {cwd: __dirname}); - var stream2 = vfs.dest('./out-fixtures/', {cwd: __dirname}); - var content = fs.readFileSync(srcPath); - var rename = through.obj(function(file, _, next) { - file.path = inputPath2; - this.push(file); - next(); - }); - - stream1.on('data', function(file) { - file.path.should.equal(inputPath1); - }) - - stream1.pipe(rename).pipe(stream2); - stream2.on('data', function(file) { - file.path.should.equal(inputPath2); - }).once('end', function() { - fs.readFileSync(inputPath1, 'utf8').should.equal(content.toString()); - fs.readFileSync(inputPath2, 'utf8').should.equal(content.toString()); - done(); - }); - - var file = new File({ - base: inputBase, - path: inputPath1, - cwd: __dirname, - contents: content - }) - - stream1.write(file); - stream1.end(); - }); - - it('should update file mode to match the vinyl mode', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var startMode = 0655; - var expectedMode = 0722; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - var onEnd = function(){ - should(chmodSpy.called).be.ok; - buffered.length.should.equal(1); - buffered[0].should.equal(expectedFile); - fs.existsSync(expectedPath).should.equal(true); - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - fs.mkdirSync(expectedBase); - fs.closeSync(fs.openSync(expectedPath, 'w')); - fs.chmodSync(expectedPath, startMode); - - chmodSpy.reset(); - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - it('should update directory mode to match the vinyl mode', function(done) { - var inputBase = path.join(__dirname, './fixtures/'); - var inputPath = path.join(__dirname, './fixtures/wow'); - var expectedPath = path.join(__dirname, './out-fixtures/wow'); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - - var firstFile = new File({ - base: inputBase, - cwd: __dirname, - path: expectedPath, - stat: fs.statSync(inputPath) - }); - var startMode = firstFile.stat.mode; - var expectedMode = 0727; - - var expectedFile = new File(firstFile); - expectedFile.stat.mode = (startMode & ~07777) | expectedMode; - - var onEnd = function(){ - buffered.length.should.equal(2); - buffered[0].should.equal(firstFile); - buffered[1].should.equal(expectedFile); - buffered[0].cwd.should.equal(expectedCwd, 'cwd should have changed'); - buffered[0].base.should.equal(expectedBase, 'base should have changed'); - buffered[0].path.should.equal(expectedPath, 'path should have changed'); - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - fs.mkdirSync(expectedBase); - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - - stream.pipe(bufferStream); - stream.write(firstFile); - stream.write(expectedFile); - stream.end(); - }); - - it('should report IO errors', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0722; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - fs.mkdirSync(expectedBase); - fs.closeSync(fs.openSync(expectedPath, 'w')); - fs.chmodSync(expectedPath, 0); - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - stream.on('error', function(err) { - err.code.should.equal('EACCES'); - done(); - }); - stream.write(expectedFile); - }); - - it('should report stat errors', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0722; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - fs.mkdirSync(expectedBase); - fs.closeSync(fs.openSync(expectedPath, 'w')); - - spies.setError(function(mod, fn) { - if (fn === 'stat' && arguments[2] === expectedPath) { - return new Error('stat error'); - } - }); - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - stream.on('error', function(err) { - err.message.should.equal('stat error'); - done(); - }); - stream.write(expectedFile); - }); - - it('should report chmod errors', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0722; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - fs.mkdirSync(expectedBase); - fs.closeSync(fs.openSync(expectedPath, 'w')); - - spies.setError(function(mod, fn) { - if (fn === 'chmod' && arguments[2] === expectedPath) { - return new Error('chmod error'); - } - }); - - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - stream.on('error', function(err) { - err.message.should.equal('chmod error'); - done(); - }); - stream.write(expectedFile); - }); - - it('should not chmod a matching file', function(done) { - var inputPath = path.join(__dirname, './fixtures/test.coffee'); - var inputBase = path.join(__dirname, './fixtures/'); - var expectedPath = path.join(__dirname, './out-fixtures/test.coffee'); - var expectedContents = fs.readFileSync(inputPath); - var expectedCwd = __dirname; - var expectedBase = path.join(__dirname, './out-fixtures'); - var expectedMode = 0722; - - var expectedFile = new File({ - base: inputBase, - cwd: __dirname, - path: inputPath, - contents: expectedContents, - stat: { - mode: expectedMode - } - }); - - var expectedCount = 0; - spies.setError(function(mod, fn) { - if (fn === 'stat' && arguments[2] === expectedPath) { - expectedCount++; - } - }); - - var onEnd = function(){ - expectedCount.should.equal(1); - should(chmodSpy.called).be.not.ok; - realMode(fs.lstatSync(expectedPath).mode).should.equal(expectedMode); - done(); - }; - - fs.mkdirSync(expectedBase); - fs.closeSync(fs.openSync(expectedPath, 'w')); - fs.chmodSync(expectedPath, expectedMode); - - statSpy.reset(); - chmodSpy.reset(); - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - var buffered = []; - bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd); - - stream.pipe(bufferStream); - stream.write(expectedFile); - stream.end(); - }); - - ['end', 'finish'].forEach(function(eventName) { - it('should emit ' + eventName + ' event', function(done) { - var srcPath = path.join(__dirname, './fixtures/test.coffee'); - var stream = vfs.dest('./out-fixtures/', {cwd: __dirname}); - - stream.on(eventName, function() { - done(); - }); - - var file = new File({ - path: srcPath, - cwd: __dirname, - contents: new Buffer("1234567890") - }); - - stream.write(file); - stream.end(); - }); - }); -}); diff --git a/node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16be.txt b/node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16be.txt deleted file mode 100644 index b9dce78a5d31af4803acd1a0f0dfc14f064a5de1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmX|+I}XAy5Jacu26Qf=0Eq@sM*@i=qJaY#5&}waq&RRn3Xa4Tc-{cbe#Sc=zn?E@ zuZymVayru+l}y7P<@I1MK)hWXxZY@{g_hJzYt4Dvs;8dRDlmE2!LB37&GahJPDg5G zyEjIUb8?Hu>i*d9+Q4pAn^J>j{bf4+Qmn{O;+32Wrj#?&PC0#o+uan?UxFJmPf0ua E03tFf0ssI2 diff --git a/node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16le.txt b/node_modules/gulp/node_modules/vinyl-fs/test/fixtures/bom-utf16le.txt deleted file mode 100644 index 07cc600c98675d221bb56d10af38e650538734c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmX|+%?`mp6otRFH?W%}3lbZ#mXJt@4G%E1O4?47PI);CkK`4cxy9!GoVn*`-p>~Y zuH1+?F6tGzrhboj9@;Y@-Y$;1UNd3FTy@Kesopkps%IL4CNFld>nNl)y+UZqNwu)u z8>5qRa*M`l|5*Q8iQQ0|QYFpu%XIuwER-RaS8~oYrJPIl?9@kcyPIPAOJL|a#!5Tj E15l gulp.1", - "lint": "jshint lib bin index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules", - "test": "npm run-script lint && mocha --reporter spec", - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" - }, - "engineStrict": true, - "engines": { - "node": ">= 0.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.githubusercontent.com/gulpjs/gulp/master/LICENSE" - } - ], - "gitHead": "b7486d8850f172f3533406c529510c7649a3a04f", - "bugs": { - "url": "https://github.com/gulpjs/gulp/issues" - }, - "_id": "gulp@3.8.9", - "_shasum": "90773dc79cb0b3087e5443c695b0f5a21548ccce", - "_from": "gulp@", - "_npmVersion": "2.1.4", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "fractal", - "email": "contact@wearefractal.com" - }, - "maintainers": [ - { - "name": "fractal", - "email": "contact@wearefractal.com" - } - ], - "dist": { - "shasum": "90773dc79cb0b3087e5443c695b0f5a21548ccce", - "tarball": "http://registry.npmjs.org/gulp/-/gulp-3.8.9.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/gulp/-/gulp-3.8.9.tgz" -} +{ + "name": "gulp", + "description": "The streaming build system", + "version": "3.8.11", + "homepage": "http://gulpjs.com", + "repository": { + "type": "git", + "url": "https://github.com/gulpjs/gulp" + }, + "author": { + "name": "Fractal", + "email": "contact@wearefractal.com", + "url": "http://wearefractal.com/" + }, + "tags": [ + "build", + "stream", + "system", + "make", + "tool", + "asset", + "pipeline" + ], + "files": [ + "index.js", + "lib", + "bin", + "completion" + ], + "bin": { + "gulp": "./bin/gulp.js" + }, + "man": [ + "gulp.1" + ], + "dependencies": { + "archy": "^1.0.0", + "chalk": "^0.5.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^0.3.2", + "liftoff": "^2.0.1", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^0.2.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + }, + "devDependencies": { + "coveralls": "^2.7.0", + "graceful-fs": "^3.0.0", + "istanbul": "^0.3.0", + "jshint": "^2.5.0", + "jshint-stylish": "^1.0.0", + "marked-man": "^0.1.3", + "mkdirp": "^0.5.0", + "mocha": "^2.0.1", + "mocha-lcov-reporter": "^0.0.1", + "q": "^1.0.0", + "rimraf": "^2.2.5", + "should": "^4.0.0" + }, + "scripts": { + "prepublish": "marked-man --name gulp docs/CLI.md > gulp.1", + "lint": "jshint lib bin index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules", + "test": "npm run-script lint && mocha --reporter spec", + "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engineStrict": true, + "engines": { + "node": ">= 0.9" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://raw.githubusercontent.com/gulpjs/gulp/master/LICENSE" + } + ], + "gitHead": "84df40b0faabc2b61d576154fd1145e2146377ca", + "bugs": { + "url": "https://github.com/gulpjs/gulp/issues" + }, + "_id": "gulp@3.8.11", + "_shasum": "d557e0a7283eb4136491969b0497767972f1d28a", + "_from": "gulp@*", + "_npmVersion": "2.5.1", + "_nodeVersion": "0.12.0", + "_npmUser": { + "name": "phated", + "email": "blaine@iceddev.com" + }, + "maintainers": [ + { + "name": "fractal", + "email": "contact@wearefractal.com" + }, + { + "name": "phated", + "email": "blaine@iceddev.com" + } + ], + "dist": { + "shasum": "d557e0a7283eb4136491969b0497767972f1d28a", + "tarball": "http://registry.npmjs.org/gulp/-/gulp-3.8.11.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/gulp/-/gulp-3.8.11.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/package.json b/package.json index 57ac64638a..e31ce54f37 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "url": "https://github.com/agershun/alasql/issues" }, "homepage": "https://github.com/agershun/alasql", - "main": "alasql.js", + "main": "dist/alasql.js", "scripts": { "test": "cd test && mocha ." }, diff --git a/test-sql/sqllogic/sqltest.zip b/test-sql/sqllogic/sqltest.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9c8f677f363b271c14065ee9a382d35a1c7eab3 GIT binary patch literal 536453 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

    syqRvrm9U&$=FS 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%0D%RVp;amW>CL!|b$clM& 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%0DB_ba3I&SIt1A@i_)6hHc4~8 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

    DZ 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%0D(^g_Y}PY|8r@OJr#_Dc75>LL-LFnf_Jr) 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
    u5`Zq*7Yu((O3YQ)Kh!rF(A-1ESt@F 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 literal 0 HcmV?d00001 diff --git a/cordova/alasql-cordova.js b/test/cordova/alasql-cordova.js similarity index 100% rename from cordova/alasql-cordova.js rename to test/cordova/alasql-cordova.js diff --git a/cordova/filestorage.js b/test/cordova/filestorage.js similarity index 100% rename from cordova/filestorage.js rename to test/cordova/filestorage.js diff --git a/cordova/test.js b/test/cordova/test.js similarity index 100% rename from cordova/test.js rename to test/cordova/test.js diff --git a/cordova/test1.js b/test/cordova/test1.js similarity index 100% rename from cordova/test1.js rename to test/cordova/test1.js diff --git a/cordova/test1.json b/test/cordova/test1.json similarity index 100% rename from cordova/test1.json rename to test/cordova/test1.json diff --git a/test/future/test119.js b/test/future/test119.js index eb9716f259..681eef62c2 100644 --- a/test/future/test119.js +++ b/test/future/test119.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 119 - PRIMARY KEY, CREATE INDEX UNIQUE', function() { diff --git a/test/future/test123.js b/test/future/test123.js index 85ffc5cb80..cc42a20a81 100644 --- a/test/future/test123.js +++ b/test/future/test123.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 123 - SHOW DATABASES, TABLES, COLUMNS, INDEX, CREATE TABLE', function() { diff --git a/test/future/test131.js b/test/future/test131.js index 501ff819a3..908a96acd7 100644 --- a/test/future/test131.js +++ b/test/future/test131.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/future/test132.js b/test/future/test132.js index 489b5820e5..01175c82b1 100644 --- a/test/future/test132.js +++ b/test/future/test132.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/future/test134.js b/test/future/test134.js index 0c3b351df5..0fb5127ab9 100644 --- a/test/future/test134.js +++ b/test/future/test134.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/future/test135.js b/test/future/test135.js index 00315d2ac0..18d585dfae 100644 --- a/test/future/test135.js +++ b/test/future/test135.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/future/test136.js b/test/future/test136.js index 029c3268bd..34ace14dcc 100644 --- a/test/future/test136.js +++ b/test/future/test136.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/future/test147.js b/test/future/test147.js index 4fd001638b..3d77f879e3 100644 --- a/test/future/test147.js +++ b/test/future/test147.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test000.js b/test/test000.js index 08a34ea832..66ebdc500d 100644 --- a/test/test000.js +++ b/test/test000.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 000', function() { diff --git a/test/test001.js b/test/test001.js index aa70a0f776..bef0be3c23 100644 --- a/test/test001.js +++ b/test/test001.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; function prepareData (defined) { diff --git a/test/test002.js b/test/test002.js index b2a236b393..c5f4878ec4 100644 --- a/test/test002.js +++ b/test/test002.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 02', function() { diff --git a/test/test003.js b/test/test003.js index cb5970f9f1..dc050d801f 100644 --- a/test/test003.js +++ b/test/test003.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var zt = require('../lib/zt/zt.js'); }; diff --git a/test/test004.js b/test/test004.js index d47f01a3d6..a5b4ff255c 100644 --- a/test/test004.js +++ b/test/test004.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 04', function() { diff --git a/test/test005.js b/test/test005.js index e1c995f1a5..4df471879a 100644 --- a/test/test005.js +++ b/test/test005.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 05 - DELETE', function() { diff --git a/test/test006.js b/test/test006.js index dcf6b28f2a..12dc8d588d 100644 --- a/test/test006.js +++ b/test/test006.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 06', function() { diff --git a/test/test007.js b/test/test007.js index 640df60391..c5b12f0429 100644 --- a/test/test007.js +++ b/test/test007.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 07', function() { diff --git a/test/test008.js b/test/test008.js index 5e56ea397b..5d64c6106f 100644 --- a/test/test008.js +++ b/test/test008.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 08', function() { diff --git a/test/test009.js b/test/test009.js index 9ad82e1409..5963b304a9 100644 --- a/test/test009.js +++ b/test/test009.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 09', function() { diff --git a/test/test010.js b/test/test010.js index 370969d247..53b739badc 100644 --- a/test/test010.js +++ b/test/test010.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 10', function() { diff --git a/test/test011.js b/test/test011.js index 8f76ac5d68..dfd4eb51d8 100644 --- a/test/test011.js +++ b/test/test011.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 11', function() { diff --git a/test/test012.js b/test/test012.js index b4e39cb326..7f18f62e78 100644 --- a/test/test012.js +++ b/test/test012.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 12', function() { diff --git a/test/test013.js b/test/test013.js index ab8dafea24..412ab44809 100644 --- a/test/test013.js +++ b/test/test013.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 13', function() { diff --git a/test/test014.js b/test/test014.js index 331b6a6804..c0bd39fc4a 100644 --- a/test/test014.js +++ b/test/test014.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 014', function() { diff --git a/test/test015.js b/test/test015.js index 2a0d8d44ef..dd4cc59156 100644 --- a/test/test015.js +++ b/test/test015.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 15', function() { diff --git a/test/test016.js b/test/test016.js index 029e43732a..8c80dd0a79 100644 --- a/test/test016.js +++ b/test/test016.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 16', function() { diff --git a/test/test016a.js b/test/test016a.js index 1d2f97f14b..fe10e1e5f7 100644 --- a/test/test016a.js +++ b/test/test016a.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; if(false) { diff --git a/test/test017.js b/test/test017.js index a0cfad4ca3..f651c23e6d 100644 --- a/test/test017.js +++ b/test/test017.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 17', function() { diff --git a/test/test018.js b/test/test018.js index c5f9aa4f50..da85e15bb7 100644 --- a/test/test018.js +++ b/test/test018.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 18', function() { diff --git a/test/test019.js b/test/test019.js index 5ad02b9a42..e991476c98 100644 --- a/test/test019.js +++ b/test/test019.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 19', function() { diff --git a/test/test020.js b/test/test020.js index 162298c5f0..99f3b7f57e 100644 --- a/test/test020.js +++ b/test/test020.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 20 - User-defined functions', function() { diff --git a/test/test021.js b/test/test021.js index 0f3b4c73fa..804df975fc 100644 --- a/test/test021.js +++ b/test/test021.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 21', function() { diff --git a/test/test022.js b/test/test022.js index 9e79969ca5..87cd6a27ad 100644 --- a/test/test022.js +++ b/test/test022.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 22', function() { diff --git a/test/test023.js b/test/test023.js index f3ca94c394..4d8b4343c4 100644 --- a/test/test023.js +++ b/test/test023.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 23', function() { diff --git a/test/test024.js b/test/test024.js index 013eac22e1..67dd260ee7 100644 --- a/test/test024.js +++ b/test/test024.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 24', function() { diff --git a/test/test025.js b/test/test025.js index 6a0b6c3761..7ed027d6c0 100644 --- a/test/test025.js +++ b/test/test025.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 25', function() { diff --git a/test/test026.js b/test/test026.js index b73be1782d..e5a7d85239 100644 --- a/test/test026.js +++ b/test/test026.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 26', function() { diff --git a/test/test027.js b/test/test027.js index 3421235d28..cf4b9d4cf5 100644 --- a/test/test027.js +++ b/test/test027.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 27', function() { diff --git a/test/test028.js b/test/test028.js index c37e9ca62c..2d8c4c4fd1 100644 --- a/test/test028.js +++ b/test/test028.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 28', function() { diff --git a/test/test029.js b/test/test029.js index 21c2f53319..0baaf4b5ec 100644 --- a/test/test029.js +++ b/test/test029.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 29', function() { diff --git a/test/test030.js b/test/test030.js index cd6655c952..51360715fd 100644 --- a/test/test030.js +++ b/test/test030.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 30', function() { diff --git a/test/test031.js b/test/test031.js index f16d82d38d..972e6e471c 100644 --- a/test/test031.js +++ b/test/test031.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 31', function() { diff --git a/test/test032.js b/test/test032.js index cb75d887ca..4c45bda8e5 100644 --- a/test/test032.js +++ b/test/test032.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 32', function() { diff --git a/test/test034.js b/test/test034.js index d59777f2d8..25335d6f20 100644 --- a/test/test034.js +++ b/test/test034.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 34', function() { diff --git a/test/test035.js b/test/test035.js index ef940681d4..eaf4362f34 100644 --- a/test/test035.js +++ b/test/test035.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 35 - LIMIT OFFSET', function() { diff --git a/test/test036.js b/test/test036.js index d84721d28e..81eb9967b6 100644 --- a/test/test036.js +++ b/test/test036.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 36', function() { diff --git a/test/test037.js b/test/test037.js index d5c4f2e0b9..143b06fa60 100644 --- a/test/test037.js +++ b/test/test037.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 37', function() { diff --git a/test/test038.js b/test/test038.js index 67b14b6987..8b61dc1dc5 100644 --- a/test/test038.js +++ b/test/test038.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 38', function() { diff --git a/test/test039.js b/test/test039.js index a26e8e7c2e..2549faa2cf 100644 --- a/test/test039.js +++ b/test/test039.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 39', function() { diff --git a/test/test040.js b/test/test040.js index fe5915097f..5b5ff59e76 100644 --- a/test/test040.js +++ b/test/test040.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 40', function() { diff --git a/test/test041.js b/test/test041.js index 6a9f9d9d63..7376f16659 100644 --- a/test/test041.js +++ b/test/test041.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 41', function() { diff --git a/test/test042.js b/test/test042.js index 16f2d75cbe..4b885bb4a1 100644 --- a/test/test042.js +++ b/test/test042.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 42', function() { diff --git a/test/test044.js b/test/test044.js index b1aa9896bc..c70a820295 100644 --- a/test/test044.js +++ b/test/test044.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 44', function() { diff --git a/test/test045.js b/test/test045.js index fb387fa4e0..11d061d38a 100644 --- a/test/test045.js +++ b/test/test045.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 45', function() { diff --git a/test/test046.js b/test/test046.js index 18019e9971..110ffa552a 100644 --- a/test/test046.js +++ b/test/test046.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 046', function() { diff --git a/test/test047.js b/test/test047.js index 7232dedf5d..06ab6320c3 100644 --- a/test/test047.js +++ b/test/test047.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 47', function() { diff --git a/test/test048.js b/test/test048.js index ab15d5b75e..06dc6885bb 100644 --- a/test/test048.js +++ b/test/test048.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 48 - Check parser for primary and foreign keys', function() { diff --git a/test/test049.js b/test/test049.js index 76f23d4555..bcc0ff7adb 100644 --- a/test/test049.js +++ b/test/test049.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 49 - Insert with primary key', function() { diff --git a/test/test050.js b/test/test050.js index 1c99066319..37fccbd630 100644 --- a/test/test050.js +++ b/test/test050.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 50 - Insert with primary key with two columns', function() { diff --git a/test/test051.js b/test/test051.js index 3b3ddb9c4e..ff36922f19 100644 --- a/test/test051.js +++ b/test/test051.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 51 - Foreign Keys)', function() { diff --git a/test/test052.js b/test/test052.js index 2b119490c0..f9f46419a4 100644 --- a/test/test052.js +++ b/test/test052.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 52 - UPPER CASE and LOWER CASE', function() { diff --git a/test/test053.js b/test/test053.js index a9d0448c44..2464a714d0 100644 --- a/test/test053.js +++ b/test/test053.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 53 - Automatic types parsing', function() { diff --git a/test/test054.js b/test/test054.js index d975100b5a..e30ed1e8a9 100644 --- a/test/test054.js +++ b/test/test054.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 54 - SELECT Number', function() { diff --git a/test/test055.js b/test/test055.js index df9b1e7142..a335c0789d 100644 --- a/test/test055.js +++ b/test/test055.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 55 - Error in WHERE and preIndex with ParamValue', function() { diff --git a/test/test056.js b/test/test056.js index ec5fd67bad..a4ce574ec8 100644 --- a/test/test056.js +++ b/test/test056.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 56 - Error in WHERE and preIndex with ParamValue', function() { diff --git a/test/test057.js b/test/test057.js index 296e8dfbe0..54e2be3b3f 100644 --- a/test/test057.js +++ b/test/test057.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 57 - Params and Subqueries in JOIN', function() { diff --git a/test/test058.js b/test/test058.js index 0f3d5529b2..f53c2e7b53 100644 --- a/test/test058.js +++ b/test/test058.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 58 - Indices', function() { diff --git a/test/test059.js b/test/test059.js index 29297b3755..5af76eff70 100644 --- a/test/test059.js +++ b/test/test059.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 59 - Other operators', function() { diff --git a/test/test060.js b/test/test060.js index b4c7421068..1073a6c462 100644 --- a/test/test060.js +++ b/test/test060.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 60 - Other minor', function() { diff --git a/test/test061.js b/test/test061.js index 9104bb3976..f1f2798479 100644 --- a/test/test061.js +++ b/test/test061.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 61 - Increment', function() { diff --git a/test/test062.js b/test/test062.js index 43bf300ed8..5545f34a58 100644 --- a/test/test062.js +++ b/test/test062.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 62 - ALTER TABLE', function() { diff --git a/test/test063.js b/test/test063.js index c8e85075b5..b4d66cff87 100644 --- a/test/test063.js +++ b/test/test063.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 63 - PIVOT', function() { diff --git a/test/test064.js b/test/test064.js index e00bebab56..fc64956737 100644 --- a/test/test064.js +++ b/test/test064.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 64 - Console', function() { diff --git a/test/test065.js b/test/test065.js index 09666d7a1a..c35d601056 100644 --- a/test/test065.js +++ b/test/test065.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 65 - Cursors', function() { diff --git a/test/test066.js b/test/test066.js index 982e7f4fee..64d29c4199 100644 --- a/test/test066.js +++ b/test/test066.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 66 - localStorage database', function() { diff --git a/test/test067.js b/test/test067.js index 8f70ddf7fb..2f398ca0e4 100644 --- a/test/test067.js +++ b/test/test067.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 67 - IndexedDB integration', function() { diff --git a/test/test068.js b/test/test068.js index c4352c2186..04d3844180 100644 --- a/test/test068.js +++ b/test/test068.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 68 - Pass-through database', function() { diff --git a/test/test069.js b/test/test069.js index 3111420fd9..565ade0fe4 100644 --- a/test/test069.js +++ b/test/test069.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 69 - CSV and TAB database', function() { diff --git a/test/test070.js b/test/test070.js index b6784d4e77..c8ac1ddb75 100644 --- a/test/test070.js +++ b/test/test070.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 70 - Streams processing', function() { diff --git a/test/test071.js b/test/test071.js index c7c6bed993..f43f749086 100644 --- a/test/test071.js +++ b/test/test071.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 71 - WebWorker', function() { diff --git a/test/test072.js b/test/test072.js index 8655f733ec..af4d20b52a 100644 --- a/test/test072.js +++ b/test/test072.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 72 - Explain', function() { diff --git a/test/test073.js b/test/test073.js index 07ee58c43d..4cb7a59eca 100644 --- a/test/test073.js +++ b/test/test073.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 73 - Ajax', function() { diff --git a/test/test074.js b/test/test074.js index ea86b934e6..faee6d38de 100644 --- a/test/test074.js +++ b/test/test074.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 74 - Natural Join', function() { diff --git a/test/test075.js b/test/test075.js index e3fc630951..1029395c41 100644 --- a/test/test075.js +++ b/test/test075.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 75 - NULL, IS NULL', function() { diff --git a/test/test076.js b/test/test076.js index c2f24dd3d6..9ca0df514b 100644 --- a/test/test076.js +++ b/test/test076.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 76 - Phone Gap', function() { diff --git a/test/test077.js b/test/test077.js index a5056af05a..03c54c0733 100644 --- a/test/test077.js +++ b/test/test077.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 77 - Apache Cordova', function() { diff --git a/test/test078.js b/test/test078.js index b2a1d2ccbb..0ddd43bfbe 100644 --- a/test/test078.js +++ b/test/test078.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 78 - WinJS', function() { diff --git a/test/test079.js b/test/test079.js index 805e033b2c..70e9b05b95 100644 --- a/test/test079.js +++ b/test/test079.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 79 - Prettify', function() { diff --git a/test/test080.js b/test/test080.js index 805e033b2c..70e9b05b95 100644 --- a/test/test080.js +++ b/test/test080.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 79 - Prettify', function() { diff --git a/test/test081.js b/test/test081.js index db3714eb09..932685097e 100644 --- a/test/test081.js +++ b/test/test081.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 81 - Hierarchies', function() { diff --git a/test/test082.js b/test/test082.js index 6b6d07ea86..21dfae08e1 100644 --- a/test/test082.js +++ b/test/test082.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 82 - MDX Parser', function() { diff --git a/test/test083.js b/test/test083.js index 639a3ed430..8f57fe94b1 100644 --- a/test/test083.js +++ b/test/test083.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 83 - MDX SELECT', function() { diff --git a/test/test084.js b/test/test084.js index 90d47b6a39..df721f1888 100644 --- a/test/test084.js +++ b/test/test084.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 84 - Sandbox', function() { diff --git a/test/test085.js b/test/test085.js index 1eb4060f05..23f8cbec79 100644 --- a/test/test085.js +++ b/test/test085.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 85 - Mongo-like queries', function() { diff --git a/test/test086.js b/test/test086.js index 702be897c6..d7e4282d52 100644 --- a/test/test086.js +++ b/test/test086.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 86 - DESCRIBE TABLE', function() { diff --git a/test/test087.js b/test/test087.js index f5fcda43f8..17e20e95f6 100644 --- a/test/test087.js +++ b/test/test087.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 87 - EXPLAIN', function() { diff --git a/test/test088.js b/test/test088.js index 09ce7f592c..1b3cd40784 100644 --- a/test/test088.js +++ b/test/test088.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 88 - AngularJS ng-alasql', function() { diff --git a/test/test089.js b/test/test089.js index 7d83d5cb83..bc1d841d9a 100644 --- a/test/test089.js +++ b/test/test089.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 89 - d3 sample', function() { diff --git a/test/test090.js b/test/test090.js index bbaf32a7af..afc10b592a 100644 --- a/test/test090.js +++ b/test/test090.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 91 - Binary Operators: *, /, %, +, -, <<, >>, &, ^, |, ||', function() { diff --git a/test/test091.js b/test/test091.js index bbaf32a7af..afc10b592a 100644 --- a/test/test091.js +++ b/test/test091.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 91 - Binary Operators: *, /, %, +, -, <<, >>, &, ^, |, ||', function() { diff --git a/test/test092.js b/test/test092.js index e34eb36485..2c25fd1efe 100644 --- a/test/test092.js +++ b/test/test092.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 92 - Std Functions (STDEV, etc.)', function() { diff --git a/test/test093.js b/test/test093.js index f0c4d2ccc9..94f2151195 100644 --- a/test/test093.js +++ b/test/test093.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 93 - COUNT (NON NULL) & COUNT DISTINCT', function() { diff --git a/test/test094.js b/test/test094.js index c320947724..1401d697cd 100644 --- a/test/test094.js +++ b/test/test094.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 94 - Persistence in Browser and Node', function() { diff --git a/test/test095.js b/test/test095.js index 6af8b2f568..0e2e90d031 100644 --- a/test/test095.js +++ b/test/test095.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 95 - Transactions', function() { diff --git a/test/test096.js b/test/test096.js index 8c5a80e20c..6335520223 100644 --- a/test/test096.js +++ b/test/test096.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 96 - CHECK', function() { diff --git a/test/test097.js b/test/test097.js index 6f4fa7f003..09f3296192 100644 --- a/test/test097.js +++ b/test/test097.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 97 - TRIGGERS (SQL & JavaScript Way)', function() { diff --git a/test/test098.js b/test/test098.js index 4f4e7db5a7..6dc35200a4 100644 --- a/test/test098.js +++ b/test/test098.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 98 - UNIQUE', function() { diff --git a/test/test099.js b/test/test099.js index fdb3973999..40a7bfe4c2 100644 --- a/test/test099.js +++ b/test/test099.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 100 - DataTypes', function() { diff --git a/test/test100.js b/test/test100.js index fdb3973999..40a7bfe4c2 100644 --- a/test/test100.js +++ b/test/test100.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 100 - DataTypes', function() { diff --git a/test/test101.js b/test/test101.js index 723e938bbe..4c0d627a67 100644 --- a/test/test101.js +++ b/test/test101.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 101 - Oracle, MySQL, MSSQL, SQLite, Postgress mode', function() { diff --git a/test/test102.js b/test/test102.js index 3f666e95fd..6891d6f87f 100644 --- a/test/test102.js +++ b/test/test102.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 102 - Execution Plan', function() { diff --git a/test/test103.js b/test/test103.js index 1f3beee15a..43f74361ae 100644 --- a/test/test103.js +++ b/test/test103.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 103 - FORMAT', function() { diff --git a/test/test104.js b/test/test104.js index 747b32c139..98f71f97f3 100644 --- a/test/test104.js +++ b/test/test104.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 104 - RANDOM() and RECURSIVE', function() { diff --git a/test/test105.js b/test/test105.js index a9a985d235..72608ef8c5 100644 --- a/test/test105.js +++ b/test/test105.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 105 - Synchronization over browsers and Node.js', function() { diff --git a/test/test106.js b/test/test106.js index c67adf12d4..b1c649f060 100644 --- a/test/test106.js +++ b/test/test106.js @@ -5,7 +5,7 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; diff --git a/test/test113.js b/test/test113.js index e2b5839f91..ec0322dc2e 100644 --- a/test/test113.js +++ b/test/test113.js @@ -5,7 +5,7 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; diff --git a/test/test114.js b/test/test114.js index e049bb13a4..a04b0881e2 100644 --- a/test/test114.js +++ b/test/test114.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var zt = require('../lib/zt/zt.js'); }; diff --git a/test/test115.js b/test/test115.js index d825015f2d..6b229c2d14 100644 --- a/test/test115.js +++ b/test/test115.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var zt = require('../lib/zt/zt.js'); }; diff --git a/test/test116.js b/test/test116.js index 9bb945547e..199862ccff 100644 --- a/test/test116.js +++ b/test/test116.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 116', function() { diff --git a/test/test117.js b/test/test117.js index 79d4a1e5a6..0ce00443d1 100644 --- a/test/test117.js +++ b/test/test117.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 117 - Table name resolution', function() { diff --git a/test/test118.js b/test/test118.js index 278b6bbc3c..8b65d029fd 100644 --- a/test/test118.js +++ b/test/test118.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 118 - ADD COLUMN/MODIFY COLUMN/DROP COLUMN', function() { diff --git a/test/test119.js b/test/test119.js index a59ef6f793..fa9edfe19e 100644 --- a/test/test119.js +++ b/test/test119.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 119 - PRIMARY KEY, CREATE INDEX UNIQUE', function() { diff --git a/test/test120.js b/test/test120.js index 3558b90bef..d09a1b24f8 100644 --- a/test/test120.js +++ b/test/test120.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 120 - Tables and column names with dots, commas, spaces, square brackets, and backquotes', function() { diff --git a/test/test121.js b/test/test121.js index 3fcd5a5784..7b9b1fc6b4 100644 --- a/test/test121.js +++ b/test/test121.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; if(false) { diff --git a/test/test122.js b/test/test122.js index 8206598568..c4c8719782 100644 --- a/test/test122.js +++ b/test/test122.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 122 - PRIMARY KEY, CREATE INDEX UNIQUE', function() { diff --git a/test/test123.js b/test/test123.js index 82d04730c9..e6d6c24862 100644 --- a/test/test123.js +++ b/test/test123.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 123 - SHOW DATABASES, TABLES, COLUMNS, INDEX, CREATE TABLE', function() { diff --git a/test/test124.js b/test/test124.js index c722ca1839..d8efd98efb 100644 --- a/test/test124.js +++ b/test/test124.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 124 - column AS alias syntax', function() { diff --git a/test/test125.js b/test/test125.js index bd7057095b..7db889ed48 100644 --- a/test/test125.js +++ b/test/test125.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 125 - remove comments', function() { diff --git a/test/test126.js b/test/test126.js index 3ab1d0fdb8..780e520633 100644 --- a/test/test126.js +++ b/test/test126.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); }; describe('Test 126 ALTER TABLE RENAME COLUMN', function() { diff --git a/test/test127.js b/test/test127.js index c77d27261f..0a4622bbdf 100644 --- a/test/test127.js +++ b/test/test127.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test128.js b/test/test128.js index e714d847ca..2dba9127f4 100644 --- a/test/test128.js +++ b/test/test128.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test131.js b/test/test131.js index 501ff819a3..908a96acd7 100644 --- a/test/test131.js +++ b/test/test131.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test132.js b/test/test132.js index f0c6361d53..4d162267c2 100644 --- a/test/test132.js +++ b/test/test132.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test133.js b/test/test133.js index 7c77101730..d0737ba3c7 100644 --- a/test/test133.js +++ b/test/test133.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test134.js b/test/test134.js index 0c3b351df5..0fb5127ab9 100644 --- a/test/test134.js +++ b/test/test134.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test135.js b/test/test135.js index d36251dbc3..de81b12ea4 100644 --- a/test/test135.js +++ b/test/test135.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test136.js b/test/test136.js index ae45bb0078..2acbc395a7 100644 --- a/test/test136.js +++ b/test/test136.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test137.js b/test/test137.js index 11d5156e73..81e763a255 100644 --- a/test/test137.js +++ b/test/test137.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test138.js b/test/test138.js index b8b18d3a5b..1e5f51bf98 100644 --- a/test/test138.js +++ b/test/test138.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test139.js b/test/test139.js index 49bbf46f34..8452b185a4 100644 --- a/test/test139.js +++ b/test/test139.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test140.js b/test/test140.js index 1542f79e5d..c87c868aa3 100644 --- a/test/test140.js +++ b/test/test140.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test141.js b/test/test141.js index 881767a38e..95fc9bb4a6 100644 --- a/test/test141.js +++ b/test/test141.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test142.js b/test/test142.js index e6e0b49392..b2e5e6c2b5 100644 --- a/test/test142.js +++ b/test/test142.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test143.js b/test/test143.js index f9d2d15c8b..927bd901d8 100644 --- a/test/test143.js +++ b/test/test143.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test144.js b/test/test144.js index 136f42a565..3820bd57eb 100644 --- a/test/test144.js +++ b/test/test144.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test145.js b/test/test145.js index 5df2129c05..0efba7ea51 100644 --- a/test/test145.js +++ b/test/test145.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test146.js b/test/test146.js index 8281cae429..bd5275217a 100644 --- a/test/test146.js +++ b/test/test146.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test147.js b/test/test147.js index dd98f962ae..3556b7dfbf 100644 --- a/test/test147.js +++ b/test/test147.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test148.js b/test/test148.js index e8e5d2e147..45085176aa 100644 --- a/test/test148.js +++ b/test/test148.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test149.js b/test/test149.js index 32a43fed81..1cbc584fd3 100644 --- a/test/test149.js +++ b/test/test149.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test150.js b/test/test150.js index 616d28e6e7..606f8af9b2 100644 --- a/test/test150.js +++ b/test/test150.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test151.js b/test/test151.js index 6dc5cf4e59..a60f2814aa 100644 --- a/test/test151.js +++ b/test/test151.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test152.js b/test/test152.js index 9c5d01f666..7b1d0d5a05 100644 --- a/test/test152.js +++ b/test/test152.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test153.js b/test/test153.js index e89cadd7c4..6c41560bf7 100644 --- a/test/test153.js +++ b/test/test153.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test154.js b/test/test154.js index 60d3c0b5f2..8202d31bd8 100644 --- a/test/test154.js +++ b/test/test154.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test155.js b/test/test155.js index 0aeb28e3b4..f13ae9923d 100644 --- a/test/test155.js +++ b/test/test155.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test156.js b/test/test156.js index f61110e0a8..d67f381af5 100644 --- a/test/test156.js +++ b/test/test156.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test157.js b/test/test157.js index 85f732d793..eb3329b5a0 100644 --- a/test/test157.js +++ b/test/test157.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test158.js b/test/test158.js index 5d7e5c5ae5..8756b765b7 100644 --- a/test/test158.js +++ b/test/test158.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test159.js b/test/test159.js index 2bbbcf6d76..c77ca0b373 100644 --- a/test/test159.js +++ b/test/test159.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test160.js b/test/test160.js index 4867bdb707..cdbced8d6d 100644 --- a/test/test160.js +++ b/test/test160.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test161.js b/test/test161.js index f0e87d638a..2eb8e3c851 100644 --- a/test/test161.js +++ b/test/test161.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/test/test162.js b/test/test162.js index a1a934fd94..b801770247 100644 --- a/test/test162.js +++ b/test/test162.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test163.js b/test/test163.js index ca3554a57f..1cd215f391 100644 --- a/test/test163.js +++ b/test/test163.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test164.js b/test/test164.js index 4f41729ef9..c8ba49e0dc 100644 --- a/test/test164.js +++ b/test/test164.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test165.js b/test/test165.js index 1b4c0041c6..603b43f520 100644 --- a/test/test165.js +++ b/test/test165.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test166.js b/test/test166.js index a7ead1b7d1..1e0d6aa976 100644 --- a/test/test166.js +++ b/test/test166.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test167.js b/test/test167.js index f4debbaaf7..1f388a3540 100644 --- a/test/test167.js +++ b/test/test167.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var DOMStorage = require("dom-storage") global.localStorage = new DOMStorage("./test162.json", { strict: false, ws: '' }); } else { diff --git a/test/test168.js b/test/test168.js index e175f48c25..6f492ba4be 100644 --- a/test/test168.js +++ b/test/test168.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var dirname = __dirname.replace(/\\/g,"/"); } else { dirname = '.'; diff --git a/test/test169.js b/test/test169.js index 26d4eb605c..5e4ac1aa90 100644 --- a/test/test169.js +++ b/test/test169.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); var dirname = __dirname.replace(/\\/g,"/"); } else { dirname = '.'; diff --git a/test/test169a.xlsx b/test/test169a.xlsx index 83245ef0ae037bfd467a1d47f6e7d334d0d0ed3e..fa4448cdd74cedd270b1f77eee46e77d58652728 100644 GIT binary patch delta 166 zcmdm!y(gPDz?+$civa{y&S~Aq+s4QYq&H7vjAa5dzA>jlMB-SjAtH0wx#hr8t5iQR zgBkNRf3koXv-OG~Y6J{Zz>LY|#x@|C$=i&r!SoknD==+n;tZzCP3*w*4igJ7{Ta$P LF*O78b4~pLeRn~+ delta 166 zcmdm!y(gPDz?+$civa}8RyS_sZDV8x(wnC-#xj8!-jlMB-TQKp3{{+;U(kZ`DuC zV1|R{PZlu4Mz08>YokF5m@!$x*ajpsIo#M9Oiwko0@Ig_ox!w(i5-}ZG_e5FQ=t5- LCT3thpQ%3pPfS2% delta 166 zcmcbcbvKJQz?+$civa}8RyS_sZDV8x(wnC-#xj8!-yjIVPyvv%!JabtSrF%r%=9{ LwHcTnZ|x5N8WL0g delta 262 zcmZ2izOI}%z?+$civa}8RyS_sZDV8x(wnC-{$~O+X0S|xi0HD}FmV8-+_qm>HFob5?iI>k|HHLn=(5iQ&edeRB02_$;I4z!Il{F zaLa)ij#{6X!3;CKMpiImmvIrqA^K(?!HmhumNp=n$w`*hV0wY26_~zj=?r(@WDP4j YuwW*XUS(wg=0An<)vV3H{CI1B0BVR>rvLx| diff --git a/test/test252.js b/test/test252.js index b9bd0b6973..2212c93175 100644 --- a/test/test252.js +++ b/test/test252.js @@ -1,6 +1,6 @@ if(typeof exports === 'object') { var assert = require("assert"); - var alasql = require('../alasql.js'); + var alasql = require('..'); } else { __dirname = '.'; }; diff --git a/testsql/sqllogic/README.md b/testsql/sqllogic/README.md deleted file mode 100644 index 75ebc3ddf8..0000000000 --- a/testsql/sqllogic/README.md +++ /dev/null @@ -1 +0,0 @@ -The place for SQLLOGICTEST files. \ No newline at end of file From 4e86def2b39f0f4a80cb58ba67f1cfcbe379ecfd Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Sun, 5 Apr 2015 19:52:46 +0300 Subject: [PATCH 3/6] gulp update --- .../gulp/node_modules/liftoff/.travis.yml | 9 +++++++++ .../findup-sync/node_modules/glob/LICENSE | 15 +++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 node_modules/gulp/node_modules/liftoff/.travis.yml create mode 100644 node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE diff --git a/node_modules/gulp/node_modules/liftoff/.travis.yml b/node_modules/gulp/node_modules/liftoff/.travis.yml new file mode 100644 index 0000000000..20fed57010 --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/.travis.yml @@ -0,0 +1,9 @@ +language: node_js +node_js: + - "0.10" + - "0.12" + - "iojs" +before_install: + - npm update -g npm +matrix: + fast_finish: true diff --git a/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE new file mode 100644 index 0000000000..19129e315f --- /dev/null +++ b/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. From d586b119688a9e949129b2ddc858cbac988e2d7b Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Wed, 8 Apr 2015 02:48:16 +0300 Subject: [PATCH 4/6] moved alacon and alaserver --- CHANGELOG.md | 1 + alacon.js => bin/alacon.js | 7 ++++--- alaserver.js => bin/alaserver.js | 3 ++- package.json | 4 ++++ 4 files changed, 11 insertions(+), 4 deletions(-) rename alacon.js => bin/alacon.js (88%) rename alaserver.js => bin/alaserver.js (88%) mode change 100644 => 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md index 42febbf710..0ca454d119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 0.0.44 "Roma" (02.04.2015 - ...04.2015) * Added params to SQLite attached database: alasql('ATTACH SQLITE DATABASE a(?)',[event],cb); * Root directory was cleaned +* Gulp version is updated ### 0.0.43 "The Wall" (25.03.2015 - 01.04.2015) * Created "develop" branch for git-flow diff --git a/alacon.js b/bin/alacon.js similarity index 88% rename from alacon.js rename to bin/alacon.js index e43ca96b77..587b515590 100755 --- a/alacon.js +++ b/bin/alacon.js @@ -1,11 +1,12 @@ #!/usr/bin/env node // // Alacon - Command line interface for Alasql -// Date: 25.11.2014 -// (c) 2014, Andrey Gershun +// Version: 0.1 +// Date: 07.04.2015 +// (c) 2014-2015, Andrey Gershun // -var alasql = require('./alasql.js'); +var alasql = require('alasql'); var fs = require('fs'); diff --git a/alaserver.js b/bin/alaserver.js old mode 100644 new mode 100755 similarity index 88% rename from alaserver.js rename to bin/alaserver.js index 255b1dda2d..6b3acc7cd8 --- a/alaserver.js +++ b/bin/alaserver.js @@ -1,10 +1,11 @@ +#!/usr/bin/env node // // alaserver.js = Alasql Server // Date: 25.11.2014 // (c) 2014, Andrey Gershun // -var alasql = require('./alasql'); +var alasql = require('alasql'); var http = require('http'); var url = require('url'); var port = (process.argv[2] || 1337)|0; diff --git a/package.json b/package.json index e31ce54f37..6287fd13c6 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,10 @@ "bugs": { "url": "https://github.com/agershun/alasql/issues" }, + "bin" : { + "alacon" : "./bin/alacon.js", + "alaserver" : "./bin/alaserver.js", + }, "homepage": "https://github.com/agershun/alasql", "main": "dist/alasql.js", "scripts": { From 321d217ef96cf972a53454c1173268d3b587109b Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Wed, 8 Apr 2015 09:06:34 +0300 Subject: [PATCH 5/6] new article --- PEOPLE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/PEOPLE.md b/PEOPLE.md index b4e647a46c..305c55de87 100644 --- a/PEOPLE.md +++ b/PEOPLE.md @@ -7,6 +7,7 @@ In English: * SlideShare [Alasql.js fast JavaScript in-memory SQL database](http://www.slideshare.net/AndreyGershun/alasqljsfast-javascript-inmemory-sql-database) * SlideShare [SQL and NoSQL in Alasql database](http://www.slideshare.net/AndreyGershun/sql-and-nosql-in-alasql) * Glauco Custódio [Local Storage with AlaSQL in Cordova/Ionic Framework](http://blog.glaucocustodio.com/2015/03/30/local-storage-with-alasql-in-cordovaionic-framework/) +* Paulo Diniz [AlaSQL](http://www.pdiniz.com/alasql/) In Chinese From 900f995d6145426097396dc02dcb6cc7782c99fa Mon Sep 17 00:00:00 2001 From: Andrey Gershun Date: Mon, 13 Apr 2015 19:19:10 +0300 Subject: [PATCH 6/6] release changes --- CHANGELOG.md | 1 + README.md | 4 ++- RELEASES.md | 4 +-- alasql.js | 72 ++++++++++++++++++++------------------ console/alasql.min.js | 12 +++---- dist/alasql-worker.js | 40 +++++++++++++++++++++ dist/alasql-worker.js.map | 3 +- dist/alasql.js | 72 ++++++++++++++++++++------------------ dist/alasql.js.map | 3 +- dist/alasql.min.js | 12 +++---- gulpfile.js | 2 ++ package.json | 4 +-- src/05copyright.js | 31 ++++++++++++++++ src/10start.js | 33 +---------------- src/40select.js | 2 +- src/41exists.js | 4 +-- src/99worker-start.js | 7 ++++ test/test169a.xlsx | Bin 13756 -> 13756 bytes test/test238b.xlsx | Bin 13661 -> 13661 bytes test/test251.xlsx | Bin 15278 -> 15277 bytes test/test253.js | 30 ++++++++++++++++ 21 files changed, 211 insertions(+), 125 deletions(-) create mode 100644 src/05copyright.js create mode 100644 test/test253.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ca454d119..b01a4a7907 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Added params to SQLite attached database: alasql('ATTACH SQLITE DATABASE a(?)',[event],cb); * Root directory was cleaned * Gulp version is updated +* Fixed bug with (SELECT) and EXISTS() in SELECTS with GROUP BY ### 0.0.43 "The Wall" (25.03.2015 - 01.04.2015) * Created "develop" branch for git-flow diff --git a/README.md b/README.md index dd0362d6bf..5c85d52a9d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Alasql.js - JavaScript SQL database library with support of localStorage, IndexedDB, and Excel -Version: 0.0.44 "Roma" Date: April 5, 2015 [Change log](CHANGELOG.md), [Release plan](RELEASES.md) +Version: 0.0.44 "Roma" Date: April 13, 2015 [Change log](CHANGELOG.md), [Release plan](RELEASES.md) + +Please use [AlaSQL Forum](https://groups.google.com/d/forum/alasql) for discussions or [Issues](https://github.com/agershun/alasql/issues) to report bugs. Alasql - '[à la SQL](http://en.wiktionary.org/wiki/%C3%A0_la)' - is a lightweight JavaScript SQL database designed to work in browser, Node.js, and Apache Cordova. It supports traditional SQL with some NoSQL functionality. Current version of Alasql can work in memory and use file, IndexedDB, and localStorage as a persistent storage. diff --git a/RELEASES.md b/RELEASES.md index 5bf62c9109..88ead330e9 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -14,7 +14,5 @@ ## Next Releases: -To be defined - -### Version "Chess" 0.1.0 (10.04.2015) +### Version "Chess" 0.1.0 (20.04.2015) diff --git a/alasql.js b/alasql.js index 28f0075073..d5c8069126 100755 --- a/alasql.js +++ b/alasql.js @@ -1,34 +1,36 @@ -// -// alasql.js -// Alasql - JavaScript SQL database -// Date: 01.04.2015 -// Version: 0.0.43 -// (ñ) 2014, Andrey Gershun -// - -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ +// +// alasql.js +// AlaSQL - JavaScript SQL database +// Date: 13.04.2015 +// Version: 0.0.44 +// (ñ) 2014-2015, Andrey Gershun +// + +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + + /** UMD envelope @@ -109,7 +111,7 @@ var alasql = function(sql, params, cb, scope) { }; /** Current version of alasql */ -alasql.version = "0.0.36"; +alasql.version = "0.0.44"; @@ -4832,7 +4834,7 @@ yy.Select.prototype.toJavaScript = function(context, tableid, defcols) { // console.log('Select.toJS', 81, this.queriesidx); // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]'; //console.log(this); - var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,p))[0]'; + var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,'+context+'))[0]'; // s = '(console.log(this.queriesfn[0]),'+s+')'; return s; @@ -5133,9 +5135,9 @@ yy.ExistsValue.prototype.toType = function() { return 'boolean'; }; -yy.ExistsValue.prototype.toJavaScript = function() { +yy.ExistsValue.prototype.toJavaScript = function(context,tableid,defcols) { // return 'ww=this.existsfn['+this.existsidx+'](params,null,p).length,console.log(ww),ww'; - return 'this.existsfn['+this.existsidx+'](params,null,p).length'; + return 'this.existsfn['+this.existsidx+'](params,null,'+context+').length'; }; yy.Select.prototype.compileWhereExists = function(query) { diff --git a/console/alasql.min.js b/console/alasql.min.js index 69de515ef3..a5c2c40aa6 100644 --- a/console/alasql.min.js +++ b/console/alasql.min.js @@ -1,8 +1,8 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){var alasql=function(sql,params,cb,scope){if(typeof importScripts!="function"&&alasql.webworker){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}else{if(arguments.length==0){return new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]})}else if(arguments.length==1&&typeof sql=="object"&&sql instanceof Array){var select=new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]});select.preparams=[sql];return select}else{if(typeof sql=="string"&&sql[0]=="#"&&typeof document=="object"){sql=document.querySelector(sql).textContent}else if(typeof sql=="object"&&sql instanceof HTMElement){sql=sql.textContent}else if(typeof sql=="function"){sql=sql.toString().slice(14,-3)}return alasql.exec(sql,params,cb,scope)}}};alasql.version="0.0.36";var parser=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,11],$V1=[1,6],$V2=[1,35],$V3=[1,61],$V4=[1,80],$V5=[1,70],$V6=[1,68],$V7=[1,78],$V8=[1,54],$V9=[1,57],$Va=[1,52],$Vb=[1,49],$Vc=[1,56],$Vd=[1,50],$Ve=[1,58],$Vf=[1,51],$Vg=[1,55],$Vh=[1,67],$Vi=[1,62],$Vj=[1,69],$Vk=[1,71],$Vl=[1,72],$Vm=[1,65],$Vn=[1,66],$Vo=[1,64],$Vp=[1,73],$Vq=[1,74],$Vr=[1,75],$Vs=[1,76],$Vt=[1,77],$Vu=[1,53],$Vv=[1,63],$Vw=[1,60],$Vx=[1,82],$Vy=[1,83],$Vz=[8,9,11,201],$VA=[8,9,11,201,205],$VB=[1,138],$VC=[1,139],$VD=[1,103],$VE=[1,114],$VF=[1,111],$VG=[1,110],$VH=[1,128],$VI=[1,124],$VJ=[1,125],$VK=[1,129],$VL=[1,130],$VM=[1,131],$VN=[1,132],$VO=[1,133],$VP=[1,134],$VQ=[1,135],$VR=[1,136],$VS=[1,137],$VT=[1,112],$VU=[1,113],$VV=[1,115],$VW=[1,116],$VX=[1,121],$VY=[1,122],$VZ=[1,117],$V_=[1,118],$V$=[1,119],$V01=[1,120],$V11=[1,123],$V21=[1,109],$V31=[1,108],$V41=[1,107],$V51=[1,127],$V61=[1,140],$V71=[1,151],$V81=[4,5],$V91=[8,9,11,65,97,124,125,135,136,137,138,144,201,205],$Va1=[1,167],$Vb1=[1,175],$Vc1=[1,174],$Vd1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Ve1=[1,206],$Vf1=[1,199],$Vg1=[4,5,64,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vh1=[2,74],$Vi1=[1,220],$Vj1=[4,5,64,75,78,79,88,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vk1=[1,236],$Vl1=[1,232],$Vm1=[1,233],$Vn1=[1,234],$Vo1=[1,235],$Vp1=[1,237],$Vq1=[1,238],$Vr1=[1,239],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,242],$Vv1=[1,243],$Vw1=[1,244],$Vx1=[1,245],$Vy1=[1,246],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,249],$VC1=[1,250],$VD1=[1,252],$VE1=[1,253],$VF1=[1,255],$VG1=[1,254],$VH1=[1,256],$VI1=[1,257],$VJ1=[1,258],$VK1=[1,259],$VL1=[2,193],$VM1=[1,263],$VN1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VO1=[2,251],$VP1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VQ1=[1,271],$VR1=[1,281],$VS1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VT1=[1,297],$VU1=[4,5,8,9,11,45,59,61,63,64,65,78,80,86,91,96,97,102,104,106,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,195,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,244,246,250,257,258,259,263,274,275,276,278,279,287,288,291,292,294,295,296,297,298,299,300,301,303,304,305,309,311,312,320,322,327,328,330,331,333,334,335,336,337,339,342,343,355],$VV1=[1,304],$VW1=[1,305],$VX1=[2,364],$VY1=[1,310],$VZ1=[8,9,11,61,201,205],$V_1=[2,416],$V$1=[1,321],$V02=[8,9,11,65,124,125,135,136,137,138,144,201,205],$V12=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22=[2,110],$V32=[1,349],$V42=[61,80],$V52=[8,9,11,61,65,191,201,205,228,246,258,274,275,278,279,291],$V62=[79,235,236],$V72=[1,414],$V82=[1,420],$V92=[1,421],$Va2=[1,431],$Vb2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,208,209,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vc2=[2,266],$Vd2=[1,438],$Ve2=[201,203,205],$Vf2=[61,322],$Vg2=[61,320,322],$Vh2=[1,445],$Vi2=[61,320],$Vj2=[4,5,96,190],$Vk2=[8,9,11,65,125,135,136,137,138,144,201,205],$Vl2=[8,9,11,65,91,97,124,125,135,136,137,138,144,201,205],$Vm2=[1,512],$Vn2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,201,205],$Vo2=[2,176],$Vp2=[1,514],$Vq2=[1,515],$Vr2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,149,150,201,205],$Vs2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vt2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vu2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vv2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vw2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vx2=[1,537],$Vy2=[61,65],$Vz2=[2,191],$VA2=[1,577],$VB2=[8,9,11,65,135,136,137,138,144,201,205],$VC2=[8,9,11,61,65,124,125,135,136,137,138,144,201,205],$VD2=[1,592],$VE2=[1,593],$VF2=[1,595],$VG2=[1,596],$VH2=[1,597],$VI2=[1,598],$VJ2=[1,599],$VK2=[1,600],$VL2=[1,601],$VM2=[1,602],$VN2=[1,606],$VO2=[1,617],$VP2=[8,9,11,61,124,201,203,205,355],$VQ2=[1,625],$VR2=[1,624],$VS2=[2,229],$VT2=[1,646],$VU2=[2,433],$VV2=[1,667],$VW2=[1,679],$VX2=[8,9,11,61,201,203,205,355],$VY2=[1,682],$VZ2=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V_2=[8,9,11,65,135,136,137,144,201,205],$V$2=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V03=[1,696],$V13=[1,698],$V23=[4,5,64,192,194,195,196,197],$V33=[8,9,11,201,203,205,355],$V43=[213,218],$V53=[1,738],$V63=[8,9,11,61,65,201,205],$V73=[1,754],$V83=[8,9,11,65,135,136,137,201,205],$V93=[1,773],$Va3=[1,774],$Vb3=[1,775],$Vc3=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$Vd3=[1,805],$Ve3=[1,818],$Vf3=[1,819],$Vg3=[1,817],$Vh3=[1,815],$Vi3=[1,821],$Vj3=[1,812],$Vk3=[1,813],$Vl3=[1,814],$Vm3=[1,816],$Vn3=[1,825],$Vo3=[1,830],$Vp3=[1,831],$Vq3=[1,832],$Vr3=[1,833],$Vs3=[78,86,274,275,276,278],$Vt3=[2,376],$Vu3=[1,838],$Vv3=[8,9,11,65,201,205],$Vw3=[1,851],$Vx3=[8,9,11,61,65,134,135,136,137,138,144,201,205],$Vy3=[1,868],$Vz3=[1,867],$VA3=[8,9,11,201,205,246,257,258,259],$VB3=[1,918],$VC3=[8,9,11,61,65,135,136,137,144,201,205],$VD3=[1,935];var parser={trace:function trace(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,SEMICOLON:9,AStatement:10,GO:11,ExplainStatement:12,EXPLAIN:13,QUERY:14,PLAN:15,Statement:16,If:17,AlterTable:18,AttachDatabase:19,CreateDatabase:20,CreateIndex:21,CreateTable:22,CreateView:23,Declare:24,Delete:25,DetachDatabase:26,DropDatabase:27,DropIndex:28,DropTable:29,DropView:30,Insert:31,RenameTable:32,Select:33,Merge:34,WithSelect:35,ShowCreateTable:36,ShowColumns:37,ShowDatabases:38,ShowIndex:39,ShowTables:40,TruncateTable:41,BeginTransaction:42,CommitTransaction:43,RollbackTransaction:44,EndTransaction:45,UseDatabase:46,Update:47,Help:48,JavaScript:49,Source:50,Assert:51,While:52,Continue:53,Break:54,BeginEnd:55,Print:56,Require:57,SetVariable:58,WITH:59,WithTablesList:60,COMMA:61,WithTable:62,AS:63,LPAR:64,RPAR:65,SelectClause:66,IntoClause:67,FromClause:68,WhereClause:69,GroupClause:70,OrderClause:71,LimitClause:72,UnionClause:73,SelectModifier:74,DISTINCT:75,TopClause:76,ResultColumns:77,UNIQUE:78,ALL:79,SELECT:80,VALUE:81,ROW:82,COLUMN:83,MATRIX:84,TEXTSTRING:85,INDEX:86,RECORDSET:87,TOP:88,NumValue:89,PERCENT:90,INTO:91,Table:92,FuncValue:93,ParamValue:94,VarValue:95,STRING:96,FROM:97,FromTablesList:98,FromTable:99,JoinTablesList:100,ApplyClause:101,CROSS:102,APPLY:103,OUTER:104,FromString:105,DOT:106,JoinTable:107,JoinMode:108,JoinTableAs:109,OnClause:110,JoinModeMode:111,NATURAL:112,JOIN:113,INNER:114,LEFT:115,RIGHT:116,FULL:117,SEMI:118,ANTI:119,ON:120,Expression:121,USING:122,ColumnsList:123,WHERE:124,GROUP:125,BY:126,GroupExpressionsList:127,HavingClause:128,GroupExpression:129,GROUPING:130,SETS:131,ROLLUP:132,CUBE:133,HAVING:134,UNION:135,EXCEPT:136,INTERSECT:137,ORDER:138,OrderExpressionsList:139,OrderExpression:140,DIRECTION:141,COLLATE:142,NOCASE:143,LIMIT:144,OffsetClause:145,OFFSET:146,ResultColumn:147,TDTH:148,TD:149,TH:150,NUMBER:151,StringValue:152,Star:153,STAR:154,Column:155,AggrValue:156,Op:157,LogicValue:158,NullValue:159,ExistsValue:160,CaseValue:161,CastClause:162,Json:163,NewClause:164,JAVASCRIPT:165,NEW:166,CAST:167,ColumnType:168,CONVERT:169,PrimitiveValue:170,CURRENT_TIMESTAMP:171,Aggregator:172,OverClause:173,OVER:174,OverPartitionClause:175,OverOrderByClause:176,PARTITION:177,SUM:178,COUNT:179,MIN:180,MAX:181,AVG:182,FIRST:183,LAST:184,AGGR:185,ARRAY:186,ExprList:187,TRUE:188,FALSE:189,NSTRING:190,NULL:191,AT:192,EXISTS:193,DOLLAR:194,COLON:195,QUESTION:196,BRAQUESTION:197,CASE:198,WhensList:199,ElseClause:200,END:201,When:202,WHEN:203,THEN:204,ELSE:205,LIKE:206,NOT_LIKE:207,PLUS:208,MINUS:209,SLASH:210,MODULO:211,CARET:212,ARROW:213,GT:214,GE:215,LT:216,LE:217,EQ:218,EQEQ:219,EQEQEQ:220,NE:221,NEEQEQ:222,NEEQEQEQ:223,CondOp:224,AllSome:225,AND:226,OR:227,NOT:228,IN:229,ColFunc:230,BETWEEN:231,NOT_BETWEEN:232,IS:233,DOUBLECOLON:234,SOME:235,ANY:236,UPDATE:237,SET:238,SetColumnsList:239,SetColumn:240,DELETE:241,INSERT:242,Into:243,VALUES:244,ValuesListsList:245,DEFAULT:246,ValuesList:247,Value:248,DateValue:249,CREATE:250,TABLE:251,IfNotExists:252,CreateTableDefClause:253,CreateTableOptionsClause:254,CreateTableOptions:255,CreateTableOption:256,ENGINE:257,AUTO_INCREMENT:258,CHARSET:259,TemporaryClause:260,TEMPORARY:261,TEMP:262,IF:263,ColumnDefsList:264,ConstraintsList:265,Constraint:266,ConstraintName:267,PrimaryKey:268,ForeignKey:269,UniqueKey:270,IndexKey:271,Check:272,CONSTRAINT:273,CHECK:274,PRIMARY:275,KEY:276,ColsList:277,FOREIGN:278,REFERENCES:279,OnForeignKeyClause:280,OnDeleteClause:281,OnUpdateClause:282,NO:283,ACTION:284,ColumnDef:285,ColumnConstraintsClause:286,ColumnConstraints:287,ENUM:288,ColumnConstraintsList:289,ColumnConstraint:290,IDENTITY:291,DROP:292,IfExists:293,ALTER:294,RENAME:295,TO:296,ADD:297,MODIFY:298,ATTACH:299,DATABASE:300,DETACH:301,AsClause:302,USE:303,SHOW:304,DATABASES:305,TABLES:306,COLUMNS:307,VIEW:308,HELP:309,ExpressionStatement:310,SOURCE:311,ASSERT:312,JsonObject:313,ATLBRA:314,JsonArray:315,JsonValue:316,JsonPrimitiveValue:317,LCUR:318,JsonPropertiesList:319,RCUR:320,JsonElementsList:321,RBRA:322,JsonProperty:323,OnOff:324,SetPropsList:325,SetProp:326,OFF:327,COMMIT:328,TRANSACTION:329,ROLLBACK:330,BEGIN:331,ElseStatement:332,WHILE:333,CONTINUE:334,BREAK:335,PRINT:336,REQUIRE:337,StringValuesList:338,DECLARE:339,DeclaresList:340,DeclareItem:341,TRUNCATE:342,MERGE:343,MergeInto:344,MergeUsing:345,MergeOn:346,MergeMatchedList:347,OutputClause:348,MergeMatched:349,MergeNotMatched:350,MATCHED:351,MergeMatchedAction:352,MergeNotMatchedAction:353,TARGET:354,OUTPUT:355,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",9:"SEMICOLON",11:"GO",13:"EXPLAIN",14:"QUERY",15:"PLAN",45:"EndTransaction",59:"WITH",61:"COMMA",63:"AS",64:"LPAR",65:"RPAR",75:"DISTINCT",78:"UNIQUE",79:"ALL",80:"SELECT",81:"VALUE",82:"ROW",83:"COLUMN",84:"MATRIX",85:"TEXTSTRING",86:"INDEX",87:"RECORDSET",88:"TOP",90:"PERCENT",91:"INTO",96:"STRING",97:"FROM",102:"CROSS",103:"APPLY",104:"OUTER",106:"DOT",112:"NATURAL",113:"JOIN",114:"INNER",115:"LEFT",116:"RIGHT",117:"FULL",118:"SEMI",119:"ANTI",120:"ON",122:"USING",124:"WHERE",125:"GROUP",126:"BY",130:"GROUPING",131:"SETS",132:"ROLLUP",133:"CUBE",134:"HAVING",135:"UNION",136:"EXCEPT",137:"INTERSECT",138:"ORDER",141:"DIRECTION",142:"COLLATE",143:"NOCASE",144:"LIMIT",146:"OFFSET",149:"TD",150:"TH",151:"NUMBER",154:"STAR",165:"JAVASCRIPT",166:"NEW",167:"CAST",169:"CONVERT",171:"CURRENT_TIMESTAMP",174:"OVER",177:"PARTITION",178:"SUM",179:"COUNT",180:"MIN",181:"MAX",182:"AVG",183:"FIRST",184:"LAST",185:"AGGR",186:"ARRAY",188:"TRUE",189:"FALSE",190:"NSTRING",191:"NULL",192:"AT",193:"EXISTS",194:"DOLLAR",195:"COLON",196:"QUESTION",197:"BRAQUESTION",198:"CASE",201:"END",203:"WHEN",204:"THEN",205:"ELSE",206:"LIKE",207:"NOT_LIKE",208:"PLUS",209:"MINUS",210:"SLASH",211:"MODULO",212:"CARET",213:"ARROW",214:"GT",215:"GE",216:"LT",217:"LE",218:"EQ",219:"EQEQ",220:"EQEQEQ",221:"NE",222:"NEEQEQ",223:"NEEQEQEQ",226:"AND",227:"OR",228:"NOT",229:"IN",231:"BETWEEN",232:"NOT_BETWEEN",233:"IS",234:"DOUBLECOLON",235:"SOME",236:"ANY",237:"UPDATE",238:"SET",241:"DELETE",242:"INSERT",244:"VALUES",246:"DEFAULT",249:"DateValue",250:"CREATE",251:"TABLE",257:"ENGINE",258:"AUTO_INCREMENT",259:"CHARSET",261:"TEMPORARY",262:"TEMP",263:"IF",273:"CONSTRAINT",274:"CHECK",275:"PRIMARY",276:"KEY",278:"FOREIGN",279:"REFERENCES",283:"NO",284:"ACTION",287:"ColumnConstraints",288:"ENUM",291:"IDENTITY",292:"DROP",294:"ALTER",295:"RENAME",296:"TO",297:"ADD",298:"MODIFY",299:"ATTACH",300:"DATABASE",301:"DETACH",303:"USE",304:"SHOW",305:"DATABASES",306:"TABLES",307:"COLUMNS",308:"VIEW",309:"HELP",311:"SOURCE",312:"ASSERT",314:"ATLBRA",318:"LCUR",320:"RCUR",322:"RBRA",327:"OFF",328:"COMMIT",329:"TRANSACTION",330:"ROLLBACK",331:"BEGIN",333:"WHILE",334:"CONTINUE",335:"BREAK",336:"PRINT",337:"REQUIRE",339:"DECLARE",342:"TRUNCATE",343:"MERGE",351:"MATCHED",354:"TARGET",355:"OUTPUT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,3],[7,1],[7,1],[12,2],[12,4],[10,1],[16,0],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[35,3],[60,3],[60,1],[62,5],[33,8],[66,4],[66,4],[66,4],[66,3],[74,1],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[76,2],[76,4],[76,3],[76,0],[67,0],[67,2],[67,2],[67,2],[67,2],[67,2],[68,2],[68,3],[68,0],[101,6],[101,7],[101,6],[101,7],[98,1],[98,3],[99,4],[99,5],[99,3],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[105,1],[92,3],[92,1],[100,2],[100,2],[100,1],[100,1],[107,3],[109,1],[109,2],[109,3],[109,2],[109,3],[109,4],[109,5],[109,1],[109,2],[109,3],[109,1],[109,2],[109,3],[108,1],[108,2],[111,1],[111,2],[111,2],[111,3],[111,2],[111,3],[111,2],[111,3],[111,2],[111,2],[111,2],[110,2],[110,2],[110,0],[69,0],[69,2],[70,0],[70,4],[127,1],[127,3],[129,5],[129,4],[129,4],[129,1],[128,0],[128,2],[73,0],[73,2],[73,3],[73,2],[73,2],[71,0],[71,3],[139,1],[139,3],[140,1],[140,2],[140,3],[140,4],[72,0],[72,3],[145,0],[145,2],[77,4],[77,2],[148,0],[148,2],[148,2],[148,4],[147,3],[147,2],[147,3],[147,2],[147,3],[147,2],[147,1],[153,5],[153,3],[153,1],[155,5],[155,3],[155,3],[155,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,3],[121,1],[49,1],[164,2],[164,2],[162,6],[162,8],[162,6],[162,8],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[156,5],[156,6],[156,6],[173,0],[173,4],[173,4],[173,5],[175,3],[176,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[93,4],[93,3],[187,1],[187,3],[89,1],[158,1],[158,1],[152,1],[152,1],[159,1],[95,2],[160,4],[94,2],[94,2],[94,1],[94,1],[161,5],[161,4],[199,2],[199,1],[202,4],[200,2],[200,0],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,5],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,6],[157,6],[157,3],[157,3],[157,2],[157,2],[157,2],[157,3],[157,5],[157,6],[157,5],[157,6],[157,4],[157,5],[157,3],[157,4],[157,3],[157,3],[157,3],[157,3],[230,1],[230,1],[230,4],[224,1],[224,1],[224,1],[224,1],[224,1],[224,1],[225,1],[225,1],[225,1],[47,6],[47,4],[239,1],[239,3],[240,3],[25,5],[25,3],[31,5],[31,5],[31,8],[31,4],[31,7],[243,0],[243,1],[245,3],[245,1],[245,1],[245,5],[245,3],[245,3],[247,1],[247,3],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[123,1],[123,3],[22,8],[22,4],[254,0],[254,1],[255,2],[255,1],[256,1],[256,3],[256,3],[256,3],[260,0],[260,1],[260,1],[252,0],[252,3],[253,3],[253,1],[253,2],[265,1],[265,3],[266,2],[266,2],[266,2],[266,2],[266,2],[267,0],[267,2],[272,4],[268,5],[269,11],[280,0],[280,2],[281,4],[282,4],[270,1],[271,5],[271,5],[277,1],[277,1],[277,3],[277,3],[264,1],[264,3],[285,3],[285,2],[285,1],[168,6],[168,4],[168,1],[168,4],[286,0],[286,1],[289,2],[289,1],[290,2],[290,7],[290,5],[290,1],[290,6],[290,1],[290,2],[290,1],[290,2],[290,1],[29,4],[293,0],[293,2],[18,6],[18,6],[18,6],[18,8],[18,6],[32,5],[19,4],[19,7],[19,6],[19,9],[26,3],[20,4],[20,6],[20,9],[20,6],[302,0],[302,2],[46,3],[46,2],[27,4],[27,5],[27,5],[21,8],[21,9],[28,3],[38,2],[38,4],[38,3],[38,5],[40,2],[40,4],[40,4],[40,6],[37,4],[37,6],[39,4],[39,6],[36,4],[36,6],[23,9],[23,6],[30,4],[48,2],[48,1],[310,1],[50,2],[51,2],[51,2],[51,4],[163,4],[163,2],[163,2],[163,2],[163,2],[163,1],[163,2],[163,2],[316,1],[316,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,3],[313,3],[313,4],[313,2],[315,2],[315,3],[315,1],[319,3],[319,1],[323,3],[323,3],[323,3],[321,3],[321,1],[58,3],[58,5],[58,6],[325,3],[325,2],[326,1],[326,1],[326,3],[324,1],[324,1],[43,2],[44,2],[42,2],[17,4],[17,3],[332,2],[52,3],[53,1],[54,1],[55,3],[56,2],[56,2],[57,2],[338,3],[338,1],[24,2],[340,1],[340,3],[341,3],[341,4],[341,5],[341,6],[41,3],[34,6],[344,1],[344,2],[345,2],[346,2],[347,2],[347,2],[347,1],[347,1],[349,4],[349,6],[352,1],[352,3],[350,5],[350,7],[350,7],[350,9],[350,7],[350,9],[353,3],[353,6],[353,3],[353,6],[348,0],[348,2],[348,5],[348,4],[348,7]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:if(yy.casesensitive)this.$=$$[$0];else this.$=$$[$0].toLowerCase();break;case 2:this.$=doubleq($$[$0].substr(1,$$[$0].length-2));break;case 3:return new yy.Statements({statements:$$[$0-1]});break;case 4:case 5:this.$=$$[$0-2];if($$[$0])$$[$0-2].push($$[$0]);break;case 6:case 7:case 56:case 88:case 113:case 114:case 149:case 164:case 246:case 263:case 323:case 336:case 337:case 341:case 349:case 388:case 389:case 497:case 502:case 522:case 524:case 538:case 539:this.$=[$$[$0]];break;case 8:this.$=$$[$0];$$[$0].explain=true;break;case 9:this.$=$$[$0];$$[$0].explain=true;break;case 10:this.$=$$[$0];if(yy.exists)this.$.exists=yy.exists;delete yy.exists;if(yy.queries)this.$.queries=yy.queries;delete yy.queries;break;case 11:case 63:case 74:case 83:case 144:case 145:case 147:case 155:case 157:case 162:case 170:case 172:case 225:case 266:case 361:case 364:case 376:case 381:case 382:case 416:this.$=undefined;break;case 54:this.$=new yy.WithSelect({withs:$$[$0-1],select:$$[$0]});break;case 55:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 57:this.$={name:$$[$0-4],select:$$[$0-1]};break;case 58:yy.extend(this.$,$$[$0-7]);yy.extend(this.$,$$[$0-6]);yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);this.$=$$[$0-7];break;case 59:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 60:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 61:this.$=new yy.Select({columns:$$[$0],all:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 62:this.$=new yy.Select({columns:$$[$0]});yy,extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 64:this.$={modifier:"VALUE"};break;case 65:this.$={modifier:"ROW"};break;case 66:this.$={modifier:"COLUMN"};break;case 67:this.$={modifier:"MATRIX"};break;case 68:this.$={modifier:"TEXTSTRING"};break;case 69:this.$={modifier:"INDEX"};break;case 70:this.$={modifier:"RECORDSET"};break;case 71:this.$={top:$$[$0]};break;case 72:this.$={top:$$[$0-1]};break;case 73:this.$={top:$$[$0-1],percent:true};break;case 75:case 229:case 383:case 384:this.$=undefined;break;case 76:case 77:case 78:case 79:this.$={into:$$[$0]};break;case 80:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();if(s[0]=="#"){this.$={into:new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){this.$={into:new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x4=="XLSX"||x4=="JSON"){this.$={into:new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}break;case 81:this.$={from:$$[$0]};break;case 82:this.$={from:[$$[$0-1]],joins:$$[$0]};break;case 84:this.$=new yy.Apply({select:$$[$0-2],applymode:"CROSS",as:$$[$0]});break;case 85:this.$=new yy.Apply({select:$$[$0-3],applymode:"CROSS",as:$$[$0]});break;case 86:this.$=new yy.Apply({select:$$[$0-2],applymode:"OUTER",as:$$[$0]});break;case 87:this.$=new yy.Apply({select:$$[$0-3],applymode:"OUTER",as:$$[$0]});break;case 89:case 150:case 324:case 390:case 391:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 90:this.$=$$[$0-2];this.$.as=$$[$0];break;case 91:this.$=$$[$0-3];this.$.as=$$[$0];break;case 92:this.$=$$[$0-1];this.$.as="default";break;case 93:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 94:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 95:case 154:case 186:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 209:case 219:case 220:case 221:case 222:case 223:case 224:case 265:case 312:case 313:case 314:case 315:case 316:case 317:case 377:case 402:case 404:case 471:case 472:case 473:case 474:case 475:case 476:case 480:case 482:case 483:case 492:case 503:case 504:this.$=$$[$0];break;case 96:case 100:case 103:case 106:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 97:case 101:case 104:case 107:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 98:case 99:case 102:case 105:this.$=$$[$0];$$[$0].as="default";break;case 108:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();var r;if(s[0]=="#"){r=new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){r=new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x4=="XLSX"||x4=="JSON"){r=new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else{throw new Error("Unknown string in FROM clause")};this.$=r;break;case 109:this.$=new yy.Table({databaseid:$$[$0-2],tableid:$$[$0]});break;case 110:this.$=new yy.Table({tableid:$$[$0]});break;case 111:case 112:this.$=$$[$0-1];$$[$0-1].push($$[$0]);break;case 115:this.$=new yy.Join($$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 116:this.$={table:$$[$0]};break;case 117:this.$={table:$$[$0-1],as:$$[$0]};break;case 118:this.$={table:$$[$0-2],as:$$[$0]};break;case 119:this.$={param:$$[$0-1],as:$$[$0]};break;case 120:this.$={param:$$[$0-2],as:$$[$0]};break;case 121:this.$={select:$$[$0-3],as:$$[$0]};break;case 122:this.$={select:$$[$0-4],as:$$[$0]};break;case 123:this.$={funcid:$$[$0],as:"default"};break;case 124:this.$={funcid:$$[$0-1],as:$$[$0]};break;case 125:this.$={funcid:$$[$0-2],as:$$[$0]};break;case 126:this.$={variable:$$[$0],as:"default"};break;case 127:this.$={variable:$$[$0-1],as:$$[$0]};break;case 128:this.$={variable:$$[$0-2],as:$$[$0]};break;case 129:this.$={joinmode:$$[$0]};break;case 130:this.$={joinmode:$$[$0-1],natural:true};break;case 131:case 132:this.$="INNER";break;case 133:case 134:this.$="LEFT";break;case 135:case 136:this.$="RIGHT";break;case 137:case 138:this.$="OUTER";break;case 139:this.$="SEMI";break;case 140:this.$="ANTI";break;case 141:this.$="CROSS";break;case 142:this.$={on:$$[$0]};break;case 143:case 534:this.$={using:$$[$0]};break;case 146:this.$={where:new yy.Expression({expression:$$[$0]})};break;case 148:this.$={group:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 151:this.$=new yy.GroupExpression({type:"GROUPING SETS",group:$$[$0-1]});break;case 152:this.$=new yy.GroupExpression({type:"ROLLUP",group:$$[$0-1]});break;case 153:this.$=new yy.GroupExpression({type:"CUBE",group:$$[$0-1]});break;case 156:this.$={having:$$[$0]};break;case 158:this.$={union:$$[$0]};break;case 159:this.$={unionall:$$[$0]};break;case 160:this.$={except:$$[$0]};break;case 161:this.$={intersect:$$[$0]};break;case 163:this.$={order:$$[$0]};break;case 165:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 166:this.$=new yy.Expression({expression:$$[$0],direction:"ASC"});break;case 167:this.$=new yy.Expression({expression:$$[$0-1],direction:$$[$0].toUpperCase()});break;case 168:this.$=new yy.Expression({expression:$$[$0-2],direction:"ASC",nocase:true});break;case 169:this.$=new yy.Expression({expression:$$[$0-3],direction:$$[$0].toUpperCase(),nocase:true});break;case 171:this.$={limit:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 173:this.$={offset:$$[$0]};break;case 174:yy.extend($$[$0-1],$$[$0]);$$[$0-3].push($$[$0-1]);this.$=$$[$0-3];break;case 175:yy.extend($$[$0-1],$$[$0]);this.$=[$$[$0-1]];break;case 176:this.$=undefined;break;case 177:this.$={td:$$[$0]};break;case 178:this.$={th:$$[$0]};break;case 179:this.$={th:$$[$0-2],td:$$[$0]};break;case 180:case 182:case 184:$$[$0-2].as=$$[$0];this.$=$$[$0-2];break;case 181:case 183:case 185:$$[$0-1].as=$$[$0];this.$=$$[$0-1];break;case 187:this.$=new yy.Column({columid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 188:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 189:this.$=new yy.Column({columnid:$$[$0]});break;case 190:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 191:case 192:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 193:this.$=new yy.Column({columnid:$$[$0]});break;case 208:this.$=new yy.Json({value:$$[$0]});break;case 210:if(!yy.queries)yy.queries=[];yy.queries.push($$[$0-1]);$$[$0-1].queriesidx=yy.queries.length;this.$=$$[$0-1];break;case 211:this.$=$$[$0];break;case 212:this.$=new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});break;case 213:this.$=new yy.FuncValue({funcid:$$[$0],newid:true});break;case 214:this.$=$$[$0];yy.extend(this.$,{newid:true});break;case 215:this.$=new yy.Convert({expression:$$[$0-3]});yy.extend(this.$,$$[$0-1]);break;case 216:this.$=new yy.Convert({expression:$$[$0-5],style:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 217:this.$=new yy.Convert({expression:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 218:this.$=new yy.Convert({expression:$$[$0-3],style:$$[$0-1]});yy.extend(this.$,$$[$0-5]);break;case 226:this.$=new yy.AggrValue({aggregatorid:$$[$0-4].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 227:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],distinct:true,over:$$[$0]});break;case 228:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 230:case 231:this.$=new yy.Over;yy.extend(this.$,$$[$0-1]);break;case 232:this.$=new yy.Over;yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 233:this.$={partition:$$[$0]};break;case 234:this.$={order:$$[$0]};break;case 235:this.$="SUM";break;case 236:this.$="COUNT";break;case 237:this.$="MIN";break;case 238:this.$="MAX";break;case 239:this.$="AVG";break;case 240:this.$="FIRST";break;case 241:this.$="LAST";break;case 242:this.$="AGGR";break;case 243:this.$="ARRAY";break;case 244:if(alasql.aggr[$$[$0-3]]){this.$=new yy.AggrValue({aggregatorid:"REDUCE",funcid:$$[$0-3],expression:$$[$0-1].pop()})}else{this.$=new yy.FuncValue({funcid:$$[$0-3],args:$$[$0-1]})};break;case 245:this.$=new yy.FuncValue({funcid:$$[$0-2]});break;case 247:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 248:this.$=new yy.NumValue({value:+$$[$0]});break;case 249:this.$=new yy.LogicValue({value:true});break;case 250:this.$=new yy.LogicValue({value:false});break;case 251:this.$=new yy.StringValue({value:$$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 252:this.$=new yy.StringValue({value:$$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 253:this.$=new yy.NullValue({value:undefined});break;case 254:this.$=new yy.VarValue({variable:$$[$0]});break;case 255:if(!yy.exists)yy.exists=[];this.$=new yy.ExistsValue({value:$$[$0-1],existsidx:yy.exists.length});yy.exists.push($$[$0-1]);break;case 256:case 257:this.$=new yy.ParamValue({param:$$[$0]});break;case 258:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++});break;case 259:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++,array:true});break;case 260:this.$=new yy.CaseValue({expression:$$[$0-3],whens:$$[$0-2],elses:$$[$0-1]});break;case 261:this.$=new yy.CaseValue({whens:$$[$0-2],elses:$$[$0-1]}); +(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){var alasql=function(sql,params,cb,scope){if(typeof importScripts!="function"&&alasql.webworker){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}else{if(arguments.length==0){return new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]})}else if(arguments.length==1&&typeof sql=="object"&&sql instanceof Array){var select=new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]});select.preparams=[sql];return select}else{if(typeof sql=="string"&&sql[0]=="#"&&typeof document=="object"){sql=document.querySelector(sql).textContent}else if(typeof sql=="object"&&sql instanceof HTMElement){sql=sql.textContent}else if(typeof sql=="function"){sql=sql.toString().slice(14,-3)}return alasql.exec(sql,params,cb,scope)}}};alasql.version="0.0.44";var parser=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,11],$V1=[1,6],$V2=[1,35],$V3=[1,61],$V4=[1,80],$V5=[1,70],$V6=[1,68],$V7=[1,78],$V8=[1,54],$V9=[1,57],$Va=[1,52],$Vb=[1,49],$Vc=[1,56],$Vd=[1,50],$Ve=[1,58],$Vf=[1,51],$Vg=[1,55],$Vh=[1,67],$Vi=[1,62],$Vj=[1,69],$Vk=[1,71],$Vl=[1,72],$Vm=[1,65],$Vn=[1,66],$Vo=[1,64],$Vp=[1,73],$Vq=[1,74],$Vr=[1,75],$Vs=[1,76],$Vt=[1,77],$Vu=[1,53],$Vv=[1,63],$Vw=[1,60],$Vx=[1,82],$Vy=[1,83],$Vz=[8,9,11,201],$VA=[8,9,11,201,205],$VB=[1,138],$VC=[1,139],$VD=[1,103],$VE=[1,114],$VF=[1,111],$VG=[1,110],$VH=[1,128],$VI=[1,124],$VJ=[1,125],$VK=[1,129],$VL=[1,130],$VM=[1,131],$VN=[1,132],$VO=[1,133],$VP=[1,134],$VQ=[1,135],$VR=[1,136],$VS=[1,137],$VT=[1,112],$VU=[1,113],$VV=[1,115],$VW=[1,116],$VX=[1,121],$VY=[1,122],$VZ=[1,117],$V_=[1,118],$V$=[1,119],$V01=[1,120],$V11=[1,123],$V21=[1,109],$V31=[1,108],$V41=[1,107],$V51=[1,127],$V61=[1,140],$V71=[1,151],$V81=[4,5],$V91=[8,9,11,65,97,124,125,135,136,137,138,144,201,205],$Va1=[1,167],$Vb1=[1,175],$Vc1=[1,174],$Vd1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Ve1=[1,206],$Vf1=[1,199],$Vg1=[4,5,64,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vh1=[2,74],$Vi1=[1,220],$Vj1=[4,5,64,75,78,79,88,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vk1=[1,236],$Vl1=[1,232],$Vm1=[1,233],$Vn1=[1,234],$Vo1=[1,235],$Vp1=[1,237],$Vq1=[1,238],$Vr1=[1,239],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,242],$Vv1=[1,243],$Vw1=[1,244],$Vx1=[1,245],$Vy1=[1,246],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,249],$VC1=[1,250],$VD1=[1,252],$VE1=[1,253],$VF1=[1,255],$VG1=[1,254],$VH1=[1,256],$VI1=[1,257],$VJ1=[1,258],$VK1=[1,259],$VL1=[2,193],$VM1=[1,263],$VN1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VO1=[2,251],$VP1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VQ1=[1,271],$VR1=[1,281],$VS1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VT1=[1,297],$VU1=[4,5,8,9,11,45,59,61,63,64,65,78,80,86,91,96,97,102,104,106,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,195,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,244,246,250,257,258,259,263,274,275,276,278,279,287,288,291,292,294,295,296,297,298,299,300,301,303,304,305,309,311,312,320,322,327,328,330,331,333,334,335,336,337,339,342,343,355],$VV1=[1,304],$VW1=[1,305],$VX1=[2,364],$VY1=[1,310],$VZ1=[8,9,11,61,201,205],$V_1=[2,416],$V$1=[1,321],$V02=[8,9,11,65,124,125,135,136,137,138,144,201,205],$V12=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22=[2,110],$V32=[1,349],$V42=[61,80],$V52=[8,9,11,61,65,191,201,205,228,246,258,274,275,278,279,291],$V62=[79,235,236],$V72=[1,414],$V82=[1,420],$V92=[1,421],$Va2=[1,431],$Vb2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,208,209,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vc2=[2,266],$Vd2=[1,438],$Ve2=[201,203,205],$Vf2=[61,322],$Vg2=[61,320,322],$Vh2=[1,445],$Vi2=[61,320],$Vj2=[4,5,96,190],$Vk2=[8,9,11,65,125,135,136,137,138,144,201,205],$Vl2=[8,9,11,65,91,97,124,125,135,136,137,138,144,201,205],$Vm2=[1,512],$Vn2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,201,205],$Vo2=[2,176],$Vp2=[1,514],$Vq2=[1,515],$Vr2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,149,150,201,205],$Vs2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vt2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vu2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vv2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vw2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vx2=[1,537],$Vy2=[61,65],$Vz2=[2,191],$VA2=[1,577],$VB2=[8,9,11,65,135,136,137,138,144,201,205],$VC2=[8,9,11,61,65,124,125,135,136,137,138,144,201,205],$VD2=[1,592],$VE2=[1,593],$VF2=[1,595],$VG2=[1,596],$VH2=[1,597],$VI2=[1,598],$VJ2=[1,599],$VK2=[1,600],$VL2=[1,601],$VM2=[1,602],$VN2=[1,606],$VO2=[1,617],$VP2=[8,9,11,61,124,201,203,205,355],$VQ2=[1,625],$VR2=[1,624],$VS2=[2,229],$VT2=[1,646],$VU2=[2,433],$VV2=[1,667],$VW2=[1,679],$VX2=[8,9,11,61,201,203,205,355],$VY2=[1,682],$VZ2=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V_2=[8,9,11,65,135,136,137,144,201,205],$V$2=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V03=[1,696],$V13=[1,698],$V23=[4,5,64,192,194,195,196,197],$V33=[8,9,11,201,203,205,355],$V43=[213,218],$V53=[1,738],$V63=[8,9,11,61,65,201,205],$V73=[1,754],$V83=[8,9,11,65,135,136,137,201,205],$V93=[1,773],$Va3=[1,774],$Vb3=[1,775],$Vc3=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$Vd3=[1,805],$Ve3=[1,818],$Vf3=[1,819],$Vg3=[1,817],$Vh3=[1,815],$Vi3=[1,821],$Vj3=[1,812],$Vk3=[1,813],$Vl3=[1,814],$Vm3=[1,816],$Vn3=[1,825],$Vo3=[1,830],$Vp3=[1,831],$Vq3=[1,832],$Vr3=[1,833],$Vs3=[78,86,274,275,276,278],$Vt3=[2,376],$Vu3=[1,838],$Vv3=[8,9,11,65,201,205],$Vw3=[1,851],$Vx3=[8,9,11,61,65,134,135,136,137,138,144,201,205],$Vy3=[1,868],$Vz3=[1,867],$VA3=[8,9,11,201,205,246,257,258,259],$VB3=[1,918],$VC3=[8,9,11,61,65,135,136,137,144,201,205],$VD3=[1,935];var parser={trace:function trace(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,SEMICOLON:9,AStatement:10,GO:11,ExplainStatement:12,EXPLAIN:13,QUERY:14,PLAN:15,Statement:16,If:17,AlterTable:18,AttachDatabase:19,CreateDatabase:20,CreateIndex:21,CreateTable:22,CreateView:23,Declare:24,Delete:25,DetachDatabase:26,DropDatabase:27,DropIndex:28,DropTable:29,DropView:30,Insert:31,RenameTable:32,Select:33,Merge:34,WithSelect:35,ShowCreateTable:36,ShowColumns:37,ShowDatabases:38,ShowIndex:39,ShowTables:40,TruncateTable:41,BeginTransaction:42,CommitTransaction:43,RollbackTransaction:44,EndTransaction:45,UseDatabase:46,Update:47,Help:48,JavaScript:49,Source:50,Assert:51,While:52,Continue:53,Break:54,BeginEnd:55,Print:56,Require:57,SetVariable:58,WITH:59,WithTablesList:60,COMMA:61,WithTable:62,AS:63,LPAR:64,RPAR:65,SelectClause:66,IntoClause:67,FromClause:68,WhereClause:69,GroupClause:70,OrderClause:71,LimitClause:72,UnionClause:73,SelectModifier:74,DISTINCT:75,TopClause:76,ResultColumns:77,UNIQUE:78,ALL:79,SELECT:80,VALUE:81,ROW:82,COLUMN:83,MATRIX:84,TEXTSTRING:85,INDEX:86,RECORDSET:87,TOP:88,NumValue:89,PERCENT:90,INTO:91,Table:92,FuncValue:93,ParamValue:94,VarValue:95,STRING:96,FROM:97,FromTablesList:98,FromTable:99,JoinTablesList:100,ApplyClause:101,CROSS:102,APPLY:103,OUTER:104,FromString:105,DOT:106,JoinTable:107,JoinMode:108,JoinTableAs:109,OnClause:110,JoinModeMode:111,NATURAL:112,JOIN:113,INNER:114,LEFT:115,RIGHT:116,FULL:117,SEMI:118,ANTI:119,ON:120,Expression:121,USING:122,ColumnsList:123,WHERE:124,GROUP:125,BY:126,GroupExpressionsList:127,HavingClause:128,GroupExpression:129,GROUPING:130,SETS:131,ROLLUP:132,CUBE:133,HAVING:134,UNION:135,EXCEPT:136,INTERSECT:137,ORDER:138,OrderExpressionsList:139,OrderExpression:140,DIRECTION:141,COLLATE:142,NOCASE:143,LIMIT:144,OffsetClause:145,OFFSET:146,ResultColumn:147,TDTH:148,TD:149,TH:150,NUMBER:151,StringValue:152,Star:153,STAR:154,Column:155,AggrValue:156,Op:157,LogicValue:158,NullValue:159,ExistsValue:160,CaseValue:161,CastClause:162,Json:163,NewClause:164,JAVASCRIPT:165,NEW:166,CAST:167,ColumnType:168,CONVERT:169,PrimitiveValue:170,CURRENT_TIMESTAMP:171,Aggregator:172,OverClause:173,OVER:174,OverPartitionClause:175,OverOrderByClause:176,PARTITION:177,SUM:178,COUNT:179,MIN:180,MAX:181,AVG:182,FIRST:183,LAST:184,AGGR:185,ARRAY:186,ExprList:187,TRUE:188,FALSE:189,NSTRING:190,NULL:191,AT:192,EXISTS:193,DOLLAR:194,COLON:195,QUESTION:196,BRAQUESTION:197,CASE:198,WhensList:199,ElseClause:200,END:201,When:202,WHEN:203,THEN:204,ELSE:205,LIKE:206,NOT_LIKE:207,PLUS:208,MINUS:209,SLASH:210,MODULO:211,CARET:212,ARROW:213,GT:214,GE:215,LT:216,LE:217,EQ:218,EQEQ:219,EQEQEQ:220,NE:221,NEEQEQ:222,NEEQEQEQ:223,CondOp:224,AllSome:225,AND:226,OR:227,NOT:228,IN:229,ColFunc:230,BETWEEN:231,NOT_BETWEEN:232,IS:233,DOUBLECOLON:234,SOME:235,ANY:236,UPDATE:237,SET:238,SetColumnsList:239,SetColumn:240,DELETE:241,INSERT:242,Into:243,VALUES:244,ValuesListsList:245,DEFAULT:246,ValuesList:247,Value:248,DateValue:249,CREATE:250,TABLE:251,IfNotExists:252,CreateTableDefClause:253,CreateTableOptionsClause:254,CreateTableOptions:255,CreateTableOption:256,ENGINE:257,AUTO_INCREMENT:258,CHARSET:259,TemporaryClause:260,TEMPORARY:261,TEMP:262,IF:263,ColumnDefsList:264,ConstraintsList:265,Constraint:266,ConstraintName:267,PrimaryKey:268,ForeignKey:269,UniqueKey:270,IndexKey:271,Check:272,CONSTRAINT:273,CHECK:274,PRIMARY:275,KEY:276,ColsList:277,FOREIGN:278,REFERENCES:279,OnForeignKeyClause:280,OnDeleteClause:281,OnUpdateClause:282,NO:283,ACTION:284,ColumnDef:285,ColumnConstraintsClause:286,ColumnConstraints:287,ENUM:288,ColumnConstraintsList:289,ColumnConstraint:290,IDENTITY:291,DROP:292,IfExists:293,ALTER:294,RENAME:295,TO:296,ADD:297,MODIFY:298,ATTACH:299,DATABASE:300,DETACH:301,AsClause:302,USE:303,SHOW:304,DATABASES:305,TABLES:306,COLUMNS:307,VIEW:308,HELP:309,ExpressionStatement:310,SOURCE:311,ASSERT:312,JsonObject:313,ATLBRA:314,JsonArray:315,JsonValue:316,JsonPrimitiveValue:317,LCUR:318,JsonPropertiesList:319,RCUR:320,JsonElementsList:321,RBRA:322,JsonProperty:323,OnOff:324,SetPropsList:325,SetProp:326,OFF:327,COMMIT:328,TRANSACTION:329,ROLLBACK:330,BEGIN:331,ElseStatement:332,WHILE:333,CONTINUE:334,BREAK:335,PRINT:336,REQUIRE:337,StringValuesList:338,DECLARE:339,DeclaresList:340,DeclareItem:341,TRUNCATE:342,MERGE:343,MergeInto:344,MergeUsing:345,MergeOn:346,MergeMatchedList:347,OutputClause:348,MergeMatched:349,MergeNotMatched:350,MATCHED:351,MergeMatchedAction:352,MergeNotMatchedAction:353,TARGET:354,OUTPUT:355,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",9:"SEMICOLON",11:"GO",13:"EXPLAIN",14:"QUERY",15:"PLAN",45:"EndTransaction",59:"WITH",61:"COMMA",63:"AS",64:"LPAR",65:"RPAR",75:"DISTINCT",78:"UNIQUE",79:"ALL",80:"SELECT",81:"VALUE",82:"ROW",83:"COLUMN",84:"MATRIX",85:"TEXTSTRING",86:"INDEX",87:"RECORDSET",88:"TOP",90:"PERCENT",91:"INTO",96:"STRING",97:"FROM",102:"CROSS",103:"APPLY",104:"OUTER",106:"DOT",112:"NATURAL",113:"JOIN",114:"INNER",115:"LEFT",116:"RIGHT",117:"FULL",118:"SEMI",119:"ANTI",120:"ON",122:"USING",124:"WHERE",125:"GROUP",126:"BY",130:"GROUPING",131:"SETS",132:"ROLLUP",133:"CUBE",134:"HAVING",135:"UNION",136:"EXCEPT",137:"INTERSECT",138:"ORDER",141:"DIRECTION",142:"COLLATE",143:"NOCASE",144:"LIMIT",146:"OFFSET",149:"TD",150:"TH",151:"NUMBER",154:"STAR",165:"JAVASCRIPT",166:"NEW",167:"CAST",169:"CONVERT",171:"CURRENT_TIMESTAMP",174:"OVER",177:"PARTITION",178:"SUM",179:"COUNT",180:"MIN",181:"MAX",182:"AVG",183:"FIRST",184:"LAST",185:"AGGR",186:"ARRAY",188:"TRUE",189:"FALSE",190:"NSTRING",191:"NULL",192:"AT",193:"EXISTS",194:"DOLLAR",195:"COLON",196:"QUESTION",197:"BRAQUESTION",198:"CASE",201:"END",203:"WHEN",204:"THEN",205:"ELSE",206:"LIKE",207:"NOT_LIKE",208:"PLUS",209:"MINUS",210:"SLASH",211:"MODULO",212:"CARET",213:"ARROW",214:"GT",215:"GE",216:"LT",217:"LE",218:"EQ",219:"EQEQ",220:"EQEQEQ",221:"NE",222:"NEEQEQ",223:"NEEQEQEQ",226:"AND",227:"OR",228:"NOT",229:"IN",231:"BETWEEN",232:"NOT_BETWEEN",233:"IS",234:"DOUBLECOLON",235:"SOME",236:"ANY",237:"UPDATE",238:"SET",241:"DELETE",242:"INSERT",244:"VALUES",246:"DEFAULT",249:"DateValue",250:"CREATE",251:"TABLE",257:"ENGINE",258:"AUTO_INCREMENT",259:"CHARSET",261:"TEMPORARY",262:"TEMP",263:"IF",273:"CONSTRAINT",274:"CHECK",275:"PRIMARY",276:"KEY",278:"FOREIGN",279:"REFERENCES",283:"NO",284:"ACTION",287:"ColumnConstraints",288:"ENUM",291:"IDENTITY",292:"DROP",294:"ALTER",295:"RENAME",296:"TO",297:"ADD",298:"MODIFY",299:"ATTACH",300:"DATABASE",301:"DETACH",303:"USE",304:"SHOW",305:"DATABASES",306:"TABLES",307:"COLUMNS",308:"VIEW",309:"HELP",311:"SOURCE",312:"ASSERT",314:"ATLBRA",318:"LCUR",320:"RCUR",322:"RBRA",327:"OFF",328:"COMMIT",329:"TRANSACTION",330:"ROLLBACK",331:"BEGIN",333:"WHILE",334:"CONTINUE",335:"BREAK",336:"PRINT",337:"REQUIRE",339:"DECLARE",342:"TRUNCATE",343:"MERGE",351:"MATCHED",354:"TARGET",355:"OUTPUT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,3],[7,1],[7,1],[12,2],[12,4],[10,1],[16,0],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[35,3],[60,3],[60,1],[62,5],[33,8],[66,4],[66,4],[66,4],[66,3],[74,1],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[76,2],[76,4],[76,3],[76,0],[67,0],[67,2],[67,2],[67,2],[67,2],[67,2],[68,2],[68,3],[68,0],[101,6],[101,7],[101,6],[101,7],[98,1],[98,3],[99,4],[99,5],[99,3],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[105,1],[92,3],[92,1],[100,2],[100,2],[100,1],[100,1],[107,3],[109,1],[109,2],[109,3],[109,2],[109,3],[109,4],[109,5],[109,1],[109,2],[109,3],[109,1],[109,2],[109,3],[108,1],[108,2],[111,1],[111,2],[111,2],[111,3],[111,2],[111,3],[111,2],[111,3],[111,2],[111,2],[111,2],[110,2],[110,2],[110,0],[69,0],[69,2],[70,0],[70,4],[127,1],[127,3],[129,5],[129,4],[129,4],[129,1],[128,0],[128,2],[73,0],[73,2],[73,3],[73,2],[73,2],[71,0],[71,3],[139,1],[139,3],[140,1],[140,2],[140,3],[140,4],[72,0],[72,3],[145,0],[145,2],[77,4],[77,2],[148,0],[148,2],[148,2],[148,4],[147,3],[147,2],[147,3],[147,2],[147,3],[147,2],[147,1],[153,5],[153,3],[153,1],[155,5],[155,3],[155,3],[155,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,3],[121,1],[49,1],[164,2],[164,2],[162,6],[162,8],[162,6],[162,8],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[156,5],[156,6],[156,6],[173,0],[173,4],[173,4],[173,5],[175,3],[176,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[93,4],[93,3],[187,1],[187,3],[89,1],[158,1],[158,1],[152,1],[152,1],[159,1],[95,2],[160,4],[94,2],[94,2],[94,1],[94,1],[161,5],[161,4],[199,2],[199,1],[202,4],[200,2],[200,0],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,5],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,6],[157,6],[157,3],[157,3],[157,2],[157,2],[157,2],[157,3],[157,5],[157,6],[157,5],[157,6],[157,4],[157,5],[157,3],[157,4],[157,3],[157,3],[157,3],[157,3],[230,1],[230,1],[230,4],[224,1],[224,1],[224,1],[224,1],[224,1],[224,1],[225,1],[225,1],[225,1],[47,6],[47,4],[239,1],[239,3],[240,3],[25,5],[25,3],[31,5],[31,5],[31,8],[31,4],[31,7],[243,0],[243,1],[245,3],[245,1],[245,1],[245,5],[245,3],[245,3],[247,1],[247,3],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[123,1],[123,3],[22,8],[22,4],[254,0],[254,1],[255,2],[255,1],[256,1],[256,3],[256,3],[256,3],[260,0],[260,1],[260,1],[252,0],[252,3],[253,3],[253,1],[253,2],[265,1],[265,3],[266,2],[266,2],[266,2],[266,2],[266,2],[267,0],[267,2],[272,4],[268,5],[269,11],[280,0],[280,2],[281,4],[282,4],[270,1],[271,5],[271,5],[277,1],[277,1],[277,3],[277,3],[264,1],[264,3],[285,3],[285,2],[285,1],[168,6],[168,4],[168,1],[168,4],[286,0],[286,1],[289,2],[289,1],[290,2],[290,7],[290,5],[290,1],[290,6],[290,1],[290,2],[290,1],[290,2],[290,1],[29,4],[293,0],[293,2],[18,6],[18,6],[18,6],[18,8],[18,6],[32,5],[19,4],[19,7],[19,6],[19,9],[26,3],[20,4],[20,6],[20,9],[20,6],[302,0],[302,2],[46,3],[46,2],[27,4],[27,5],[27,5],[21,8],[21,9],[28,3],[38,2],[38,4],[38,3],[38,5],[40,2],[40,4],[40,4],[40,6],[37,4],[37,6],[39,4],[39,6],[36,4],[36,6],[23,9],[23,6],[30,4],[48,2],[48,1],[310,1],[50,2],[51,2],[51,2],[51,4],[163,4],[163,2],[163,2],[163,2],[163,2],[163,1],[163,2],[163,2],[316,1],[316,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,3],[313,3],[313,4],[313,2],[315,2],[315,3],[315,1],[319,3],[319,1],[323,3],[323,3],[323,3],[321,3],[321,1],[58,3],[58,5],[58,6],[325,3],[325,2],[326,1],[326,1],[326,3],[324,1],[324,1],[43,2],[44,2],[42,2],[17,4],[17,3],[332,2],[52,3],[53,1],[54,1],[55,3],[56,2],[56,2],[57,2],[338,3],[338,1],[24,2],[340,1],[340,3],[341,3],[341,4],[341,5],[341,6],[41,3],[34,6],[344,1],[344,2],[345,2],[346,2],[347,2],[347,2],[347,1],[347,1],[349,4],[349,6],[352,1],[352,3],[350,5],[350,7],[350,7],[350,9],[350,7],[350,9],[353,3],[353,6],[353,3],[353,6],[348,0],[348,2],[348,5],[348,4],[348,7]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:if(yy.casesensitive)this.$=$$[$0];else this.$=$$[$0].toLowerCase();break;case 2:this.$=doubleq($$[$0].substr(1,$$[$0].length-2));break;case 3:return new yy.Statements({statements:$$[$0-1]});break;case 4:case 5:this.$=$$[$0-2];if($$[$0])$$[$0-2].push($$[$0]);break;case 6:case 7:case 56:case 88:case 113:case 114:case 149:case 164:case 246:case 263:case 323:case 336:case 337:case 341:case 349:case 388:case 389:case 497:case 502:case 522:case 524:case 538:case 539:this.$=[$$[$0]];break;case 8:this.$=$$[$0];$$[$0].explain=true;break;case 9:this.$=$$[$0];$$[$0].explain=true;break;case 10:this.$=$$[$0];if(yy.exists)this.$.exists=yy.exists;delete yy.exists;if(yy.queries)this.$.queries=yy.queries;delete yy.queries;break;case 11:case 63:case 74:case 83:case 144:case 145:case 147:case 155:case 157:case 162:case 170:case 172:case 225:case 266:case 361:case 364:case 376:case 381:case 382:case 416:this.$=undefined;break;case 54:this.$=new yy.WithSelect({withs:$$[$0-1],select:$$[$0]});break;case 55:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 57:this.$={name:$$[$0-4],select:$$[$0-1]};break;case 58:yy.extend(this.$,$$[$0-7]);yy.extend(this.$,$$[$0-6]);yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);this.$=$$[$0-7];break;case 59:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 60:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 61:this.$=new yy.Select({columns:$$[$0],all:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 62:this.$=new yy.Select({columns:$$[$0]});yy,extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 64:this.$={modifier:"VALUE"};break;case 65:this.$={modifier:"ROW"};break;case 66:this.$={modifier:"COLUMN"};break;case 67:this.$={modifier:"MATRIX"};break;case 68:this.$={modifier:"TEXTSTRING"};break;case 69:this.$={modifier:"INDEX"};break;case 70:this.$={modifier:"RECORDSET"};break;case 71:this.$={top:$$[$0]};break;case 72:this.$={top:$$[$0-1]};break;case 73:this.$={top:$$[$0-1],percent:true};break;case 75:case 229:case 383:case 384:this.$=undefined;break;case 76:case 77:case 78:case 79:this.$={into:$$[$0]};break;case 80:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();if(s[0]=="#"){this.$={into:new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){this.$={into:new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x4=="XLSX"||x4=="JSON"){this.$={into:new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}break;case 81:this.$={from:$$[$0]};break;case 82:this.$={from:[$$[$0-1]],joins:$$[$0]};break;case 84:this.$=new yy.Apply({select:$$[$0-2],applymode:"CROSS",as:$$[$0]});break;case 85:this.$=new yy.Apply({select:$$[$0-3],applymode:"CROSS",as:$$[$0]});break;case 86:this.$=new yy.Apply({select:$$[$0-2],applymode:"OUTER",as:$$[$0]});break;case 87:this.$=new yy.Apply({select:$$[$0-3],applymode:"OUTER",as:$$[$0]});break;case 89:case 150:case 324:case 390:case 391:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 90:this.$=$$[$0-2];this.$.as=$$[$0];break;case 91:this.$=$$[$0-3];this.$.as=$$[$0];break;case 92:this.$=$$[$0-1];this.$.as="default";break;case 93:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 94:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 95:case 154:case 186:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 209:case 219:case 220:case 221:case 222:case 223:case 224:case 265:case 312:case 313:case 314:case 315:case 316:case 317:case 377:case 402:case 404:case 471:case 472:case 473:case 474:case 475:case 476:case 480:case 482:case 483:case 492:case 503:case 504:this.$=$$[$0];break;case 96:case 100:case 103:case 106:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 97:case 101:case 104:case 107:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 98:case 99:case 102:case 105:this.$=$$[$0];$$[$0].as="default";break;case 108:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();var r;if(s[0]=="#"){r=new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){r=new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x4=="XLSX"||x4=="JSON"){r=new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else{throw new Error("Unknown string in FROM clause")};this.$=r;break;case 109:this.$=new yy.Table({databaseid:$$[$0-2],tableid:$$[$0]});break;case 110:this.$=new yy.Table({tableid:$$[$0]});break;case 111:case 112:this.$=$$[$0-1];$$[$0-1].push($$[$0]);break;case 115:this.$=new yy.Join($$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 116:this.$={table:$$[$0]};break;case 117:this.$={table:$$[$0-1],as:$$[$0]};break;case 118:this.$={table:$$[$0-2],as:$$[$0]};break;case 119:this.$={param:$$[$0-1],as:$$[$0]};break;case 120:this.$={param:$$[$0-2],as:$$[$0]};break;case 121:this.$={select:$$[$0-3],as:$$[$0]};break;case 122:this.$={select:$$[$0-4],as:$$[$0]};break;case 123:this.$={funcid:$$[$0],as:"default"};break;case 124:this.$={funcid:$$[$0-1],as:$$[$0]};break;case 125:this.$={funcid:$$[$0-2],as:$$[$0]};break;case 126:this.$={variable:$$[$0],as:"default"};break;case 127:this.$={variable:$$[$0-1],as:$$[$0]};break;case 128:this.$={variable:$$[$0-2],as:$$[$0]};break;case 129:this.$={joinmode:$$[$0]};break;case 130:this.$={joinmode:$$[$0-1],natural:true};break;case 131:case 132:this.$="INNER";break;case 133:case 134:this.$="LEFT";break;case 135:case 136:this.$="RIGHT";break;case 137:case 138:this.$="OUTER";break;case 139:this.$="SEMI";break;case 140:this.$="ANTI";break;case 141:this.$="CROSS";break;case 142:this.$={on:$$[$0]};break;case 143:case 534:this.$={using:$$[$0]};break;case 146:this.$={where:new yy.Expression({expression:$$[$0]})};break;case 148:this.$={group:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 151:this.$=new yy.GroupExpression({type:"GROUPING SETS",group:$$[$0-1]});break;case 152:this.$=new yy.GroupExpression({type:"ROLLUP",group:$$[$0-1]});break;case 153:this.$=new yy.GroupExpression({type:"CUBE",group:$$[$0-1]});break;case 156:this.$={having:$$[$0]};break;case 158:this.$={union:$$[$0]};break;case 159:this.$={unionall:$$[$0]};break;case 160:this.$={except:$$[$0]};break;case 161:this.$={intersect:$$[$0]};break;case 163:this.$={order:$$[$0]};break;case 165:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 166:this.$=new yy.Expression({expression:$$[$0],direction:"ASC"});break;case 167:this.$=new yy.Expression({expression:$$[$0-1],direction:$$[$0].toUpperCase()});break;case 168:this.$=new yy.Expression({expression:$$[$0-2],direction:"ASC",nocase:true});break;case 169:this.$=new yy.Expression({expression:$$[$0-3],direction:$$[$0].toUpperCase(),nocase:true});break;case 171:this.$={limit:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 173:this.$={offset:$$[$0]};break;case 174:yy.extend($$[$0-1],$$[$0]);$$[$0-3].push($$[$0-1]);this.$=$$[$0-3];break;case 175:yy.extend($$[$0-1],$$[$0]);this.$=[$$[$0-1]];break;case 176:this.$=undefined;break;case 177:this.$={td:$$[$0]};break;case 178:this.$={th:$$[$0]};break;case 179:this.$={th:$$[$0-2],td:$$[$0]};break;case 180:case 182:case 184:$$[$0-2].as=$$[$0];this.$=$$[$0-2];break;case 181:case 183:case 185:$$[$0-1].as=$$[$0];this.$=$$[$0-1];break;case 187:this.$=new yy.Column({columid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 188:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 189:this.$=new yy.Column({columnid:$$[$0]});break;case 190:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 191:case 192:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 193:this.$=new yy.Column({columnid:$$[$0]});break;case 208:this.$=new yy.Json({value:$$[$0]});break;case 210:if(!yy.queries)yy.queries=[];yy.queries.push($$[$0-1]);$$[$0-1].queriesidx=yy.queries.length;this.$=$$[$0-1];break;case 211:this.$=$$[$0];break;case 212:this.$=new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});break;case 213:this.$=new yy.FuncValue({funcid:$$[$0],newid:true});break;case 214:this.$=$$[$0];yy.extend(this.$,{newid:true});break;case 215:this.$=new yy.Convert({expression:$$[$0-3]});yy.extend(this.$,$$[$0-1]);break;case 216:this.$=new yy.Convert({expression:$$[$0-5],style:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 217:this.$=new yy.Convert({expression:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 218:this.$=new yy.Convert({expression:$$[$0-3],style:$$[$0-1]});yy.extend(this.$,$$[$0-5]);break;case 226:this.$=new yy.AggrValue({aggregatorid:$$[$0-4].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 227:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],distinct:true,over:$$[$0]});break;case 228:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 230:case 231:this.$=new yy.Over;yy.extend(this.$,$$[$0-1]);break;case 232:this.$=new yy.Over;yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 233:this.$={partition:$$[$0]};break;case 234:this.$={order:$$[$0]};break;case 235:this.$="SUM";break;case 236:this.$="COUNT";break;case 237:this.$="MIN";break;case 238:this.$="MAX";break;case 239:this.$="AVG";break;case 240:this.$="FIRST";break;case 241:this.$="LAST";break;case 242:this.$="AGGR";break;case 243:this.$="ARRAY";break;case 244:if(alasql.aggr[$$[$0-3]]){this.$=new yy.AggrValue({aggregatorid:"REDUCE",funcid:$$[$0-3],expression:$$[$0-1].pop()})}else{this.$=new yy.FuncValue({funcid:$$[$0-3],args:$$[$0-1]})};break;case 245:this.$=new yy.FuncValue({funcid:$$[$0-2]});break;case 247:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 248:this.$=new yy.NumValue({value:+$$[$0]});break;case 249:this.$=new yy.LogicValue({value:true});break;case 250:this.$=new yy.LogicValue({value:false});break;case 251:this.$=new yy.StringValue({value:$$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 252:this.$=new yy.StringValue({value:$$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 253:this.$=new yy.NullValue({value:undefined});break;case 254:this.$=new yy.VarValue({variable:$$[$0]});break;case 255:if(!yy.exists)yy.exists=[];this.$=new yy.ExistsValue({value:$$[$0-1],existsidx:yy.exists.length});yy.exists.push($$[$0-1]);break;case 256:case 257:this.$=new yy.ParamValue({param:$$[$0]});break;case 258:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++});break;case 259:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++,array:true});break;case 260:this.$=new yy.CaseValue({expression:$$[$0-3],whens:$$[$0-2],elses:$$[$0-1]});break;case 261:this.$=new yy.CaseValue({whens:$$[$0-2],elses:$$[$0-1]}); break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case 264:this.$={when:$$[$0-2],then:$$[$0]};break;case 267:this.$=new yy.Op({left:$$[$0-2],op:"LIKE",right:$$[$0]});break;case 268:this.$=new yy.Op({left:$$[$0-2],op:"NOT LIKE",right:$$[$0]});break;case 269:this.$=new yy.Op({left:$$[$0-2],op:"+",right:$$[$0]});break;case 270:this.$=new yy.Op({left:$$[$0-2],op:"-",right:$$[$0]});break;case 271:this.$=new yy.Op({left:$$[$0-2],op:"*",right:$$[$0]});break;case 272:this.$=new yy.Op({left:$$[$0-2],op:"/",right:$$[$0]});break;case 273:this.$=new yy.Op({left:$$[$0-2],op:"%",right:$$[$0]});break;case 274:this.$=new yy.Op({left:$$[$0-2],op:"^",right:$$[$0]});break;case 275:case 276:case 278:this.$=new yy.Op({left:$$[$0-2],op:"->",right:$$[$0]});break;case 277:this.$=new yy.Op({left:$$[$0-4],op:"->",right:$$[$0-1]});break;case 279:this.$=new yy.Op({left:$$[$0-2],op:">",right:$$[$0]});break;case 280:this.$=new yy.Op({left:$$[$0-2],op:">=",right:$$[$0]});break;case 281:this.$=new yy.Op({left:$$[$0-2],op:"<",right:$$[$0]});break;case 282:this.$=new yy.Op({left:$$[$0-2],op:"<=",right:$$[$0]});break;case 283:this.$=new yy.Op({left:$$[$0-2],op:"=",right:$$[$0]});break;case 284:this.$=new yy.Op({left:$$[$0-2],op:"==",right:$$[$0]});break;case 285:this.$=new yy.Op({left:$$[$0-2],op:"===",right:$$[$0]});break;case 286:this.$=new yy.Op({left:$$[$0-2],op:"!=",right:$$[$0]});break;case 287:this.$=new yy.Op({left:$$[$0-2],op:"!==",right:$$[$0]});break;case 288:this.$=new yy.Op({left:$$[$0-2],op:"!===",right:$$[$0]});break;case 289:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 290:this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1]});break;case 291:this.$=new yy.Op({left:$$[$0-2],op:"AND",right:$$[$0]});break;case 292:this.$=new yy.Op({left:$$[$0-2],op:"OR",right:$$[$0]});break;case 293:this.$=new yy.UniOp({op:"NOT",right:$$[$0]});break;case 294:this.$=new yy.UniOp({op:"-",right:$$[$0]});break;case 295:this.$=new yy.UniOp({op:"+",right:$$[$0]});break;case 296:this.$=new yy.UniOp({right:$$[$0-1]});break;case 297:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 298:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 299:this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1]});break;case 300:this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1]});break;case 301:this.$=new yy.Op({left:$$[$0-3],op:"IN",right:[]});break;case 302:this.$=new yy.Op({left:$$[$0-4],op:"NOT IN",right:[]});break;case 303:this.$=new yy.Op({left:$$[$0-2],op:"IN",right:$$[$0]});break;case 304:this.$=new yy.Op({left:$$[$0-3],op:"NOT IN",right:$$[$0]});break;case 305:this.$=new yy.Op({left:$$[$0-2],op:"BETWEEN",right:$$[$0]});break;case 306:this.$=new yy.Op({left:$$[$0-2],op:"NOT BETWEEN",right:$$[$0]});break;case 307:this.$=new yy.Op({op:"IS",left:$$[$0-2],right:$$[$0]});break;case 308:this.$=new yy.Convert({expression:$$[$0-2]});yy.extend(this.$,$$[$0]);break;case 309:case 310:this.$=$$[$0];break;case 311:this.$=$$[$0-1];break;case 318:this.$="ALL";break;case 319:this.$="SOME";break;case 320:this.$="ANY";break;case 321:this.$=new yy.Update({table:$$[$0-4],columns:$$[$0-2],where:$$[$0]});break;case 322:this.$=new yy.Update({table:$$[$0-2],columns:$$[$0]});break;case 325:this.$=new yy.SetColumn({columnid:$$[$0-2],expression:$$[$0]});break;case 326:this.$=new yy.Delete({table:$$[$0-2],where:$$[$0]});break;case 327:this.$=new yy.Delete({table:$$[$0]});break;case 328:this.$=new yy.Insert({into:$$[$0-2],values:$$[$0]});break;case 329:this.$=new yy.Insert({into:$$[$0-2],"default":true});break;case 330:this.$=new yy.Insert({into:$$[$0-5],columns:$$[$0-3],values:$$[$0]});break;case 331:this.$=new yy.Insert({into:$$[$0-1],select:$$[$0]});break;case 332:this.$=new yy.Insert({into:$$[$0-4],columns:$$[$0-2],select:$$[$0]});break;case 335:this.$=[$$[$0-1]];break;case 338:this.$=$$[$0-4];$$[$0-4].push($$[$0-1]);break;case 339:case 340:case 342:case 350:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 351:this.$=new yy.CreateTable({table:$$[$0-4]});yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-2]);break;case 352:this.$=new yy.CreateTable({table:$$[$0]});break;case 362:case 363:this.$={temporary:true};break;case 365:this.$={ifnotexists:true};break;case 366:this.$={columns:$$[$0-2],constraints:$$[$0]};break;case 367:this.$={columns:$$[$0]};break;case 368:this.$={as:$$[$0]};break;case 369:case 392:this.$=[$$[$0]];break;case 370:case 393:case 496:case 501:case 521:case 525:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 371:case 372:case 373:case 374:case 375:$$[$0].constraintid=$$[$0-1];this.$=$$[$0];break;case 378:this.$={type:"CHECK",expression:$$[$0-1]};break;case 379:this.$={type:"PRIMARY KEY",columns:$$[$0-1]};break;case 380:this.$={type:"FOREIGN KEY",columns:$$[$0-7],fktableid:$$[$0-4],fkcolumns:$$[$0-2]};break;case 394:this.$=new yy.ColumnDef({columnid:$$[$0-2]});yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 395:this.$=new yy.ColumnDef({columnid:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 396:this.$=new yy.ColumnDef({columnid:$$[$0],dbtypeid:""});break;case 397:this.$={dbtypeid:$$[$0-5],dbsize:+$$[$0-3],dbprecision:+$$[$0-1]};break;case 398:this.$={dbtypeid:$$[$0-3],dbsize:+$$[$0-1]};break;case 399:this.$={dbtypeid:$$[$0]};break;case 400:this.$={dbtypeid:"ENUM",enumvalues:$$[$0-1]};break;case 401:this.$=undefined;break;case 403:yy.extend($$[$0-1],$$[$0]);this.$=$$[$0-1];break;case 405:this.$={primarykey:true};break;case 406:case 407:this.$={foreignkey:{tableid:$$[$0-3],columnid:$$[$0-1]}};break;case 408:this.$={auto_increment:true};break;case 409:this.$={identity:[$$[$0-3],$$[$0-1]]};break;case 410:this.$={identity:[1,1]};break;case 411:this.$={"default":$$[$0]};break;case 412:this.$={"null":true};break;case 413:this.$={notnull:true};break;case 414:this.$=$$[$0];break;case 415:this.$=new yy.DropTable({table:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 417:this.$={ifexists:true};break;case 418:this.$=new yy.AlterTable({table:$$[$0-3],renameto:$$[$0]});break;case 419:this.$=new yy.AlterTable({table:$$[$0-3],addcolumn:$$[$0]});break;case 420:this.$=new yy.AlterTable({table:$$[$0-3],modifycolumn:$$[$0]});break;case 421:this.$=new yy.AlterTable({table:$$[$0-5],renamecolumn:$$[$0-2],to:$$[$0]});break;case 422:this.$=new yy.AlterTable({table:$$[$0-3],dropcolumn:$$[$0]});break;case 423:this.$=new yy.AlterTable({table:$$[$0-2],renameto:$$[$0]});break;case 424:this.$=new yy.AttachDatabase({databaseid:$$[$0],engineid:$$[$0-2].toUpperCase()});break;case 425:this.$=new yy.AttachDatabase({databaseid:$$[$0-3],engineid:$$[$0-5].toUpperCase(),args:$$[$0-1]});break;case 426:this.$=new yy.AttachDatabase({databaseid:$$[$0-2],engineid:$$[$0-4].toUpperCase(),as:$$[$0]});break;case 427:this.$=new yy.AttachDatabase({databaseid:$$[$0-5],engineid:$$[$0-7].toUpperCase(),as:$$[$0],args:$$[$0-3]});break;case 428:this.$=new yy.DetachDatabase({databaseid:$$[$0]});break;case 429:this.$=new yy.CreateDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0]);break;case 430:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),databaseid:$$[$0-1],as:$$[$0]});yy.extend(this.$,$$[$0-2]);break;case 431:this.$=new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(),databaseid:$$[$0-4],args:$$[$0-2],as:$$[$0]});yy.extend(this.$,$$[$0-5]);break;case 432:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),as:$$[$0],args:[$$[$0-1]]});yy.extend(this.$,$$[$0-2]);break;case 433:this.$=undefined;break;case 434:case 467:case 485:case 488:case 505:this.$=$$[$0-1];break;case 435:case 436:this.$=new yy.UseDatabase({databaseid:$$[$0]});break;case 437:this.$=new yy.DropDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 438:case 439:this.$=new yy.DropDatabase({databaseid:$$[$0],engineid:$$[$0-3].toUpperCase()});yy.extend(this.$,$$[$0-1]);break;case 440:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1]});break;case 441:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1],unique:true});break;case 442:this.$=new yy.DropIndex({indexid:$$[$0]});break;case 443:this.$=new yy.ShowDatabases;break;case 444:this.$=new yy.ShowDatabases({like:$$[$0]});break;case 445:this.$=new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase()});break;case 446:this.$=new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase(),like:$$[$0]});break;case 447:this.$=new yy.ShowTables;break;case 448:this.$=new yy.ShowTables({like:$$[$0]});break;case 449:this.$=new yy.ShowTables({databaseid:$$[$0]});break;case 450:this.$=new yy.ShowTables({like:$$[$0],databaseid:$$[$0-2]});break;case 451:this.$=new yy.ShowColumns({table:$$[$0]});break;case 452:this.$=new yy.ShowColumns({table:$$[$0-2],databaseid:$$[$0]});break;case 453:this.$=new yy.ShowIndex({table:$$[$0]});break;case 454:this.$=new yy.ShowIndex({table:$$[$0-2],databaseid:$$[$0]});break;case 455:this.$=new yy.ShowCreateTable({table:$$[$0]});break;case 456:this.$=new yy.ShowCreateTable({table:$$[$0-2],databaseid:$$[$0]});break;case 457:this.$=new yy.CreateTable({table:$$[$0-5],view:true,select:$$[$0],viewcolumns:$$[$0-3]});yy.extend(this.$,$$[$0-6]);break;case 458:this.$=new yy.CreateTable({table:$$[$0-2],view:true,select:$$[$0]});break;case 459:this.$=new yy.DropTable({table:$$[$0],view:true});yy.extend(this.$,$$[$0-1]);break;case 460:this.$=new yy.Help({subject:$$[$0].value.toUpperCase()});break;case 461:this.$=new yy.Help;break;case 462:this.$=new yy.ExpressionStatement({expression:$$[$0]});break;case 463:this.$=new yy.Source({url:$$[$0].value});break;case 464:this.$=new yy.Assert({value:$$[$0]});break;case 465:this.$=new yy.Assert({value:$$[$0].value});break;case 466:this.$=new yy.Assert({value:$$[$0],message:$$[$0-2]});break;case 468:case 479:case 481:this.$=$$[$0].value;break;case 469:case 477:this.$=+$$[$0].value;break;case 470:this.$=!!$$[$0].value;break;case 478:this.$=""+$$[$0].value;break;case 484:this.$=$$[$0-1];break;case 486:case 489:this.$=$$[$0-2];break;case 487:this.$={};break;case 490:this.$=[];break;case 491:yy.extend($$[$0-2],$$[$0]);this.$=$$[$0-2];break;case 493:this.$={};this.$[$$[$0-2].substr(1,$$[$0-2].length-2)]=$$[$0];break;case 494:case 495:this.$={};this.$[$$[$0-2]]=$$[$0];break;case 498:this.$=new yy.SetVariable({variable:$$[$0-1].toLowerCase(),value:$$[$0]});break;case 499:this.$=new yy.SetVariable({variable:$$[$0-2],expression:$$[$0]});break;case 500:this.$=new yy.SetVariable({variable:$$[$0-3],props:$$[$0-2],expression:$$[$0]});break;case 506:this.$=true;break;case 507:this.$=false;break;case 508:this.$=new yy.CommitTransaction;break;case 509:this.$=new yy.RollbackTransaction;break;case 510:this.$=new yy.BeginTransaction;break;case 511:this.$=new yy.If({expression:$$[$0-2],thenstat:$$[$0-1],elsestat:$$[$0]});if($$[$0-1].exists)this.$.exists=$$[$0-1].exists;if($$[$0-1].queries)this.$.queries=$$[$0-1].queries;break;case 512:this.$=new yy.If({expression:$$[$0-1],thenstat:$$[$0]});break;case 513:this.$=$$[$0];break;case 514:this.$=new yy.While({expression:$$[$0-1],loopstat:$$[$0]});if($$[$0].exists)this.$.exists=$$[$0].exists;if($$[$0].queries)this.$.queries=$$[$0].queries;break;case 515:this.$=new yy.Continue;break;case 516:this.$=new yy.Break;break;case 517:this.$=new yy.BeginEnd({statements:$$[$0-1]});break;case 518:case 519:this.$=new yy.Print({statement:$$[$0]});break;case 520:this.$=new yy.Require({paths:$$[$0]});break;case 523:this.$=new yy.Declare({declares:$$[$0]});break;case 526:this.$={variable:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 527:this.$={variable:$$[$0-2]};yy.extend(this.$,$$[$0]);break;case 528:this.$={variable:$$[$0-3],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 529:this.$={variable:$$[$0-4],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 530:this.$=new yy.TruncateTable({table:$$[$0]});break;case 531:this.$=new yy.Merge;yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 532:case 533:this.$={into:$$[$0]};break;case 535:this.$={on:$$[$0]};break;case 540:this.$={matched:true,action:$$[$0]};break;case 541:this.$={matched:true,expr:$$[$0-2],action:$$[$0]};break;case 542:this.$={"delete":true};break;case 543:this.$={update:$$[$0]};break;case 544:case 545:this.$={matched:false,bytarget:true,action:$$[$0]};break;case 546:case 547:this.$={matched:false,bytarget:true,expr:$$[$0-2],action:$$[$0]};break;case 548:this.$={matched:false,bysource:true,action:$$[$0]};break;case 549:this.$={matched:false,bysource:true,expr:$$[$0-2],action:$$[$0]};break;case 550:this.$={insert:true,values:$$[$0]};break;case 551:this.$={insert:true,values:$$[$0],columns:$$[$0-3]};break;case 552:this.$={insert:true,defaultvalues:true};break;case 553:this.$={insert:true,defaultvalues:true,columns:$$[$0-3]};break;case 555:this.$={output:{columns:$$[$0]}};break;case 556:this.$={output:{columns:$$[$0-3],intovar:$$[$0]}};break;case 557:this.$={output:{columns:$$[$0-2],intotable:$$[$0]}};break;case 558:this.$={output:{columns:$$[$0-5],intotable:$$[$0-3],intocolumns:$$[$0-1]}};break}},table:[o([8,9,11],$V0,{6:1,7:2,10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{1:[3]},{8:[1,81],9:$Vx,11:$Vy},o($Vz,[2,6]),o($Vz,[2,7]),o($VA,[2,10]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:84,14:[1,85],45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,12]),o($VA,[2,13]),o($VA,[2,14]),o($VA,[2,15]),o($VA,[2,16]),o($VA,[2,17]),o($VA,[2,18]),o($VA,[2,19]),o($VA,[2,20]),o($VA,[2,21]),o($VA,[2,22]),o($VA,[2,23]),o($VA,[2,24]),o($VA,[2,25]),o($VA,[2,26]),o($VA,[2,27]),o($VA,[2,28]),o($VA,[2,29]),o($VA,[2,30]),o($VA,[2,31]),o($VA,[2,32]),o($VA,[2,33]),o($VA,[2,34]),o($VA,[2,35]),o($VA,[2,36]),o($VA,[2,37]),o($VA,[2,38]),o($VA,[2,39]),o($VA,[2,40]),o($VA,[2,41]),o($VA,[2,42]),o($VA,[2,43]),o($VA,[2,44]),o($VA,[2,45]),o($VA,[2,46]),o($VA,[2,47]),o($VA,[2,48]),o($VA,[2,49]),o($VA,[2,50]),o($VA,[2,51]),o($VA,[2,52]),o($VA,[2,53]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:86,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{251:[1,141]},{3:142,4:$VB,5:$VC},{3:144,4:$VB,5:$VC,78:[1,146],86:[1,145],251:[1,147],300:[1,143],308:[1,148]},{192:$V71,340:149,341:150},{97:[1,152]},{300:[1,153]},{3:155,4:$VB,5:$VC,86:[1,156],251:[1,157],300:[1,154],308:[1,158]},o($V81,[2,333],{243:159,91:[1,160]}),{251:[1,161]},o($V91,[2,75],{67:162,91:[1,163]}),{3:173,4:$VB,5:$VC,64:$Va1,91:[1,166],92:168,93:170,94:169,95:171,96:$Vb1,99:165,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01,344:164},{3:178,4:$VB,5:$VC,60:176,62:177},{3:182,4:$VB,5:$VC,86:[1,183],250:[1,179],305:[1,181],306:[1,184],307:[1,180]},{251:[1,185]},o([9,11,201],$V0,{10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,7:187,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,329:[1,186],330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{329:[1,188]},{329:[1,189]},{3:191,4:$VB,5:$VC,300:[1,190]},{3:193,4:$VB,5:$VC,92:192},o($VA,[2,461],{152:194,96:$VE,190:$VV}),o($Vd1,[2,212]),{96:$VE,152:195,190:$VV},{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:[1,198],151:$VF,152:201,158:202,159:203,163:196,170:197,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:208,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,515]),o($VA,[2,516]),{3:106,4:$VB,5:$VC,33:209,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:211,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,310:210,313:126,314:$V51,318:$V61},{96:$VE,152:213,190:$VV,338:212},{3:214,4:$VB,5:$VC,192:[1,215]},o($Vg1,$Vh1,{76:219,75:[1,216],78:[1,217],79:[1,218],88:$Vi1}),o($Vj1,[2,63],{81:[1,221],82:[1,222],83:[1,223],84:[1,224],85:[1,225],86:[1,226],87:[1,227]}),{1:[2,3]},o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:228,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:229,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,8]),{15:[1,230]},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:231,224:251,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vd1,[2,194]),o($Vd1,[2,195]),o($Vd1,[2,196]),o($Vd1,[2,197]),o($Vd1,[2,198]),o($Vd1,[2,199]),o($Vd1,[2,200]),o($Vd1,[2,201]),o($Vd1,[2,202]),o($Vd1,[2,203]),o($Vd1,[2,204]),o($Vd1,[2,205]),o($Vd1,[2,206]),o($Vd1,[2,207]),o($Vd1,[2,208]),o($Vd1,[2,209]),{3:106,4:$VB,5:$VC,33:260,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:261,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,211]),{64:[1,262]},o($Vd1,$VL1,{64:$VM1,106:[1,264]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:265,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:266,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:267,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,189]),o([4,5,8,9,11,45,59,61,63,64,65,80,90,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,146,149,150,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,257,258,259,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,314,318,320,322,328,330,331,333,334,335,336,337,339,342,343,355],[2,248]),o($VN1,[2,249]),o($VN1,[2,250]),o($VN1,$VO1),o($VN1,[2,252]),o($VN1,[2,253]),{3:268,4:$VB,5:$VC},{3:269,4:$VB,5:$VC},o($VP1,[2,258]),o($VP1,[2,259]),{3:270,4:$VB,5:$VC,64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},{64:[1,277]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:278,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,199:279,202:280,203:$VR1,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,282]},{64:[1,283]},o($VS1,[2,472]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,315:284,316:287,317:289,318:$V61,321:285,322:[1,286]},{3:299,4:$VB,5:$VC,93:300},{64:[2,235]},{64:[2,236]},{64:[2,237]},{64:[2,238]},{64:[2,239]},{64:[2,240]},{64:[2,241]},{64:[2,242]},{64:[2,243]},o($VU1,[2,1]),o($VU1,[2,2]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,319:301,320:[1,302],323:303},{3:193,4:$VB,5:$VC,92:307},{300:[1,308]},o($V81,$VX1,{252:309,263:$VY1}),{300:[1,311]},{3:312,4:$VB,5:$VC},{86:[1,313]},o($V81,$VX1,{252:314,263:$VY1}),o($V81,$VX1,{252:315,263:$VY1}),o($VA,[2,523],{61:[1,316]}),o($VZ1,[2,524]),{3:317,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:318},{3:319,4:$VB,5:$VC},o($V81,$V_1,{293:320,263:$V$1}),{300:[1,322]},{3:323,4:$VB,5:$VC},o($V81,$V_1,{293:324,263:$V$1}),o($V81,$V_1,{293:325,263:$V$1}),{3:193,4:$VB,5:$VC,92:326},o($V81,[2,334]),{3:193,4:$VB,5:$VC,92:327},o($V02,[2,83],{68:328,97:[1,329]}),{3:173,4:$VB,5:$VC,92:330,93:331,94:332,95:333,96:[1,334],192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[1,336],345:335},{122:[2,532]},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:337,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{33:338,66:59,74:79,80:$V4},o($V12,[2,95],{3:339,4:$VB,5:$VC,63:[1,340]}),o($V12,[2,98],{3:341,4:$VB,5:$VC,63:[1,342]}),o($V12,[2,99],{3:343,4:$VB,5:$VC,63:[1,344]}),o($V12,[2,102],{3:345,4:$VB,5:$VC,63:[1,346]}),o($V12,[2,105],{3:347,4:$VB,5:$VC,63:[1,348]}),o([4,5,8,9,11,61,63,65,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22,{64:$VM1,106:$V32}),{3:270,4:$VB,5:$VC},o([4,5,8,9,11,61,63,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],[2,108]),{33:350,61:[1,351],66:59,74:79,80:$V4},o($V42,[2,56]),{63:[1,352]},{251:[1,353]},{97:[1,354]},o($VA,[2,443],{206:[1,355]}),{305:[1,356]},{97:[1,357]},o($VA,[2,447],{97:[1,359],206:[1,358]}),{3:193,4:$VB,5:$VC,92:360},o($VA,[2,510]),{9:$Vx,11:$Vy,201:[1,361]},o($VA,[2,508]),o($VA,[2,509]),{3:362,4:$VB,5:$VC},o($VA,[2,436]),{238:[1,363]},o([8,9,11,63,64,80,97,124,201,205,238,244,246,292,295,296,297,298],$V22,{106:$V32}),o($VA,[2,460]),o($VA,[2,463]),o($VA,[2,464]),o($VA,[2,465]),o($VA,$VO1,{61:[1,364]}),{64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},o($V52,[2,219]),o($V52,[2,220]),o($V52,[2,221]),o($V52,[2,222]),o($V52,[2,223]),o($V52,[2,224]),o($V52,[2,225]),{64:$VM1},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,224:251,10:365,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,518]),o($VA,[2,519]),o($VA,[2,462],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,520],{61:[1,366]}),o($VZ1,[2,522]),{120:[1,368],324:367,327:[1,369]},{3:370,4:$VB,5:$VC},o($Vg1,$Vh1,{76:371,88:$Vi1}),o($Vg1,$Vh1,{76:372,88:$Vi1}),o($Vg1,$Vh1,{76:373,88:$Vi1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:374,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,378],89:377,151:$VF},o($Vj1,[2,64]),o($Vj1,[2,65]),o($Vj1,[2,66]),o($Vj1,[2,67]),o($Vj1,[2,68]),o($Vj1,[2,69]),o($Vj1,[2,70]),o($Vz,[2,4]),o($Vz,[2,5]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:379,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,512],{332:380,205:[1,381]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:382,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:383,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:384,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:385,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:386,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:387,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:388,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:389,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:390,4:$VB,5:$VC,64:[1,392],89:391,93:393,151:$VF},o($V62,[2,312],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:394,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,313],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:395,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,314],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:396,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,315],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:397,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,316],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:398,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:399,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:400,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V62,[2,317],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:401,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:402,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:403,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{79:[1,405],225:404,235:[1,406],236:[1,407]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:408,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:409,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:298,4:$VB,5:$VC,64:[1,410],93:413,155:412,192:$V72,230:411},{229:[1,415]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:416,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:417,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:418,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:419,288:$V92},{65:[1,422]},{65:[1,423],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,75:[1,425],79:[1,426],89:92,93:88,94:96,95:97,96:$VE,121:424,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,65:[1,428],89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:427,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:430,4:$VB,5:$VC,81:$Va2,154:[1,432]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,293],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,233:$VJ1}),o($Vb2,[2,294],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,295],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($VP1,[2,256]),o($VP1,[2,257]),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,254]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:433,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,468]),o($VS1,[2,469]),o($VS1,[2,470]),o($VS1,[2,471]),o($VS1,[2,473]),{33:434,66:59,74:79,80:$V4},{154:$Vk1,199:435,202:280,203:$VR1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{200:436,201:$Vc2,202:437,203:$VR1,205:$Vd2},o($Ve2,[2,263]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:439,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:440,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:441,288:$V92},o($VS1,[2,474]),{61:[1,443],322:[1,442]},o($VS1,[2,490]),o($Vf2,[2,497]),o($Vg2,[2,475]),o($Vg2,[2,476]),o($Vg2,[2,477]),o($Vg2,[2,478]),o($Vg2,[2,479]),o($Vg2,[2,480]),o($Vg2,[2,481]),o($Vg2,[2,482]),o($Vg2,[2,483]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:444,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,$VL1,{64:$VM1,106:$Vh2}),o($Vd1,[2,213],{64:$VM1}),o($Vd1,[2,214]),{61:[1,447],320:[1,446]},o($VS1,[2,487]),o($Vi2,[2,492]),{195:[1,448]},{195:[1,449]},{195:[1,450]},{292:[1,454],295:[1,451],297:[1,452],298:[1,453]},{3:455,4:$VB,5:$VC},{3:456,4:$VB,5:$VC},{228:[1,457]},o($Vj2,$VX1,{252:458,263:$VY1}),{120:[1,459]},{3:460,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:461},{3:193,4:$VB,5:$VC,92:462},{192:$V71,341:463},{4:$V82,63:[1,465],168:464,288:$V92},o($VA,[2,327],{124:[1,466]}),o($VA,[2,428]),{3:467,4:$VB,5:$VC},{193:[1,468]},o($Vj2,$V_1,{293:469,263:$V$1}),o($VA,[2,442]),{3:193,4:$VB,5:$VC,92:470},{3:193,4:$VB,5:$VC,92:471},{33:475,64:[1,474],66:59,74:79,80:$V4,244:[1,472],246:[1,473]},{296:[1,476]},o($Vk2,[2,145],{69:477,124:[1,478]}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,98:479,99:480,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V91,[2,76]),o($V91,[2,77]),o($V91,[2,78]),o($V91,[2,79]),o($V91,[2,80]),{120:[1,482],346:481},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:483,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[2,533]},{65:[1,484]},o($V12,[2,93]),{3:485,4:$VB,5:$VC},o($V12,[2,96]),{3:486,4:$VB,5:$VC},o($V12,[2,100]),{3:487,4:$VB,5:$VC},o($V12,[2,103]),{3:488,4:$VB,5:$VC},o($V12,[2,106]),{3:489,4:$VB,5:$VC},{3:490,4:$VB,5:$VC},o($VA,[2,54]),{3:178,4:$VB,5:$VC,62:491},{64:[1,492]},{3:193,4:$VB,5:$VC,92:493},{3:193,4:$VB,5:$VC,92:494},{96:$VE,152:495,190:$VV},o($VA,[2,445],{206:[1,496]}),{3:193,4:$VB,5:$VC,92:497},{96:$VE,152:498,190:$VV},{3:499,4:$VB,5:$VC},o($VA,[2,530]),o($VA,[2,517]),o($VA,[2,435]),{3:503,4:$VB,5:$VC,155:502,239:500,240:501},{163:504,192:$Vf1,313:126,314:$V51,318:$V61},o($VA,[2,514]),{96:$VE,152:505,190:$VV},o($VA,[2,498]),o($VA,[2,506]),o($VA,[2,507]),{213:[1,508],218:[1,506],325:507},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:509,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:510,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:511,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vl2,[2,62],{61:$Vm2}),o($Vn2,$Vo2,{148:513,149:$Vp2,150:$Vq2}),o($Vr2,[2,186],{224:251,3:517,152:519,4:$VB,5:$VC,63:[1,516],96:$VE,151:[1,518],154:$Vk1,190:$VV,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vg1,[2,71],{90:[1,520]}),{89:521,151:$VF},o($Vz,[2,9]),o($VA,[2,511]),o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:522,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vs2,[2,267],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vs2,[2,268],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,269],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,270],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vt2,[2,271],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,272],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,273],{224:251,212:$Vr1,213:$Vs1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,274],{224:251,213:$Vs1}),o($Vd1,[2,275],{64:$VM1}),o($Vd1,[2,276]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:523,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,278]),o($Vu2,[2,279],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,280],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,281],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,282],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,283],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,284],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,285],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,286],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,287],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,288],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),{64:[1,524]},{64:[2,318]},{64:[2,319]},{64:[2,320]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,291],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,292],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1}),{3:106,4:$VB,5:$VC,33:525,49:104,64:$VD,65:[1,527],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:526,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,303]),o($Vd1,[2,309]),o($Vd1,[2,310]),{64:[1,528]},{3:298,4:$VB,5:$VC,64:[1,529],93:413,155:412,192:$V72,230:530},o($Vv2,[2,305],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o($Vv2,[2,306],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,307],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vd1,[2,308]),o($Vw2,[2,399],{64:[1,531]}),{64:[1,532]},o($Vd1,[2,210]),o($Vd1,[2,296]),{65:[1,533],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:534,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:535,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vx2,65:[1,536]},o($VP1,[2,245]),o($Vy2,[2,246],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,$Vz2,{106:[1,538]}),o($VS1,[2,192]),o($Vd1,[2,188]),{65:[1,539],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,540]},{200:541,201:$Vc2,202:437,203:$VR1,205:$Vd2},{201:[1,542]},o($Ve2,[2,262]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:543,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{154:$Vk1,204:[1,544],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{63:[1,545],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{61:[1,546]},o($VS1,[2,488]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:548,317:289,318:$V61,322:[1,547]},{65:[1,549],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:550,4:$VB,5:$VC,81:$Va2},o($VS1,[2,485]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,320:[1,551],323:552},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:553,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:554,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:555,317:289,318:$V61},{83:[1,557],296:[1,556]},{83:[1,558]},{83:[1,559]},{83:[1,560]},o($VA,[2,424],{63:[1,562],64:[1,561]}),o($VA,[2,429]),{193:[1,563]},{3:564,4:$VB,5:$VC,96:$VE,152:565,190:$VV},{3:193,4:$VB,5:$VC,92:566},{120:[1,567]},o($VA,[2,352],{64:[1,568]}),{63:[1,570],64:[1,569]},o($VZ1,[2,525]),o($VZ1,[2,526],{218:[1,571]}),{4:$V82,168:572,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:573,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,437]),o($Vj2,[2,417]),{3:574,4:$VB,5:$VC,96:$VE,152:575,190:$VV},o($VA,[2,415]),o($VA,[2,459]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:576,313:126,314:$V51,318:$V61},{244:[1,580]},{3:503,4:$VB,5:$VC,123:581,155:582},o($VA,[2,331]),{3:583,4:$VB,5:$VC},o($VB2,[2,147],{70:584,125:[1,585]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:586,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V02,[2,81],{61:[1,587]}),o($VC2,[2,88],{100:588,107:589,101:590,108:591,111:594,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),{203:$VN2,347:603,349:604,350:605},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:607,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{120:[2,534]},o($V12,[2,92],{3:608,4:$VB,5:$VC,63:[1,609]}),o($V12,[2,94]),o($V12,[2,97]),o($V12,[2,101]),o($V12,[2,104]),o($V12,[2,107]),o([4,5,8,9,11,61,63,64,65,80,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205,238,244,246,292,295,296,297,298],[2,109]),o($V42,[2,55]),{33:610,66:59,74:79,80:$V4},o($VA,[2,455],{97:[1,611]}),o($VA,[2,451],{97:[1,612]}),o($VA,[2,444]),{96:$VE,152:613,190:$VV},o($VA,[2,453],{97:[1,614]}),o($VA,[2,448]),o($VA,[2,449],{206:[1,615]}),o($VA,[2,322],{61:$VO2,124:[1,616]}),o($VP2,[2,323]),{218:[1,618]},o([8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205,218],$VL1,{106:$Vh2}),o($VA,[2,466]),o($VZ1,[2,521]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:619,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{213:[1,621],218:[1,620]},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:622},o($Vl2,[2,59],{61:$Vm2}),o($Vl2,[2,60],{61:$Vm2}),o($Vl2,[2,61],{61:$Vm2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:376,147:626,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,[2,175]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:627,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:628,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:629,4:$VB,5:$VC,96:$VE,151:[1,630],152:631,190:$VV},o($Vr2,[2,181]),o($Vr2,[2,183]),o($Vr2,[2,185]),o($Vg1,[2,73]),{65:[1,632]},o($VA,[2,513]),{65:[1,633],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,33:634,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:635,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{65:[1,636]},{61:$Vx2,65:[1,637]},o($Vd1,[2,301]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:638,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,33:639,49:104,64:$VD,65:[1,641],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:640,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,304]),{151:[1,642]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:643,313:126,314:$V51,318:$V61},o($Vd1,$VS2,{173:645,174:$VT2}),{65:[1,647],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,648],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VP1,[2,244]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:649,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:650,4:$VB,5:$VC,154:[1,651]},o($VS1,[2,467]),o($Vd1,[2,255]),{201:[1,652]},o($Vd1,[2,261]),{154:$Vk1,201:[2,265],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:653,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:654,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:655,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,489]),o($Vf2,[2,496]),o($Vg2,[2,484]),o($VS1,$Vz2,{106:[1,656]}),o($VS1,[2,486]),o($Vi2,[2,491]),o($Vi2,[2,493]),o($Vi2,[2,494]),o($Vi2,[2,495]),{3:657,4:$VB,5:$VC},{3:658,4:$VB,5:$VC},{3:660,4:$VB,5:$VC,285:659},{3:660,4:$VB,5:$VC,285:661},{3:662,4:$VB,5:$VC},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:663,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:664,4:$VB,5:$VC},o($Vj2,[2,365]),o($VA,$VU2,{302:665,63:$VV2,64:[1,666]}),o($VA,$VU2,{302:668,63:$VV2}),{64:[1,669]},{3:193,4:$VB,5:$VC,92:670},{3:660,4:$VB,5:$VC,63:[1,673],253:671,264:672,285:674},{3:503,4:$VB,5:$VC,123:675,155:582},{33:676,66:59,74:79,80:$V4},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:677,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VZ1,[2,527],{218:[1,678]}),o($VA,[2,326],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,438]),o($VA,[2,439]),o($VA,[2,328],{61:$VW2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:680,313:126,314:$V51,318:$V61},o($VX2,[2,336]),o($VX2,[2,337]),o($VA,[2,329]),{61:$VY2,65:[1,681]},o($VZ2,[2,349]),o($VA,[2,423]),o($V_2,[2,162],{71:683,138:[1,684]}),{126:[1,685]},o($Vk2,[2,146],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:686,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V02,[2,82],{108:591,111:594,107:687,101:688,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),o($V$2,[2,113]),o($V$2,[2,114]),{3:173,4:$VB,5:$VC,64:[1,692],92:690,93:693,94:691,95:694,109:689,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{103:[1,695],113:$V03},{103:[1,697],113:$V13},o($V23,[2,129]),{102:[1,701],104:[1,700],111:699,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2},o($V23,[2,131]),{113:[1,702]},{104:[1,704],113:[1,703]},{104:[1,706],113:[1,705]},{104:[1,707]},{113:[1,708]},{113:[1,709]},o($VA,[2,554],{348:710,349:711,350:712,203:$VN2,355:[1,713]}),o($V33,[2,538]),o($V33,[2,539]),{228:[1,715],351:[1,714]},{154:$Vk1,203:[2,535],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V12,[2,90]),{3:716,4:$VB,5:$VC},{65:[1,717]},{3:718,4:$VB,5:$VC},{3:719,4:$VB,5:$VC},o($VA,[2,446]),{3:720,4:$VB,5:$VC},{96:$VE,152:721,190:$VV},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:722,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,155:502,240:723},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:724,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,499],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:725,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:726},o($V43,[2,502]),o($V43,[2,503]),o($V43,[2,504]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:727,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,$Vo2,{148:728,149:$Vp2,150:$Vq2}),o($Vn2,[2,177],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vn2,[2,178],{224:251,149:[1,729],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vr2,[2,180]),o($Vr2,[2,182]),o($Vr2,[2,184]),o($Vg1,[2,72]),o($Vd1,[2,277]),{65:[1,730]},{61:$Vx2,65:[1,731]},o($Vd1,[2,297]),o($Vd1,[2,299]),{65:[1,732],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,733]},{61:$Vx2,65:[1,734]},o($Vd1,[2,302]),{61:[1,735],65:[1,736]},{61:$V53,65:[1,737]},o($Vy2,[2,341],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,[2,226]),{64:[1,739]},o($Vd1,$VS2,{173:740,174:$VT2}),o($Vd1,$VS2,{173:741,174:$VT2}),o($Vy2,[2,247],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VS1,[2,190]),o($Vd1,[2,187]),o($Vd1,[2,260]),o($Ve2,[2,264],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{61:[1,743],65:[1,742]},{61:[1,745],65:[1,744],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:650,4:$VB,5:$VC},o($VA,[2,418]),{296:[1,746]},o($VA,[2,419]),o($V63,[2,396],{168:747,4:$V82,287:[1,748],288:$V92}),o($VA,[2,420]),o($VA,[2,422]),{61:$Vx2,65:[1,749]},o($VA,[2,426]),o($VA,[2,430]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:750,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:751,4:$VB,5:$VC},o($VA,[2,432]),{3:753,4:$VB,5:$VC,96:$V73,277:752},{64:[1,755]},{65:[1,756]},{61:[1,757],65:[2,367]},{33:758,66:59,74:79,80:$V4},o($Vy2,[2,392]),{61:$VY2,65:[1,759]},o($VA,[2,458]),o($VZ1,[2,528],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:760,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,761],94:763,163:762,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{61:$V53,65:[1,764]},{33:766,66:59,74:79,80:$V4,244:[1,765]},{3:503,4:$VB,5:$VC,155:767},o($V83,[2,170],{72:768,144:[1,769]}),{126:[1,770]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:771,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC2,[2,89]),o($V$2,[2,111]),o($V$2,[2,112]),o($V$2,[2,144],{110:777,120:[1,778],122:[1,779]}),o($Vc3,[2,116],{3:780,4:$VB,5:$VC,63:[1,781]}),{3:782,4:$VB,5:$VC,63:[1,783]},{33:784,66:59,74:79,80:$V4},o($Vc3,[2,123],{3:785,4:$VB,5:$VC,63:[1,786]}),o($Vc3,[2,126],{3:787,4:$VB,5:$VC,63:[1,788]}),{64:[1,789]},o($V23,[2,141]),{64:[1,790]},o($V23,[2,137]),o($V23,[2,130]),{113:$V13},{113:$V03},o($V23,[2,132]),o($V23,[2,133]),{113:[1,791]},o($V23,[2,135]),{113:[1,792]},{113:[1,793]},o($V23,[2,139]),o($V23,[2,140]),o($VA,[2,531]),o($V33,[2,536]),o($V33,[2,537]),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:794,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{204:[1,795],226:[1,796]},{351:[1,797]},o($V12,[2,91]),o($V42,[2,57]),o($VA,[2,456]),o($VA,[2,452]),o($VA,[2,454]),o($VA,[2,450]),o($VA,[2,321],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VP2,[2,324]),o($VP2,[2,325],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,500],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V43,[2,501]),{65:[1,798],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vn2,[2,174]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:799,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,289]),o($Vd1,[2,290]),o($Vd1,[2,311]),o($Vd1,[2,298]),o($Vd1,[2,300]),{151:[1,800]},o($Vw2,[2,398]),o($Vw2,[2,400]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:801,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{138:$Vd3,175:802,176:803,177:[1,804]},o($Vd1,[2,227]),o($Vd1,[2,228]),o($Vd1,[2,215]),{151:[1,806]},o($Vd1,[2,217]),{151:[1,807]},{3:808,4:$VB,5:$VC},o($V63,[2,401],{286:809,289:810,290:811,272:820,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V63,[2,395]),o($VA,[2,425],{63:[1,822]}),{61:$Vx2,65:[1,823]},o($VA,[2,434]),{61:$Vn3,65:[1,824]},o($Vy2,[2,388]),o($Vy2,[2,389]),{3:753,4:$VB,5:$VC,96:$V73,277:826},o($VA,[2,353],{254:827,255:828,256:829,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($Vs3,$Vt3,{3:660,265:834,285:835,266:836,267:837,4:$VB,5:$VC,273:$Vu3}),{65:[2,368]},{63:[1,839]},o($VZ1,[2,529],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:840,313:126,314:$V51,318:$V61},o($VX2,[2,339]),o($VX2,[2,340]),o($VX2,[2,335]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:841,313:126,314:$V51,318:$V61},o($VA,[2,332]),o($VZ2,[2,350]),o($Vv3,[2,157],{73:842,135:[1,843],136:[1,844],137:[1,845]}),{89:846,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:847,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VB2,[2,155],{128:850,61:$Vw3,134:[1,852]}),o($Vx3,[2,149]),{131:[1,853]},{64:[1,854]},{64:[1,855]},o($Vx3,[2,154],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,115]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:856,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:857,155:582},o($Vc3,[2,117]),{3:858,4:$VB,5:$VC},o($Vc3,[2,119]),{3:859,4:$VB,5:$VC},{65:[1,860]},o($Vc3,[2,124]),{3:861,4:$VB,5:$VC},o($Vc3,[2,127]),{3:862,4:$VB,5:$VC},{33:863,66:59,74:79,80:$V4},{33:864,66:59,74:79,80:$V4},o($V23,[2,134]),o($V23,[2,136]),o($V23,[2,138]),o($VA,[2,555],{61:$Vm2,91:[1,865]}),{237:$Vy3,241:$Vz3,352:866},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:869,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{126:[1,871],204:[1,870],226:[1,872]},o($V43,[2,505]),o($Vn2,[2,179],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,873]},o($Vy2,[2,342],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,874],138:$Vd3,176:875},{65:[1,876]},{126:[1,877]},{126:[1,878]},{65:[1,879]},{65:[1,880]},o($VA,[2,421]),o($V63,[2,394]),o($V63,[2,402],{272:820,290:881,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V52,[2,404]),{276:[1,882]},{276:[1,883]},{3:884,4:$VB,5:$VC},o($V52,[2,408]),o($V52,[2,410],{64:[1,885]}),{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:$VE,151:$VF,152:201,158:202,159:203,170:886,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,194:$VZ,195:$V_,196:$V$,197:$V01},o($V52,[2,412]),{191:[1,887]},o($V52,[2,414]),{64:[1,888]},{3:889,4:$VB,5:$VC},o($VA,$VU2,{302:890,63:$VV2}),o($VA,[2,440]),{3:891,4:$VB,5:$VC,96:[1,892]},{61:$Vn3,65:[1,893]},o($VA,[2,351]),o($VA,[2,354],{256:894,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($VA3,[2,356]),o($VA3,[2,357]),{218:[1,895]},{218:[1,896]},{218:[1,897]},{61:[1,898],65:[2,366]},o($Vy2,[2,393]),o($Vy2,[2,369]),{78:[1,906],86:[1,907],268:899,269:900,270:901,271:902,272:903,274:$Vi3,275:[1,904],276:[1,908],278:[1,905]},{3:909,4:$VB,5:$VC},{33:910,66:59,74:79,80:$V4},{61:$V53,65:[1,911]},o($VA,[2,330],{61:$VW2}),o($Vv3,[2,58]),{33:912,66:59,74:79,79:[1,913],80:$V4},{33:914,66:59,74:79,80:$V4},{33:915,66:59,74:79,80:$V4},o($V83,[2,172],{145:916,146:[1,917]}),o($V_2,[2,163],{61:$VB3}),o($VC3,[2,164]),o($VC3,[2,166],{224:251,141:[1,919],142:[1,920],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VB2,[2,148]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,129:921,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:922,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,923]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:924,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:925,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V$2,[2,142],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,143],{61:$VY2}),o($Vc3,[2,118]),o($Vc3,[2,120]),{3:926,4:$VB,5:$VC,63:[1,927]},o($Vc3,[2,125]),o($Vc3,[2,128]),{65:[1,928]},{65:[1,929]},{3:193,4:$VB,5:$VC,92:931,192:[1,930]},o($V33,[2,540]),o($V33,[2,542]),{238:[1,932]},{154:$Vk1,204:[1,933],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{242:$VD3,353:934},{311:[1,937],354:[1,936]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:938,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vw2,[2,397]),o($Vd1,[2,230]),{65:[1,939]},o($Vd1,[2,231]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:940,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:941,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,216]),o($Vd1,[2,218]),o($V52,[2,403]),o($V52,[2,405]),{279:[1,942]},{64:[1,943]},{89:944,151:$VF},o($V52,[2,411]),o($V52,[2,413]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:945,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,427]),o($VA,[2,431]),o($Vy2,[2,390]),o($Vy2,[2,391]),o($VA,[2,441]),o($VA3,[2,355]),{3:946,4:$VB,5:$VC},{89:947,151:$VF},{3:948,4:$VB,5:$VC},o($Vs3,$Vt3,{267:837,266:949,273:$Vu3}),o($Vy2,[2,371]),o($Vy2,[2,372]),o($Vy2,[2,373]),o($Vy2,[2,374]),o($Vy2,[2,375]),{276:[1,950]},{276:[1,951]},o($Vy2,[2,385]),{3:952,4:$VB,5:$VC},{3:953,4:$VB,5:$VC},o($Vs3,[2,377]),o($VA,[2,457]),o($VX2,[2,338]),o($Vv3,[2,158]),{33:954,66:59,74:79,80:$V4},o($Vv3,[2,160]),o($Vv3,[2,161]),o($V83,[2,171]),{89:955,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,140:956,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC3,[2,167]),{143:[1,957]},o($Vx3,[2,150]),o($VB2,[2,156],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:958,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vw3,65:[1,959]},{61:$Vw3,65:[1,960]},o($Vc3,[2,121]),{3:961,4:$VB,5:$VC},{3:962,4:$VB,5:$VC,63:[1,963]},{3:964,4:$VB,5:$VC,63:[1,965]},{3:966,4:$VB,5:$VC},o($VA,[2,557],{64:[1,967]}),{3:503,4:$VB,5:$VC,155:502,239:968,240:501},{237:$Vy3,241:$Vz3,352:969},o($V33,[2,544]),{64:[1,971],244:[1,970],246:[1,972]},{204:[1,973],226:[1,974]},{204:[1,975],226:[1,976]},{154:$Vk1,204:[1,977],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vd1,[2,232]),o([65,138],[2,233],{61:$Vw3}),{61:$VB3,65:[2,234]},{3:978,4:$VB,5:$VC},{3:979,4:$VB,5:$VC},{61:[1,980]},{65:[1,981],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VA3,[2,358]),o($VA3,[2,359]),o($VA3,[2,360]),o($Vy2,[2,370]),{64:[1,982]},{64:[1,983]},{64:[1,984]},{64:[1,985]},o($Vv3,[2,159]),o($V83,[2,173]),o($VC3,[2,165]),o($VC3,[2,168],{141:[1,986]}),{61:$Vw3,65:[1,987]},o($Vx3,[2,152]),o($Vx3,[2,153]),o($Vc3,[2,122]),o($V$2,[2,84]),{3:988,4:$VB,5:$VC},o($V$2,[2,86]),{3:989,4:$VB,5:$VC},o($VA,[2,556]),{3:503,4:$VB,5:$VC,123:990,155:582},o($V33,[2,543],{61:$VO2}),o($V33,[2,541]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:991,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:992,155:582},{244:[1,993]},{242:$VD3,353:994},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:995,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:996},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:997,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:998},{64:[1,999]},{65:[1,1e3]},{89:1001,151:$VF},o($V52,[2,378]),{3:753,4:$VB,5:$VC,96:$V73,277:1002},{3:753,4:$VB,5:$VC,96:$V73,277:1003},{3:503,4:$VB,5:$VC,123:1004,155:582},{3:503,4:$VB,5:$VC,123:1005,155:582},o($VC3,[2,169]),o($Vx3,[2,151]),o($V$2,[2,85]),o($V$2,[2,87]),{61:$VY2,65:[1,1006]},o($V33,[2,550],{61:$VW2}),{61:$VY2,65:[1,1007]},o($V33,[2,552]),o($V33,[2,545]),{154:$Vk1,204:[1,1008],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,548]),{154:$Vk1,204:[1,1009],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,546]),{3:1010,4:$VB,5:$VC},o($V52,[2,407]),{65:[1,1011]},{61:$Vn3,65:[1,1012]},{61:$Vn3,65:[1,1013]},{61:$VY2,65:[1,1014]},{61:$VY2,65:[1,1015]},o($VA,[2,558]),{244:[1,1016],246:[1,1017]},{242:$VD3,353:1018},{237:$Vy3,241:$Vz3,352:1019},{65:[1,1020]},o($V52,[2,409]),o($Vy2,[2,379]),{279:[1,1021]},o($Vy2,[2,386]),o($Vy2,[2,387]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:1022,313:126,314:$V51,318:$V61},{244:[1,1023]},o($V33,[2,547]),o($V33,[2,549]),o($V52,[2,406]),{3:1024,4:$VB,5:$VC},o($V33,[2,551],{61:$VW2}),o($V33,[2,553]),{64:[1,1025]},{3:753,4:$VB,5:$VC,96:$V73,277:1026},{61:$Vn3,65:[1,1027]},o($Vy2,[2,381],{280:1028,281:1029,120:[1,1030]}),o($Vy2,[2,380]),{120:[1,1032],282:1031},{241:[1,1033]},o($Vy2,[2,382]),{237:[1,1034]},{283:[1,1035]},{283:[1,1036]},{284:[1,1037]},{284:[1,1038]},{120:[2,383]},o($Vy2,[2,384])],defaultActions:{81:[2,3],129:[2,235],130:[2,236],131:[2,237],132:[2,238],133:[2,239],134:[2,240],135:[2,241],136:[2,242],137:[2,243],165:[2,532],337:[2,533],405:[2,318],406:[2,319],407:[2,320],483:[2,534],758:[2,368],1037:[2,383]},parseError:function parseError(str,hash){if(hash.recoverable){this.trace(str) }else{throw new Error(str)}},parse:function parse(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1;var args=lstack.slice.call(arguments,1);var lexer=Object.create(this.lexer);var sharedState={yy:{}};for(var k in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,k)){sharedState.yy[k]=this.yy[k]}}lexer.setInput(input,sharedState.yy);sharedState.yy.lexer=lexer;sharedState.yy.parser=this;if(typeof lexer.yylloc=="undefined"){lexer.yylloc={}}var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;if(typeof sharedState.yy.parseError==="function"){this.parseError=sharedState.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function popStack(n){stack.length=stack.length-2*n;vstack.length=vstack.length-n;lstack.length=lstack.length-n}_token_stack:function lex(){var token;token=lexer.lex()||EOF;if(typeof token!=="number"){token=self.symbols_[token]||token}return token}var symbol,preErrorSymbol,state,action,a,r,yyval={},p,len,newState,expected;while(true){state=stack[stack.length-1];if(this.defaultActions[state]){action=this.defaultActions[state]}else{if(symbol===null||typeof symbol=="undefined"){symbol=lex()}action=table[state]&&table[state][symbol]}if(typeof action==="undefined"||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state]){if(this.terminals_[p]&&p>TERROR){expected.push("'"+this.terminals_[p]+"'")}}if(lexer.showPosition){errStr="Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'"}else{errStr="Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'")}this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}switch(action[0]){case 1:stack.push(symbol);vstack.push(lexer.yytext);lstack.push(lexer.yylloc);stack.push(action[1]);symbol=null;if(!preErrorSymbol){yyleng=lexer.yyleng;yytext=lexer.yytext;yylineno=lexer.yylineno;yyloc=lexer.yylloc;if(recovering>0){recovering--}}else{symbol=preErrorSymbol;preErrorSymbol=null}break;case 2:len=this.productions_[action[1]][1];yyval.$=vstack[vstack.length-len];yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column};if(ranges){yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]}r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args));if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);lstack=lstack.slice(0,-1*len)}stack.push(this.productions_[action[1]][0]);vstack.push(yyval.$);lstack.push(yyval._$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:return true}}return true}};var lexer=function(){var lexer={EOF:1,parseError:function parseError(str,hash){if(this.yy.parser){this.yy.parser.parseError(str,hash)}else{throw new Error(str)}},setInput:function(input,yy){this.yy=yy||this.yy||{};this._input=input;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.offset++;this.match+=ch;this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return ch},unput:function(ch){var len=ch.length;var lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-len);this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(lines.length-1){this.yylineno-=lines.length-1}var r=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len};if(this.options.ranges){this.yylloc.range=[r[0],r[0]+this.yyleng-len]}this.yyleng=this.yytext.length;return this},more:function(){this._more=true;return this},reject:function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length)}return(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput();var c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer){backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){backup.yylloc.range=this.yylloc.range.slice(0)}}lines=match[0].match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno+=lines.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length};this.yytext+=match[0];this.match+=match[0];this.matches=match;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(match[0].length);this.matched+=match[0];token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(token){return token}else if(this._backtrack){for(var k in backup){this[k]=backup[k]}return false}return false},next:function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var token,match,tempMatch,index;if(!this._more){this.yytext="";this.match=""}var rules=this._currentRules();for(var i=0;imatch[0].length)){match=tempMatch;index=i;if(this.options.backtrack_lexer){token=this.test_match(tempMatch,rules[i]);if(token!==false){return token}else if(this._backtrack){match=false;continue}else{return false}}else if(!this.options.flex){break}}}if(match){token=this.test_match(match,rules[index]);if(token!==false){return token}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}},lex:function lex(){var r=this.next();if(r){return r}else{return this.lex()}},begin:function begin(condition){this.conditionStack.push(condition)},popState:function popState(){var n=this.conditionStack.length-1;if(n>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}},_currentRules:function _currentRules(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}},topState:function topState(n){n=this.conditionStack.length-1-Math.abs(n||0);if(n>=0){return this.conditionStack[n]}else{return"INITIAL"}},pushState:function pushState(condition){this.begin(condition)},stateStackSize:function stateStackSize(){return this.conditionStack.length},options:{"case-insensitive":true},performAction:function anonymous(yy,yy_,$avoiding_name_collisions,YY_START){var YYSTATE=YY_START;switch($avoiding_name_collisions){case 0:return 165;break;case 1:return 197;break;case 2:return 314;break;case 3:return 5;break;case 4:return 5;break;case 5:return 190;break;case 6:return 190;break;case 7:return 96;break;case 8:return 96;break;case 9:return;break;case 10:return;break;case 11:break;case 12:return 227;break;case 13:return 226;break;case 14:return"ABSOLUTE";break;case 15:return 284;break;case 16:return 297;break;case 17:return 185;break;case 18:return 79;break;case 19:return 294;break;case 20:return 226;break;case 21:return 119;break;case 22:return 236;break;case 23:return 103;break;case 24:return 186;break;case 25:return 63;break;case 26:return 312;break;case 27:return 141;break;case 28:return 299;break;case 29:return 258;break;case 30:return 258;break;case 31:return 182;break;case 32:return 331;break;case 33:return 231;break;case 34:return 335;break;case 35:return 232;break;case 36:return 207;break;case 37:return 126;break;case 38:return 198;break;case 39:return 167;break;case 40:return 259;break;case 41:return 274;break;case 42:return"CLOSE";break;case 43:return 142;break;case 44:return"COLUMN";break;case 45:return"COLUMNS";break;case 46:return"COMMIT";break;case 47:return"CONSTRAINT";break;case 48:return"CONTINUE";break;case 49:return"CONVERT";break;case 50:return"COUNT";break;case 51:return 250;break;case 52:return"CROSS";break;case 53:return 133;break;case 54:return"CURRENT_TIMESTAMP";break;case 55:return"CURSOR";break;case 56:return 300;break;case 57:return 305;break;case 58:return 339;break;case 59:return 246;break;case 60:return 241;break;case 61:return"DELETED";break;case 62:return 141;break;case 63:return 301;break;case 64:return 75;break;case 65:return 292;break;case 66:return 201;break;case 67:return 257;break;case 68:return 288;break;case 69:return 205;break;case 70:return 136;break;case 71:return 193;break;case 72:return 13;break;case 73:return 189;break;case 74:return"FETCH";break;case 75:return 183;break;case 76:return 278;break;case 77:return 97;break;case 78:return 11;break;case 79:return 125;break;case 80:return 130;break;case 81:return 134;break;case 82:return 309;break;case 83:return 263;break;case 84:return 291;break;case 85:return 233;break;case 86:return 229;break;case 87:return 86;break;case 88:return 114;break;case 89:return 242;break;case 90:return"INSERTED";break;case 91:return 137;break;case 92:return 91;break;case 93:return 113;break;case 94:return 276;break;case 95:return 184;break;case 96:return 115;break;case 97:return 206;break;case 98:return 144;break;case 99:return 311;break;case 100:return"MATCHED";break;case 101:return 84;break;case 102:return"MAX";break;case 103:return"MERGE";break;case 104:return"MIN";break;case 105:return"EXCEPT";break;case 106:return"MODIFY";break;case 107:return 112;break;case 108:return"NEXT";break;case 109:return 166;break;case 110:return 143;break;case 111:return 283;break;case 112:return 228;break;case 113:return 191;break;case 114:return 327;break;case 115:return 120;break;case 116:return 146;break;case 117:return"OPEN";break;case 118:return 227;break;case 119:return 138;break;case 120:return 104;break;case 121:return 174;break;case 122:return 177;break;case 123:return 90;break;case 124:return 15;break;case 125:return 275;break;case 126:return 336;break;case 127:return"PRIOR";break;case 128:return 14;break;case 129:return 87;break;case 130:return"REDUCE";break;case 131:return 279;break;case 132:return"RELATIVE";break;case 133:return 295;break;case 134:return 337;break;case 135:return"RESTORE";break;case 136:return 116;break;case 137:return 330;break;case 138:return 132;break;case 139:return 82;break;case 140:return 300;break;case 141:return 305;break;case 142:return 80;break;case 143:return 118;break;case 144:return 238;break;case 145:return 131;break;case 146:return 304;break;case 147:return 235;break;case 148:return"STORE";break;case 149:return"SUM";break;case 150:return 251;break;case 151:return 306;break;case 152:return 354;break;case 153:return 149;break;case 154:return 85;break;case 155:return 150;break;case 156:return 204;break;case 157:return 296;break;case 158:return 88;break;case 159:return"TRAN";break;case 160:return 329;break;case 161:return 188;break;case 162:return 342;break;case 163:return 135;break;case 164:return 78;break;case 165:return 237;break;case 166:return 303;break;case 167:return 122;break;case 168:return 81;break;case 169:return 244;break;case 170:return 308;break;case 171:return 203;break;case 172:return 124;break;case 173:return 333;break;case 174:return 59;break;case 175:return 329;break;case 176:return 151;break;case 177:return 151;break;case 178:return 213;break;case 179:return 208;break;case 180:return 209;break;case 181:return 154;break;case 182:return 210;break;case 183:return 211;break;case 184:return 223;break;case 185:return 220;break;case 186:return 222;break;case 187:return 219;break;case 188:return 215;break;case 189:return 214;break;case 190:return 217;break;case 191:return 221;break;case 192:return 216;break;case 193:return 218;break;case 194:return 221;break;case 195:return 64;break;case 196:return 65;break;case 197:return 192;break;case 198:return 318;break;case 199:return 320;break;case 200:return 322;break;case 201:return 106;break;case 202:return 61;break;case 203:return 234;break;case 204:return 195;break;case 205:return 9;break;case 206:return 194;break;case 207:return 196;break;case 208:return 212;break;case 209:return 4;break;case 210:return 8;break;case 211:return"INVALID";break}},rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:\/\*(.*?)\*\/)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AGGR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTOINCREMENT\b)/i,/^(?:AUTO_INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHARSET\b)/i,/^(?:CHECK\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE\b)/i,/^(?:DATABASES\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:END\b)/i,/^(?:ENGINE\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:GO\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:HELP\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INNER\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:SOURCE\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX\b)/i,/^(?:MERGE\b)/i,/^(?:MIN\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:RELATIVE\b)/i,/^(?:RENAME\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:SCHEMA\b)/i,/^(?:SCHEMAS\b)/i,/^(?:SELECT\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TD\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:TH\b)/i,/^(?:THEN\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:\^)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],inclusive:true}}};return lexer}();parser.lexer=lexer;function Parser(){this.yy={}}Parser.prototype=parser;parser.Parser=Parser;return new Parser}();if(typeof require!=="undefined"&&typeof exports!=="undefined"){exports.parser=parser;exports.Parser=parser.Parser;exports.parse=function(){return parser.parse.apply(parser,arguments)};exports.main=function commonjsMain(args){if(!args[1]){console.log("Usage: "+args[0]+" FILE");process.exit(1)}var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)};if(typeof module!=="undefined"&&require.main===module){exports.main(process.argv.slice(1))}}alasql.prettyflag=false;alasql.pretty=function(sql,flag){var pf=alasql.prettyflag;alasql.prettyflag=!flag;var s=alasql.parse(sql).toString();alasql.prettyflag=pf;return s};function K(s){if(alasql.prettyflag){return''+s.toUpperCase()+""}else{return s}}function P(s){if(alasql.prettyflag){return''+s+""}else{return s}}function L(s){if(alasql.prettyflag){return''+s+""}else{return s}}function N(s){if(alasql.prettyflag){return''+s+""}else{return s}}function S(s){if(alasql.prettyflag){return''+s+""}else{return s}}function NL(){if(alasql.prettyflag){return"
    "}else{return" "}}function ID(){if(alasql.prettyflag){return"     "}else{return""}}var utils=alasql.utils={};function returnTrue(){return true}function returnUndefined(){}var escapeq=utils.escapeq=function(s){return s.replace(/\'/g,"\\'")};var escapeqq=utils.undoubleq=function(s){return s.replace(/(\')/g,"''")};var doubleq=utils.doubleq=function(s){return s.replace(/(\'\')/g,"\\'")};var doubleqq=utils.doubleqq=function(s){return s.replace(/\'/g,"'")};var cutbom=function(s){if(s[0]==String.fromCharCode(65279))s=s.substr(1);return s};var loadFile=utils.loadFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(!path){var buff="";process.stdin.setEncoding("utf8");process.stdin.on("readable",function(){var chunk=process.stdin.read();if(chunk!==null){buff+=chunk.toString()}});process.stdin.on("end",function(){success(cutbom(buff))})}else{if(asy){fs.readFile(path,function(err,data){if(err){throw err}success(cutbom(data.toString()))})}else{var data=fs.readFileSync(path);success(cutbom(data.toString()))}}}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.file(function(file){var fileReader=new FileReader;fileReader.onloadend=function(e){success(cutbom(this.result))};fileReader.readAsText(file)})})})}else{if(typeof path=="string"){if(path.substr(0,1)=="#"&&typeof document!="undefined"){var data=document.querySelector(path).textContent;success(data)}else{var xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){if(xhr.readyState===XMLHttpRequest.DONE){if(xhr.status===200){if(success)success(cutbom(xhr.responseText))}else{if(error)error(xhr)}}};xhr.open("GET",path,asy);xhr.send()}}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(cutbom(data))};reader.readAsText(files[0])}}};var loadBinaryFile=utils.loadBinaryFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(asy){fs.readFile(path,function(err,data){if(err){throw err}var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))})}else{var data=fs.readFileSync(path);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))}}else{if(typeof path=="string"){var xhr=new XMLHttpRequest;xhr.open("GET",path,asy);xhr.responseType="arraybuffer";xhr.onload=function(){var data=new Uint8Array(xhr.response);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))};xhr.send()}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(data)};reader.readAsBinaryString(files[0])}}};var removeFile=utils.removeFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.remove(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.remove(cb);if(cb)cb()},function(){if(cb)cb()})})}else{throw new Error("You can remove files only in Node.js and Apache Cordova")}};var deleteFile=utils.deleteFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.unlink(path,cb)}};var fileExists=utils.fileExists=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.exists(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){cb(true)},function(){cb(false)})})}else{throw new Error("You can use exists() only in Node.js or Apach Cordova")}};var saveFile=utils.saveFile=function(path,data,cb){if(!path){alasql.options.stdout=true;console.log(data);if(cb)cb()}else{if(typeof exports=="object"){var fs=require("fs");var data=fs.writeFileSync(path,data);if(cb)cb()}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:true},function(fileEntry){fileEntry.createWriter(function(fileWriter){fileWriter.onwriteend=function(){if(cb)cb()};fileWriter.write(data)})})})}else{var blob=new Blob([data],{type:"text/plain;charset=utf-8"});saveAs(blob,path);if(cb)cb()}}};var hash=utils.hash=function hash(str){var h=0;if(str.length==0)return h;for(var i=0;i=26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr;if(i>26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr}}return addr};var xlscn=utils.xlscn=function(s){var n=s.charCodeAt(0)-65;if(s.length>1){n=(n+1)*26+s.charCodeAt(1)-65;if(s.length>2){n=(n+1)*26+s.charCodeAt(2)-65}}return n};var domEmptyChildren=utils.domEmptyChildren=function(container){var len=container.childNodes.length;while(len--){container.removeChild(container.lastChild)}};alasql.utils.uncomment=function uncomment(str){str=("__"+str+"__").split("");var quote=false,quoteSign,blockComment=false,lineComment=false;for(var i=0,l=str.length;ialasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement}var res=alasql.res=statement(params,cb,scope);return res}else{alasql.precompile(ast.statements[0],alasql.useid,params);var res=alasql.res=ast.statements[0].execute(databaseid,params,cb,scope);return res}}else{if(cb){alasql.adrun(databaseid,ast,params,cb,scope)}else{return alasql.drun(databaseid,ast,params,cb,scope)}}};alasql.drun=function(databaseid,ast,params,cb,scope){var useid=alasql.useid;if(useid!=databaseid)alasql.use(databaseid);var res=[];for(var i=0,ilen=ast.statements.length;i=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) -}var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] -}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

    "+alasql.pretty(sql)+"
    "}if(res instanceof Array){if(res.length==0){s+="

    [ ]

    "}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

    "}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
    #";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
    ';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
    "}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
    "}else{s+="

    "+JSONtoString(res)+"

    "}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+sql+"

    ");alasql.write('

    '+err+"

    ")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+alasql.pretty(sql,false)+"

    ");alasql.write('

    '+err+"

    "+alasql.pretty(sql)+"
    "}if(res instanceof Array){if(res.length==0){s+="

    [ ]

    "}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

    "}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
    #";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
    ';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
    "}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
    "}else{s+="

    "+JSONtoString(res)+"

    "}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+sql+"

    ");alasql.write('

    '+err+"

    ")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+alasql.pretty(sql,false)+"

    ");alasql.write('

    '+err+"

    ")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/dist/alasql-worker.js b/dist/alasql-worker.js index 1d5e08899c..474a72e2fa 100755 --- a/dist/alasql-worker.js +++ b/dist/alasql-worker.js @@ -1,3 +1,43 @@ +// +// alasql.js +// AlaSQL - JavaScript SQL database +// Date: 13.04.2015 +// Version: 0.0.44 +// (ñ) 2014-2015, Andrey Gershun +// + +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + + +/* +// +// AlaSQL Workker +// Date: 13.04.2014 +// (c) 2014-2015, Andrey Gershun +// +*/ (function (root, factory) { if (typeof define === 'function' && define.amd) { define([], factory); diff --git a/dist/alasql-worker.js.map b/dist/alasql-worker.js.map index d080a665ba..a562320204 100755 --- a/dist/alasql-worker.js.map +++ b/dist/alasql-worker.js.map @@ -2,10 +2,11 @@ "version": 3, "file": "alasql-worker.js", "sources": [ + "src/05copyright.js", "src/99worker-start.js", "src/99worker.js", "src/99worker-finish.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/dist/alasql.js b/dist/alasql.js index 28f0075073..d5c8069126 100755 --- a/dist/alasql.js +++ b/dist/alasql.js @@ -1,34 +1,36 @@ -// -// alasql.js -// Alasql - JavaScript SQL database -// Date: 01.04.2015 -// Version: 0.0.43 -// (ñ) 2014, Andrey Gershun -// - -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ +// +// alasql.js +// AlaSQL - JavaScript SQL database +// Date: 13.04.2015 +// Version: 0.0.44 +// (ñ) 2014-2015, Andrey Gershun +// + +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + + /** UMD envelope @@ -109,7 +111,7 @@ var alasql = function(sql, params, cb, scope) { }; /** Current version of alasql */ -alasql.version = "0.0.36"; +alasql.version = "0.0.44"; @@ -4832,7 +4834,7 @@ yy.Select.prototype.toJavaScript = function(context, tableid, defcols) { // console.log('Select.toJS', 81, this.queriesidx); // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]'; //console.log(this); - var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,p))[0]'; + var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,'+context+'))[0]'; // s = '(console.log(this.queriesfn[0]),'+s+')'; return s; @@ -5133,9 +5135,9 @@ yy.ExistsValue.prototype.toType = function() { return 'boolean'; }; -yy.ExistsValue.prototype.toJavaScript = function() { +yy.ExistsValue.prototype.toJavaScript = function(context,tableid,defcols) { // return 'ww=this.existsfn['+this.existsidx+'](params,null,p).length,console.log(ww),ww'; - return 'this.existsfn['+this.existsidx+'](params,null,p).length'; + return 'this.existsfn['+this.existsidx+'](params,null,'+context+').length'; }; yy.Select.prototype.compileWhereExists = function(query) { diff --git a/dist/alasql.js.map b/dist/alasql.js.map index 9a432b2ecf..b8db6adaf1 100755 --- a/dist/alasql.js.map +++ b/dist/alasql.js.map @@ -2,6 +2,7 @@ "version": 3, "file": "alasql.js", "sources": [ + "src/05copyright.js", "src/10start.js", "src/alasqlparser.js", "src/12pretty.js", @@ -75,5 +76,5 @@ "src/99worker.js" ], "names": [], - "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" + "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1sBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" } \ No newline at end of file diff --git a/dist/alasql.min.js b/dist/alasql.min.js index 69de515ef3..a5c2c40aa6 100644 --- a/dist/alasql.min.js +++ b/dist/alasql.min.js @@ -1,8 +1,8 @@ -(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){var alasql=function(sql,params,cb,scope){if(typeof importScripts!="function"&&alasql.webworker){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}else{if(arguments.length==0){return new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]})}else if(arguments.length==1&&typeof sql=="object"&&sql instanceof Array){var select=new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]});select.preparams=[sql];return select}else{if(typeof sql=="string"&&sql[0]=="#"&&typeof document=="object"){sql=document.querySelector(sql).textContent}else if(typeof sql=="object"&&sql instanceof HTMElement){sql=sql.textContent}else if(typeof sql=="function"){sql=sql.toString().slice(14,-3)}return alasql.exec(sql,params,cb,scope)}}};alasql.version="0.0.36";var parser=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,11],$V1=[1,6],$V2=[1,35],$V3=[1,61],$V4=[1,80],$V5=[1,70],$V6=[1,68],$V7=[1,78],$V8=[1,54],$V9=[1,57],$Va=[1,52],$Vb=[1,49],$Vc=[1,56],$Vd=[1,50],$Ve=[1,58],$Vf=[1,51],$Vg=[1,55],$Vh=[1,67],$Vi=[1,62],$Vj=[1,69],$Vk=[1,71],$Vl=[1,72],$Vm=[1,65],$Vn=[1,66],$Vo=[1,64],$Vp=[1,73],$Vq=[1,74],$Vr=[1,75],$Vs=[1,76],$Vt=[1,77],$Vu=[1,53],$Vv=[1,63],$Vw=[1,60],$Vx=[1,82],$Vy=[1,83],$Vz=[8,9,11,201],$VA=[8,9,11,201,205],$VB=[1,138],$VC=[1,139],$VD=[1,103],$VE=[1,114],$VF=[1,111],$VG=[1,110],$VH=[1,128],$VI=[1,124],$VJ=[1,125],$VK=[1,129],$VL=[1,130],$VM=[1,131],$VN=[1,132],$VO=[1,133],$VP=[1,134],$VQ=[1,135],$VR=[1,136],$VS=[1,137],$VT=[1,112],$VU=[1,113],$VV=[1,115],$VW=[1,116],$VX=[1,121],$VY=[1,122],$VZ=[1,117],$V_=[1,118],$V$=[1,119],$V01=[1,120],$V11=[1,123],$V21=[1,109],$V31=[1,108],$V41=[1,107],$V51=[1,127],$V61=[1,140],$V71=[1,151],$V81=[4,5],$V91=[8,9,11,65,97,124,125,135,136,137,138,144,201,205],$Va1=[1,167],$Vb1=[1,175],$Vc1=[1,174],$Vd1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Ve1=[1,206],$Vf1=[1,199],$Vg1=[4,5,64,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vh1=[2,74],$Vi1=[1,220],$Vj1=[4,5,64,75,78,79,88,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vk1=[1,236],$Vl1=[1,232],$Vm1=[1,233],$Vn1=[1,234],$Vo1=[1,235],$Vp1=[1,237],$Vq1=[1,238],$Vr1=[1,239],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,242],$Vv1=[1,243],$Vw1=[1,244],$Vx1=[1,245],$Vy1=[1,246],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,249],$VC1=[1,250],$VD1=[1,252],$VE1=[1,253],$VF1=[1,255],$VG1=[1,254],$VH1=[1,256],$VI1=[1,257],$VJ1=[1,258],$VK1=[1,259],$VL1=[2,193],$VM1=[1,263],$VN1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VO1=[2,251],$VP1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VQ1=[1,271],$VR1=[1,281],$VS1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VT1=[1,297],$VU1=[4,5,8,9,11,45,59,61,63,64,65,78,80,86,91,96,97,102,104,106,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,195,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,244,246,250,257,258,259,263,274,275,276,278,279,287,288,291,292,294,295,296,297,298,299,300,301,303,304,305,309,311,312,320,322,327,328,330,331,333,334,335,336,337,339,342,343,355],$VV1=[1,304],$VW1=[1,305],$VX1=[2,364],$VY1=[1,310],$VZ1=[8,9,11,61,201,205],$V_1=[2,416],$V$1=[1,321],$V02=[8,9,11,65,124,125,135,136,137,138,144,201,205],$V12=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22=[2,110],$V32=[1,349],$V42=[61,80],$V52=[8,9,11,61,65,191,201,205,228,246,258,274,275,278,279,291],$V62=[79,235,236],$V72=[1,414],$V82=[1,420],$V92=[1,421],$Va2=[1,431],$Vb2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,208,209,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vc2=[2,266],$Vd2=[1,438],$Ve2=[201,203,205],$Vf2=[61,322],$Vg2=[61,320,322],$Vh2=[1,445],$Vi2=[61,320],$Vj2=[4,5,96,190],$Vk2=[8,9,11,65,125,135,136,137,138,144,201,205],$Vl2=[8,9,11,65,91,97,124,125,135,136,137,138,144,201,205],$Vm2=[1,512],$Vn2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,201,205],$Vo2=[2,176],$Vp2=[1,514],$Vq2=[1,515],$Vr2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,149,150,201,205],$Vs2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vt2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vu2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vv2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vw2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vx2=[1,537],$Vy2=[61,65],$Vz2=[2,191],$VA2=[1,577],$VB2=[8,9,11,65,135,136,137,138,144,201,205],$VC2=[8,9,11,61,65,124,125,135,136,137,138,144,201,205],$VD2=[1,592],$VE2=[1,593],$VF2=[1,595],$VG2=[1,596],$VH2=[1,597],$VI2=[1,598],$VJ2=[1,599],$VK2=[1,600],$VL2=[1,601],$VM2=[1,602],$VN2=[1,606],$VO2=[1,617],$VP2=[8,9,11,61,124,201,203,205,355],$VQ2=[1,625],$VR2=[1,624],$VS2=[2,229],$VT2=[1,646],$VU2=[2,433],$VV2=[1,667],$VW2=[1,679],$VX2=[8,9,11,61,201,203,205,355],$VY2=[1,682],$VZ2=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V_2=[8,9,11,65,135,136,137,144,201,205],$V$2=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V03=[1,696],$V13=[1,698],$V23=[4,5,64,192,194,195,196,197],$V33=[8,9,11,201,203,205,355],$V43=[213,218],$V53=[1,738],$V63=[8,9,11,61,65,201,205],$V73=[1,754],$V83=[8,9,11,65,135,136,137,201,205],$V93=[1,773],$Va3=[1,774],$Vb3=[1,775],$Vc3=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$Vd3=[1,805],$Ve3=[1,818],$Vf3=[1,819],$Vg3=[1,817],$Vh3=[1,815],$Vi3=[1,821],$Vj3=[1,812],$Vk3=[1,813],$Vl3=[1,814],$Vm3=[1,816],$Vn3=[1,825],$Vo3=[1,830],$Vp3=[1,831],$Vq3=[1,832],$Vr3=[1,833],$Vs3=[78,86,274,275,276,278],$Vt3=[2,376],$Vu3=[1,838],$Vv3=[8,9,11,65,201,205],$Vw3=[1,851],$Vx3=[8,9,11,61,65,134,135,136,137,138,144,201,205],$Vy3=[1,868],$Vz3=[1,867],$VA3=[8,9,11,201,205,246,257,258,259],$VB3=[1,918],$VC3=[8,9,11,61,65,135,136,137,144,201,205],$VD3=[1,935];var parser={trace:function trace(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,SEMICOLON:9,AStatement:10,GO:11,ExplainStatement:12,EXPLAIN:13,QUERY:14,PLAN:15,Statement:16,If:17,AlterTable:18,AttachDatabase:19,CreateDatabase:20,CreateIndex:21,CreateTable:22,CreateView:23,Declare:24,Delete:25,DetachDatabase:26,DropDatabase:27,DropIndex:28,DropTable:29,DropView:30,Insert:31,RenameTable:32,Select:33,Merge:34,WithSelect:35,ShowCreateTable:36,ShowColumns:37,ShowDatabases:38,ShowIndex:39,ShowTables:40,TruncateTable:41,BeginTransaction:42,CommitTransaction:43,RollbackTransaction:44,EndTransaction:45,UseDatabase:46,Update:47,Help:48,JavaScript:49,Source:50,Assert:51,While:52,Continue:53,Break:54,BeginEnd:55,Print:56,Require:57,SetVariable:58,WITH:59,WithTablesList:60,COMMA:61,WithTable:62,AS:63,LPAR:64,RPAR:65,SelectClause:66,IntoClause:67,FromClause:68,WhereClause:69,GroupClause:70,OrderClause:71,LimitClause:72,UnionClause:73,SelectModifier:74,DISTINCT:75,TopClause:76,ResultColumns:77,UNIQUE:78,ALL:79,SELECT:80,VALUE:81,ROW:82,COLUMN:83,MATRIX:84,TEXTSTRING:85,INDEX:86,RECORDSET:87,TOP:88,NumValue:89,PERCENT:90,INTO:91,Table:92,FuncValue:93,ParamValue:94,VarValue:95,STRING:96,FROM:97,FromTablesList:98,FromTable:99,JoinTablesList:100,ApplyClause:101,CROSS:102,APPLY:103,OUTER:104,FromString:105,DOT:106,JoinTable:107,JoinMode:108,JoinTableAs:109,OnClause:110,JoinModeMode:111,NATURAL:112,JOIN:113,INNER:114,LEFT:115,RIGHT:116,FULL:117,SEMI:118,ANTI:119,ON:120,Expression:121,USING:122,ColumnsList:123,WHERE:124,GROUP:125,BY:126,GroupExpressionsList:127,HavingClause:128,GroupExpression:129,GROUPING:130,SETS:131,ROLLUP:132,CUBE:133,HAVING:134,UNION:135,EXCEPT:136,INTERSECT:137,ORDER:138,OrderExpressionsList:139,OrderExpression:140,DIRECTION:141,COLLATE:142,NOCASE:143,LIMIT:144,OffsetClause:145,OFFSET:146,ResultColumn:147,TDTH:148,TD:149,TH:150,NUMBER:151,StringValue:152,Star:153,STAR:154,Column:155,AggrValue:156,Op:157,LogicValue:158,NullValue:159,ExistsValue:160,CaseValue:161,CastClause:162,Json:163,NewClause:164,JAVASCRIPT:165,NEW:166,CAST:167,ColumnType:168,CONVERT:169,PrimitiveValue:170,CURRENT_TIMESTAMP:171,Aggregator:172,OverClause:173,OVER:174,OverPartitionClause:175,OverOrderByClause:176,PARTITION:177,SUM:178,COUNT:179,MIN:180,MAX:181,AVG:182,FIRST:183,LAST:184,AGGR:185,ARRAY:186,ExprList:187,TRUE:188,FALSE:189,NSTRING:190,NULL:191,AT:192,EXISTS:193,DOLLAR:194,COLON:195,QUESTION:196,BRAQUESTION:197,CASE:198,WhensList:199,ElseClause:200,END:201,When:202,WHEN:203,THEN:204,ELSE:205,LIKE:206,NOT_LIKE:207,PLUS:208,MINUS:209,SLASH:210,MODULO:211,CARET:212,ARROW:213,GT:214,GE:215,LT:216,LE:217,EQ:218,EQEQ:219,EQEQEQ:220,NE:221,NEEQEQ:222,NEEQEQEQ:223,CondOp:224,AllSome:225,AND:226,OR:227,NOT:228,IN:229,ColFunc:230,BETWEEN:231,NOT_BETWEEN:232,IS:233,DOUBLECOLON:234,SOME:235,ANY:236,UPDATE:237,SET:238,SetColumnsList:239,SetColumn:240,DELETE:241,INSERT:242,Into:243,VALUES:244,ValuesListsList:245,DEFAULT:246,ValuesList:247,Value:248,DateValue:249,CREATE:250,TABLE:251,IfNotExists:252,CreateTableDefClause:253,CreateTableOptionsClause:254,CreateTableOptions:255,CreateTableOption:256,ENGINE:257,AUTO_INCREMENT:258,CHARSET:259,TemporaryClause:260,TEMPORARY:261,TEMP:262,IF:263,ColumnDefsList:264,ConstraintsList:265,Constraint:266,ConstraintName:267,PrimaryKey:268,ForeignKey:269,UniqueKey:270,IndexKey:271,Check:272,CONSTRAINT:273,CHECK:274,PRIMARY:275,KEY:276,ColsList:277,FOREIGN:278,REFERENCES:279,OnForeignKeyClause:280,OnDeleteClause:281,OnUpdateClause:282,NO:283,ACTION:284,ColumnDef:285,ColumnConstraintsClause:286,ColumnConstraints:287,ENUM:288,ColumnConstraintsList:289,ColumnConstraint:290,IDENTITY:291,DROP:292,IfExists:293,ALTER:294,RENAME:295,TO:296,ADD:297,MODIFY:298,ATTACH:299,DATABASE:300,DETACH:301,AsClause:302,USE:303,SHOW:304,DATABASES:305,TABLES:306,COLUMNS:307,VIEW:308,HELP:309,ExpressionStatement:310,SOURCE:311,ASSERT:312,JsonObject:313,ATLBRA:314,JsonArray:315,JsonValue:316,JsonPrimitiveValue:317,LCUR:318,JsonPropertiesList:319,RCUR:320,JsonElementsList:321,RBRA:322,JsonProperty:323,OnOff:324,SetPropsList:325,SetProp:326,OFF:327,COMMIT:328,TRANSACTION:329,ROLLBACK:330,BEGIN:331,ElseStatement:332,WHILE:333,CONTINUE:334,BREAK:335,PRINT:336,REQUIRE:337,StringValuesList:338,DECLARE:339,DeclaresList:340,DeclareItem:341,TRUNCATE:342,MERGE:343,MergeInto:344,MergeUsing:345,MergeOn:346,MergeMatchedList:347,OutputClause:348,MergeMatched:349,MergeNotMatched:350,MATCHED:351,MergeMatchedAction:352,MergeNotMatchedAction:353,TARGET:354,OUTPUT:355,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",9:"SEMICOLON",11:"GO",13:"EXPLAIN",14:"QUERY",15:"PLAN",45:"EndTransaction",59:"WITH",61:"COMMA",63:"AS",64:"LPAR",65:"RPAR",75:"DISTINCT",78:"UNIQUE",79:"ALL",80:"SELECT",81:"VALUE",82:"ROW",83:"COLUMN",84:"MATRIX",85:"TEXTSTRING",86:"INDEX",87:"RECORDSET",88:"TOP",90:"PERCENT",91:"INTO",96:"STRING",97:"FROM",102:"CROSS",103:"APPLY",104:"OUTER",106:"DOT",112:"NATURAL",113:"JOIN",114:"INNER",115:"LEFT",116:"RIGHT",117:"FULL",118:"SEMI",119:"ANTI",120:"ON",122:"USING",124:"WHERE",125:"GROUP",126:"BY",130:"GROUPING",131:"SETS",132:"ROLLUP",133:"CUBE",134:"HAVING",135:"UNION",136:"EXCEPT",137:"INTERSECT",138:"ORDER",141:"DIRECTION",142:"COLLATE",143:"NOCASE",144:"LIMIT",146:"OFFSET",149:"TD",150:"TH",151:"NUMBER",154:"STAR",165:"JAVASCRIPT",166:"NEW",167:"CAST",169:"CONVERT",171:"CURRENT_TIMESTAMP",174:"OVER",177:"PARTITION",178:"SUM",179:"COUNT",180:"MIN",181:"MAX",182:"AVG",183:"FIRST",184:"LAST",185:"AGGR",186:"ARRAY",188:"TRUE",189:"FALSE",190:"NSTRING",191:"NULL",192:"AT",193:"EXISTS",194:"DOLLAR",195:"COLON",196:"QUESTION",197:"BRAQUESTION",198:"CASE",201:"END",203:"WHEN",204:"THEN",205:"ELSE",206:"LIKE",207:"NOT_LIKE",208:"PLUS",209:"MINUS",210:"SLASH",211:"MODULO",212:"CARET",213:"ARROW",214:"GT",215:"GE",216:"LT",217:"LE",218:"EQ",219:"EQEQ",220:"EQEQEQ",221:"NE",222:"NEEQEQ",223:"NEEQEQEQ",226:"AND",227:"OR",228:"NOT",229:"IN",231:"BETWEEN",232:"NOT_BETWEEN",233:"IS",234:"DOUBLECOLON",235:"SOME",236:"ANY",237:"UPDATE",238:"SET",241:"DELETE",242:"INSERT",244:"VALUES",246:"DEFAULT",249:"DateValue",250:"CREATE",251:"TABLE",257:"ENGINE",258:"AUTO_INCREMENT",259:"CHARSET",261:"TEMPORARY",262:"TEMP",263:"IF",273:"CONSTRAINT",274:"CHECK",275:"PRIMARY",276:"KEY",278:"FOREIGN",279:"REFERENCES",283:"NO",284:"ACTION",287:"ColumnConstraints",288:"ENUM",291:"IDENTITY",292:"DROP",294:"ALTER",295:"RENAME",296:"TO",297:"ADD",298:"MODIFY",299:"ATTACH",300:"DATABASE",301:"DETACH",303:"USE",304:"SHOW",305:"DATABASES",306:"TABLES",307:"COLUMNS",308:"VIEW",309:"HELP",311:"SOURCE",312:"ASSERT",314:"ATLBRA",318:"LCUR",320:"RCUR",322:"RBRA",327:"OFF",328:"COMMIT",329:"TRANSACTION",330:"ROLLBACK",331:"BEGIN",333:"WHILE",334:"CONTINUE",335:"BREAK",336:"PRINT",337:"REQUIRE",339:"DECLARE",342:"TRUNCATE",343:"MERGE",351:"MATCHED",354:"TARGET",355:"OUTPUT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,3],[7,1],[7,1],[12,2],[12,4],[10,1],[16,0],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[35,3],[60,3],[60,1],[62,5],[33,8],[66,4],[66,4],[66,4],[66,3],[74,1],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[76,2],[76,4],[76,3],[76,0],[67,0],[67,2],[67,2],[67,2],[67,2],[67,2],[68,2],[68,3],[68,0],[101,6],[101,7],[101,6],[101,7],[98,1],[98,3],[99,4],[99,5],[99,3],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[105,1],[92,3],[92,1],[100,2],[100,2],[100,1],[100,1],[107,3],[109,1],[109,2],[109,3],[109,2],[109,3],[109,4],[109,5],[109,1],[109,2],[109,3],[109,1],[109,2],[109,3],[108,1],[108,2],[111,1],[111,2],[111,2],[111,3],[111,2],[111,3],[111,2],[111,3],[111,2],[111,2],[111,2],[110,2],[110,2],[110,0],[69,0],[69,2],[70,0],[70,4],[127,1],[127,3],[129,5],[129,4],[129,4],[129,1],[128,0],[128,2],[73,0],[73,2],[73,3],[73,2],[73,2],[71,0],[71,3],[139,1],[139,3],[140,1],[140,2],[140,3],[140,4],[72,0],[72,3],[145,0],[145,2],[77,4],[77,2],[148,0],[148,2],[148,2],[148,4],[147,3],[147,2],[147,3],[147,2],[147,3],[147,2],[147,1],[153,5],[153,3],[153,1],[155,5],[155,3],[155,3],[155,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,3],[121,1],[49,1],[164,2],[164,2],[162,6],[162,8],[162,6],[162,8],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[156,5],[156,6],[156,6],[173,0],[173,4],[173,4],[173,5],[175,3],[176,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[93,4],[93,3],[187,1],[187,3],[89,1],[158,1],[158,1],[152,1],[152,1],[159,1],[95,2],[160,4],[94,2],[94,2],[94,1],[94,1],[161,5],[161,4],[199,2],[199,1],[202,4],[200,2],[200,0],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,5],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,6],[157,6],[157,3],[157,3],[157,2],[157,2],[157,2],[157,3],[157,5],[157,6],[157,5],[157,6],[157,4],[157,5],[157,3],[157,4],[157,3],[157,3],[157,3],[157,3],[230,1],[230,1],[230,4],[224,1],[224,1],[224,1],[224,1],[224,1],[224,1],[225,1],[225,1],[225,1],[47,6],[47,4],[239,1],[239,3],[240,3],[25,5],[25,3],[31,5],[31,5],[31,8],[31,4],[31,7],[243,0],[243,1],[245,3],[245,1],[245,1],[245,5],[245,3],[245,3],[247,1],[247,3],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[123,1],[123,3],[22,8],[22,4],[254,0],[254,1],[255,2],[255,1],[256,1],[256,3],[256,3],[256,3],[260,0],[260,1],[260,1],[252,0],[252,3],[253,3],[253,1],[253,2],[265,1],[265,3],[266,2],[266,2],[266,2],[266,2],[266,2],[267,0],[267,2],[272,4],[268,5],[269,11],[280,0],[280,2],[281,4],[282,4],[270,1],[271,5],[271,5],[277,1],[277,1],[277,3],[277,3],[264,1],[264,3],[285,3],[285,2],[285,1],[168,6],[168,4],[168,1],[168,4],[286,0],[286,1],[289,2],[289,1],[290,2],[290,7],[290,5],[290,1],[290,6],[290,1],[290,2],[290,1],[290,2],[290,1],[29,4],[293,0],[293,2],[18,6],[18,6],[18,6],[18,8],[18,6],[32,5],[19,4],[19,7],[19,6],[19,9],[26,3],[20,4],[20,6],[20,9],[20,6],[302,0],[302,2],[46,3],[46,2],[27,4],[27,5],[27,5],[21,8],[21,9],[28,3],[38,2],[38,4],[38,3],[38,5],[40,2],[40,4],[40,4],[40,6],[37,4],[37,6],[39,4],[39,6],[36,4],[36,6],[23,9],[23,6],[30,4],[48,2],[48,1],[310,1],[50,2],[51,2],[51,2],[51,4],[163,4],[163,2],[163,2],[163,2],[163,2],[163,1],[163,2],[163,2],[316,1],[316,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,3],[313,3],[313,4],[313,2],[315,2],[315,3],[315,1],[319,3],[319,1],[323,3],[323,3],[323,3],[321,3],[321,1],[58,3],[58,5],[58,6],[325,3],[325,2],[326,1],[326,1],[326,3],[324,1],[324,1],[43,2],[44,2],[42,2],[17,4],[17,3],[332,2],[52,3],[53,1],[54,1],[55,3],[56,2],[56,2],[57,2],[338,3],[338,1],[24,2],[340,1],[340,3],[341,3],[341,4],[341,5],[341,6],[41,3],[34,6],[344,1],[344,2],[345,2],[346,2],[347,2],[347,2],[347,1],[347,1],[349,4],[349,6],[352,1],[352,3],[350,5],[350,7],[350,7],[350,9],[350,7],[350,9],[353,3],[353,6],[353,3],[353,6],[348,0],[348,2],[348,5],[348,4],[348,7]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:if(yy.casesensitive)this.$=$$[$0];else this.$=$$[$0].toLowerCase();break;case 2:this.$=doubleq($$[$0].substr(1,$$[$0].length-2));break;case 3:return new yy.Statements({statements:$$[$0-1]});break;case 4:case 5:this.$=$$[$0-2];if($$[$0])$$[$0-2].push($$[$0]);break;case 6:case 7:case 56:case 88:case 113:case 114:case 149:case 164:case 246:case 263:case 323:case 336:case 337:case 341:case 349:case 388:case 389:case 497:case 502:case 522:case 524:case 538:case 539:this.$=[$$[$0]];break;case 8:this.$=$$[$0];$$[$0].explain=true;break;case 9:this.$=$$[$0];$$[$0].explain=true;break;case 10:this.$=$$[$0];if(yy.exists)this.$.exists=yy.exists;delete yy.exists;if(yy.queries)this.$.queries=yy.queries;delete yy.queries;break;case 11:case 63:case 74:case 83:case 144:case 145:case 147:case 155:case 157:case 162:case 170:case 172:case 225:case 266:case 361:case 364:case 376:case 381:case 382:case 416:this.$=undefined;break;case 54:this.$=new yy.WithSelect({withs:$$[$0-1],select:$$[$0]});break;case 55:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 57:this.$={name:$$[$0-4],select:$$[$0-1]};break;case 58:yy.extend(this.$,$$[$0-7]);yy.extend(this.$,$$[$0-6]);yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);this.$=$$[$0-7];break;case 59:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 60:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 61:this.$=new yy.Select({columns:$$[$0],all:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 62:this.$=new yy.Select({columns:$$[$0]});yy,extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 64:this.$={modifier:"VALUE"};break;case 65:this.$={modifier:"ROW"};break;case 66:this.$={modifier:"COLUMN"};break;case 67:this.$={modifier:"MATRIX"};break;case 68:this.$={modifier:"TEXTSTRING"};break;case 69:this.$={modifier:"INDEX"};break;case 70:this.$={modifier:"RECORDSET"};break;case 71:this.$={top:$$[$0]};break;case 72:this.$={top:$$[$0-1]};break;case 73:this.$={top:$$[$0-1],percent:true};break;case 75:case 229:case 383:case 384:this.$=undefined;break;case 76:case 77:case 78:case 79:this.$={into:$$[$0]};break;case 80:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();if(s[0]=="#"){this.$={into:new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){this.$={into:new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x4=="XLSX"||x4=="JSON"){this.$={into:new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}break;case 81:this.$={from:$$[$0]};break;case 82:this.$={from:[$$[$0-1]],joins:$$[$0]};break;case 84:this.$=new yy.Apply({select:$$[$0-2],applymode:"CROSS",as:$$[$0]});break;case 85:this.$=new yy.Apply({select:$$[$0-3],applymode:"CROSS",as:$$[$0]});break;case 86:this.$=new yy.Apply({select:$$[$0-2],applymode:"OUTER",as:$$[$0]});break;case 87:this.$=new yy.Apply({select:$$[$0-3],applymode:"OUTER",as:$$[$0]});break;case 89:case 150:case 324:case 390:case 391:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 90:this.$=$$[$0-2];this.$.as=$$[$0];break;case 91:this.$=$$[$0-3];this.$.as=$$[$0];break;case 92:this.$=$$[$0-1];this.$.as="default";break;case 93:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 94:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 95:case 154:case 186:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 209:case 219:case 220:case 221:case 222:case 223:case 224:case 265:case 312:case 313:case 314:case 315:case 316:case 317:case 377:case 402:case 404:case 471:case 472:case 473:case 474:case 475:case 476:case 480:case 482:case 483:case 492:case 503:case 504:this.$=$$[$0];break;case 96:case 100:case 103:case 106:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 97:case 101:case 104:case 107:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 98:case 99:case 102:case 105:this.$=$$[$0];$$[$0].as="default";break;case 108:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();var r;if(s[0]=="#"){r=new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){r=new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x4=="XLSX"||x4=="JSON"){r=new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else{throw new Error("Unknown string in FROM clause")};this.$=r;break;case 109:this.$=new yy.Table({databaseid:$$[$0-2],tableid:$$[$0]});break;case 110:this.$=new yy.Table({tableid:$$[$0]});break;case 111:case 112:this.$=$$[$0-1];$$[$0-1].push($$[$0]);break;case 115:this.$=new yy.Join($$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 116:this.$={table:$$[$0]};break;case 117:this.$={table:$$[$0-1],as:$$[$0]};break;case 118:this.$={table:$$[$0-2],as:$$[$0]};break;case 119:this.$={param:$$[$0-1],as:$$[$0]};break;case 120:this.$={param:$$[$0-2],as:$$[$0]};break;case 121:this.$={select:$$[$0-3],as:$$[$0]};break;case 122:this.$={select:$$[$0-4],as:$$[$0]};break;case 123:this.$={funcid:$$[$0],as:"default"};break;case 124:this.$={funcid:$$[$0-1],as:$$[$0]};break;case 125:this.$={funcid:$$[$0-2],as:$$[$0]};break;case 126:this.$={variable:$$[$0],as:"default"};break;case 127:this.$={variable:$$[$0-1],as:$$[$0]};break;case 128:this.$={variable:$$[$0-2],as:$$[$0]};break;case 129:this.$={joinmode:$$[$0]};break;case 130:this.$={joinmode:$$[$0-1],natural:true};break;case 131:case 132:this.$="INNER";break;case 133:case 134:this.$="LEFT";break;case 135:case 136:this.$="RIGHT";break;case 137:case 138:this.$="OUTER";break;case 139:this.$="SEMI";break;case 140:this.$="ANTI";break;case 141:this.$="CROSS";break;case 142:this.$={on:$$[$0]};break;case 143:case 534:this.$={using:$$[$0]};break;case 146:this.$={where:new yy.Expression({expression:$$[$0]})};break;case 148:this.$={group:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 151:this.$=new yy.GroupExpression({type:"GROUPING SETS",group:$$[$0-1]});break;case 152:this.$=new yy.GroupExpression({type:"ROLLUP",group:$$[$0-1]});break;case 153:this.$=new yy.GroupExpression({type:"CUBE",group:$$[$0-1]});break;case 156:this.$={having:$$[$0]};break;case 158:this.$={union:$$[$0]};break;case 159:this.$={unionall:$$[$0]};break;case 160:this.$={except:$$[$0]};break;case 161:this.$={intersect:$$[$0]};break;case 163:this.$={order:$$[$0]};break;case 165:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 166:this.$=new yy.Expression({expression:$$[$0],direction:"ASC"});break;case 167:this.$=new yy.Expression({expression:$$[$0-1],direction:$$[$0].toUpperCase()});break;case 168:this.$=new yy.Expression({expression:$$[$0-2],direction:"ASC",nocase:true});break;case 169:this.$=new yy.Expression({expression:$$[$0-3],direction:$$[$0].toUpperCase(),nocase:true});break;case 171:this.$={limit:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 173:this.$={offset:$$[$0]};break;case 174:yy.extend($$[$0-1],$$[$0]);$$[$0-3].push($$[$0-1]);this.$=$$[$0-3];break;case 175:yy.extend($$[$0-1],$$[$0]);this.$=[$$[$0-1]];break;case 176:this.$=undefined;break;case 177:this.$={td:$$[$0]};break;case 178:this.$={th:$$[$0]};break;case 179:this.$={th:$$[$0-2],td:$$[$0]};break;case 180:case 182:case 184:$$[$0-2].as=$$[$0];this.$=$$[$0-2];break;case 181:case 183:case 185:$$[$0-1].as=$$[$0];this.$=$$[$0-1];break;case 187:this.$=new yy.Column({columid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 188:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 189:this.$=new yy.Column({columnid:$$[$0]});break;case 190:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 191:case 192:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 193:this.$=new yy.Column({columnid:$$[$0]});break;case 208:this.$=new yy.Json({value:$$[$0]});break;case 210:if(!yy.queries)yy.queries=[];yy.queries.push($$[$0-1]);$$[$0-1].queriesidx=yy.queries.length;this.$=$$[$0-1];break;case 211:this.$=$$[$0];break;case 212:this.$=new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});break;case 213:this.$=new yy.FuncValue({funcid:$$[$0],newid:true});break;case 214:this.$=$$[$0];yy.extend(this.$,{newid:true});break;case 215:this.$=new yy.Convert({expression:$$[$0-3]});yy.extend(this.$,$$[$0-1]);break;case 216:this.$=new yy.Convert({expression:$$[$0-5],style:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 217:this.$=new yy.Convert({expression:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 218:this.$=new yy.Convert({expression:$$[$0-3],style:$$[$0-1]});yy.extend(this.$,$$[$0-5]);break;case 226:this.$=new yy.AggrValue({aggregatorid:$$[$0-4].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 227:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],distinct:true,over:$$[$0]});break;case 228:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 230:case 231:this.$=new yy.Over;yy.extend(this.$,$$[$0-1]);break;case 232:this.$=new yy.Over;yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 233:this.$={partition:$$[$0]};break;case 234:this.$={order:$$[$0]};break;case 235:this.$="SUM";break;case 236:this.$="COUNT";break;case 237:this.$="MIN";break;case 238:this.$="MAX";break;case 239:this.$="AVG";break;case 240:this.$="FIRST";break;case 241:this.$="LAST";break;case 242:this.$="AGGR";break;case 243:this.$="ARRAY";break;case 244:if(alasql.aggr[$$[$0-3]]){this.$=new yy.AggrValue({aggregatorid:"REDUCE",funcid:$$[$0-3],expression:$$[$0-1].pop()})}else{this.$=new yy.FuncValue({funcid:$$[$0-3],args:$$[$0-1]})};break;case 245:this.$=new yy.FuncValue({funcid:$$[$0-2]});break;case 247:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 248:this.$=new yy.NumValue({value:+$$[$0]});break;case 249:this.$=new yy.LogicValue({value:true});break;case 250:this.$=new yy.LogicValue({value:false});break;case 251:this.$=new yy.StringValue({value:$$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 252:this.$=new yy.StringValue({value:$$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 253:this.$=new yy.NullValue({value:undefined});break;case 254:this.$=new yy.VarValue({variable:$$[$0]});break;case 255:if(!yy.exists)yy.exists=[];this.$=new yy.ExistsValue({value:$$[$0-1],existsidx:yy.exists.length});yy.exists.push($$[$0-1]);break;case 256:case 257:this.$=new yy.ParamValue({param:$$[$0]});break;case 258:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++});break;case 259:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++,array:true});break;case 260:this.$=new yy.CaseValue({expression:$$[$0-3],whens:$$[$0-2],elses:$$[$0-1]});break;case 261:this.$=new yy.CaseValue({whens:$$[$0-2],elses:$$[$0-1]}); +(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.alasql=factory()}})(this,function(){var alasql=function(sql,params,cb,scope){if(typeof importScripts!="function"&&alasql.webworker){var id=alasql.lastid++;alasql.buffer[id]=cb;alasql.webworker.postMessage({id:id,sql:sql,params:params})}else{if(arguments.length==0){return new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]})}else if(arguments.length==1&&typeof sql=="object"&&sql instanceof Array){var select=new yy.Select({columns:[new yy.Column({columnid:"*"})],from:[new yy.ParamValue({param:0})]});select.preparams=[sql];return select}else{if(typeof sql=="string"&&sql[0]=="#"&&typeof document=="object"){sql=document.querySelector(sql).textContent}else if(typeof sql=="object"&&sql instanceof HTMElement){sql=sql.textContent}else if(typeof sql=="function"){sql=sql.toString().slice(14,-3)}return alasql.exec(sql,params,cb,scope)}}};alasql.version="0.0.44";var parser=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,11],$V1=[1,6],$V2=[1,35],$V3=[1,61],$V4=[1,80],$V5=[1,70],$V6=[1,68],$V7=[1,78],$V8=[1,54],$V9=[1,57],$Va=[1,52],$Vb=[1,49],$Vc=[1,56],$Vd=[1,50],$Ve=[1,58],$Vf=[1,51],$Vg=[1,55],$Vh=[1,67],$Vi=[1,62],$Vj=[1,69],$Vk=[1,71],$Vl=[1,72],$Vm=[1,65],$Vn=[1,66],$Vo=[1,64],$Vp=[1,73],$Vq=[1,74],$Vr=[1,75],$Vs=[1,76],$Vt=[1,77],$Vu=[1,53],$Vv=[1,63],$Vw=[1,60],$Vx=[1,82],$Vy=[1,83],$Vz=[8,9,11,201],$VA=[8,9,11,201,205],$VB=[1,138],$VC=[1,139],$VD=[1,103],$VE=[1,114],$VF=[1,111],$VG=[1,110],$VH=[1,128],$VI=[1,124],$VJ=[1,125],$VK=[1,129],$VL=[1,130],$VM=[1,131],$VN=[1,132],$VO=[1,133],$VP=[1,134],$VQ=[1,135],$VR=[1,136],$VS=[1,137],$VT=[1,112],$VU=[1,113],$VV=[1,115],$VW=[1,116],$VX=[1,121],$VY=[1,122],$VZ=[1,117],$V_=[1,118],$V$=[1,119],$V01=[1,120],$V11=[1,123],$V21=[1,109],$V31=[1,108],$V41=[1,107],$V51=[1,127],$V61=[1,140],$V71=[1,151],$V81=[4,5],$V91=[8,9,11,65,97,124,125,135,136,137,138,144,201,205],$Va1=[1,167],$Vb1=[1,175],$Vc1=[1,174],$Vd1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Ve1=[1,206],$Vf1=[1,199],$Vg1=[4,5,64,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vh1=[2,74],$Vi1=[1,220],$Vj1=[4,5,64,75,78,79,88,96,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,208,209,228,314,318],$Vk1=[1,236],$Vl1=[1,232],$Vm1=[1,233],$Vn1=[1,234],$Vo1=[1,235],$Vp1=[1,237],$Vq1=[1,238],$Vr1=[1,239],$Vs1=[1,240],$Vt1=[1,241],$Vu1=[1,242],$Vv1=[1,243],$Vw1=[1,244],$Vx1=[1,245],$Vy1=[1,246],$Vz1=[1,247],$VA1=[1,248],$VB1=[1,249],$VC1=[1,250],$VD1=[1,252],$VE1=[1,253],$VF1=[1,255],$VG1=[1,254],$VH1=[1,256],$VI1=[1,257],$VJ1=[1,258],$VK1=[1,259],$VL1=[2,193],$VM1=[1,263],$VN1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VO1=[2,251],$VP1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VQ1=[1,271],$VR1=[1,281],$VS1=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,320,322,328,330,331,333,334,335,336,337,339,342,343,355],$VT1=[1,297],$VU1=[4,5,8,9,11,45,59,61,63,64,65,78,80,86,91,96,97,102,104,106,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,195,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,244,246,250,257,258,259,263,274,275,276,278,279,287,288,291,292,294,295,296,297,298,299,300,301,303,304,305,309,311,312,320,322,327,328,330,331,333,334,335,336,337,339,342,343,355],$VV1=[1,304],$VW1=[1,305],$VX1=[2,364],$VY1=[1,310],$VZ1=[8,9,11,61,201,205],$V_1=[2,416],$V$1=[1,321],$V02=[8,9,11,65,124,125,135,136,137,138,144,201,205],$V12=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22=[2,110],$V32=[1,349],$V42=[61,80],$V52=[8,9,11,61,65,191,201,205,228,246,258,274,275,278,279,291],$V62=[79,235,236],$V72=[1,414],$V82=[1,420],$V92=[1,421],$Va2=[1,431],$Vb2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,208,209,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vc2=[2,266],$Vd2=[1,438],$Ve2=[201,203,205],$Vf2=[61,322],$Vg2=[61,320,322],$Vh2=[1,445],$Vi2=[61,320],$Vj2=[4,5,96,190],$Vk2=[8,9,11,65,125,135,136,137,138,144,201,205],$Vl2=[8,9,11,65,91,97,124,125,135,136,137,138,144,201,205],$Vm2=[1,512],$Vn2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,201,205],$Vo2=[2,176],$Vp2=[1,514],$Vq2=[1,515],$Vr2=[8,9,11,61,65,91,97,124,125,135,136,137,138,144,149,150,201,205],$Vs2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,206,207,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vt2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vu2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vv2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vw2=[4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,191,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,258,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],$Vx2=[1,537],$Vy2=[61,65],$Vz2=[2,191],$VA2=[1,577],$VB2=[8,9,11,65,135,136,137,138,144,201,205],$VC2=[8,9,11,61,65,124,125,135,136,137,138,144,201,205],$VD2=[1,592],$VE2=[1,593],$VF2=[1,595],$VG2=[1,596],$VH2=[1,597],$VI2=[1,598],$VJ2=[1,599],$VK2=[1,600],$VL2=[1,601],$VM2=[1,602],$VN2=[1,606],$VO2=[1,617],$VP2=[8,9,11,61,124,201,203,205,355],$VQ2=[1,625],$VR2=[1,624],$VS2=[2,229],$VT2=[1,646],$VU2=[2,433],$VV2=[1,667],$VW2=[1,679],$VX2=[8,9,11,61,201,203,205,355],$VY2=[1,682],$VZ2=[8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V_2=[8,9,11,65,135,136,137,144,201,205],$V$2=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205],$V03=[1,696],$V13=[1,698],$V23=[4,5,64,192,194,195,196,197],$V33=[8,9,11,201,203,205,355],$V43=[213,218],$V53=[1,738],$V63=[8,9,11,61,65,201,205],$V73=[1,754],$V83=[8,9,11,65,135,136,137,201,205],$V93=[1,773],$Va3=[1,774],$Vb3=[1,775],$Vc3=[8,9,11,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$Vd3=[1,805],$Ve3=[1,818],$Vf3=[1,819],$Vg3=[1,817],$Vh3=[1,815],$Vi3=[1,821],$Vj3=[1,812],$Vk3=[1,813],$Vl3=[1,814],$Vm3=[1,816],$Vn3=[1,825],$Vo3=[1,830],$Vp3=[1,831],$Vq3=[1,832],$Vr3=[1,833],$Vs3=[78,86,274,275,276,278],$Vt3=[2,376],$Vu3=[1,838],$Vv3=[8,9,11,65,201,205],$Vw3=[1,851],$Vx3=[8,9,11,61,65,134,135,136,137,138,144,201,205],$Vy3=[1,868],$Vz3=[1,867],$VA3=[8,9,11,201,205,246,257,258,259],$VB3=[1,918],$VC3=[8,9,11,61,65,135,136,137,144,201,205],$VD3=[1,935];var parser={trace:function trace(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,SEMICOLON:9,AStatement:10,GO:11,ExplainStatement:12,EXPLAIN:13,QUERY:14,PLAN:15,Statement:16,If:17,AlterTable:18,AttachDatabase:19,CreateDatabase:20,CreateIndex:21,CreateTable:22,CreateView:23,Declare:24,Delete:25,DetachDatabase:26,DropDatabase:27,DropIndex:28,DropTable:29,DropView:30,Insert:31,RenameTable:32,Select:33,Merge:34,WithSelect:35,ShowCreateTable:36,ShowColumns:37,ShowDatabases:38,ShowIndex:39,ShowTables:40,TruncateTable:41,BeginTransaction:42,CommitTransaction:43,RollbackTransaction:44,EndTransaction:45,UseDatabase:46,Update:47,Help:48,JavaScript:49,Source:50,Assert:51,While:52,Continue:53,Break:54,BeginEnd:55,Print:56,Require:57,SetVariable:58,WITH:59,WithTablesList:60,COMMA:61,WithTable:62,AS:63,LPAR:64,RPAR:65,SelectClause:66,IntoClause:67,FromClause:68,WhereClause:69,GroupClause:70,OrderClause:71,LimitClause:72,UnionClause:73,SelectModifier:74,DISTINCT:75,TopClause:76,ResultColumns:77,UNIQUE:78,ALL:79,SELECT:80,VALUE:81,ROW:82,COLUMN:83,MATRIX:84,TEXTSTRING:85,INDEX:86,RECORDSET:87,TOP:88,NumValue:89,PERCENT:90,INTO:91,Table:92,FuncValue:93,ParamValue:94,VarValue:95,STRING:96,FROM:97,FromTablesList:98,FromTable:99,JoinTablesList:100,ApplyClause:101,CROSS:102,APPLY:103,OUTER:104,FromString:105,DOT:106,JoinTable:107,JoinMode:108,JoinTableAs:109,OnClause:110,JoinModeMode:111,NATURAL:112,JOIN:113,INNER:114,LEFT:115,RIGHT:116,FULL:117,SEMI:118,ANTI:119,ON:120,Expression:121,USING:122,ColumnsList:123,WHERE:124,GROUP:125,BY:126,GroupExpressionsList:127,HavingClause:128,GroupExpression:129,GROUPING:130,SETS:131,ROLLUP:132,CUBE:133,HAVING:134,UNION:135,EXCEPT:136,INTERSECT:137,ORDER:138,OrderExpressionsList:139,OrderExpression:140,DIRECTION:141,COLLATE:142,NOCASE:143,LIMIT:144,OffsetClause:145,OFFSET:146,ResultColumn:147,TDTH:148,TD:149,TH:150,NUMBER:151,StringValue:152,Star:153,STAR:154,Column:155,AggrValue:156,Op:157,LogicValue:158,NullValue:159,ExistsValue:160,CaseValue:161,CastClause:162,Json:163,NewClause:164,JAVASCRIPT:165,NEW:166,CAST:167,ColumnType:168,CONVERT:169,PrimitiveValue:170,CURRENT_TIMESTAMP:171,Aggregator:172,OverClause:173,OVER:174,OverPartitionClause:175,OverOrderByClause:176,PARTITION:177,SUM:178,COUNT:179,MIN:180,MAX:181,AVG:182,FIRST:183,LAST:184,AGGR:185,ARRAY:186,ExprList:187,TRUE:188,FALSE:189,NSTRING:190,NULL:191,AT:192,EXISTS:193,DOLLAR:194,COLON:195,QUESTION:196,BRAQUESTION:197,CASE:198,WhensList:199,ElseClause:200,END:201,When:202,WHEN:203,THEN:204,ELSE:205,LIKE:206,NOT_LIKE:207,PLUS:208,MINUS:209,SLASH:210,MODULO:211,CARET:212,ARROW:213,GT:214,GE:215,LT:216,LE:217,EQ:218,EQEQ:219,EQEQEQ:220,NE:221,NEEQEQ:222,NEEQEQEQ:223,CondOp:224,AllSome:225,AND:226,OR:227,NOT:228,IN:229,ColFunc:230,BETWEEN:231,NOT_BETWEEN:232,IS:233,DOUBLECOLON:234,SOME:235,ANY:236,UPDATE:237,SET:238,SetColumnsList:239,SetColumn:240,DELETE:241,INSERT:242,Into:243,VALUES:244,ValuesListsList:245,DEFAULT:246,ValuesList:247,Value:248,DateValue:249,CREATE:250,TABLE:251,IfNotExists:252,CreateTableDefClause:253,CreateTableOptionsClause:254,CreateTableOptions:255,CreateTableOption:256,ENGINE:257,AUTO_INCREMENT:258,CHARSET:259,TemporaryClause:260,TEMPORARY:261,TEMP:262,IF:263,ColumnDefsList:264,ConstraintsList:265,Constraint:266,ConstraintName:267,PrimaryKey:268,ForeignKey:269,UniqueKey:270,IndexKey:271,Check:272,CONSTRAINT:273,CHECK:274,PRIMARY:275,KEY:276,ColsList:277,FOREIGN:278,REFERENCES:279,OnForeignKeyClause:280,OnDeleteClause:281,OnUpdateClause:282,NO:283,ACTION:284,ColumnDef:285,ColumnConstraintsClause:286,ColumnConstraints:287,ENUM:288,ColumnConstraintsList:289,ColumnConstraint:290,IDENTITY:291,DROP:292,IfExists:293,ALTER:294,RENAME:295,TO:296,ADD:297,MODIFY:298,ATTACH:299,DATABASE:300,DETACH:301,AsClause:302,USE:303,SHOW:304,DATABASES:305,TABLES:306,COLUMNS:307,VIEW:308,HELP:309,ExpressionStatement:310,SOURCE:311,ASSERT:312,JsonObject:313,ATLBRA:314,JsonArray:315,JsonValue:316,JsonPrimitiveValue:317,LCUR:318,JsonPropertiesList:319,RCUR:320,JsonElementsList:321,RBRA:322,JsonProperty:323,OnOff:324,SetPropsList:325,SetProp:326,OFF:327,COMMIT:328,TRANSACTION:329,ROLLBACK:330,BEGIN:331,ElseStatement:332,WHILE:333,CONTINUE:334,BREAK:335,PRINT:336,REQUIRE:337,StringValuesList:338,DECLARE:339,DeclaresList:340,DeclareItem:341,TRUNCATE:342,MERGE:343,MergeInto:344,MergeUsing:345,MergeOn:346,MergeMatchedList:347,OutputClause:348,MergeMatched:349,MergeNotMatched:350,MATCHED:351,MergeMatchedAction:352,MergeNotMatchedAction:353,TARGET:354,OUTPUT:355,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",9:"SEMICOLON",11:"GO",13:"EXPLAIN",14:"QUERY",15:"PLAN",45:"EndTransaction",59:"WITH",61:"COMMA",63:"AS",64:"LPAR",65:"RPAR",75:"DISTINCT",78:"UNIQUE",79:"ALL",80:"SELECT",81:"VALUE",82:"ROW",83:"COLUMN",84:"MATRIX",85:"TEXTSTRING",86:"INDEX",87:"RECORDSET",88:"TOP",90:"PERCENT",91:"INTO",96:"STRING",97:"FROM",102:"CROSS",103:"APPLY",104:"OUTER",106:"DOT",112:"NATURAL",113:"JOIN",114:"INNER",115:"LEFT",116:"RIGHT",117:"FULL",118:"SEMI",119:"ANTI",120:"ON",122:"USING",124:"WHERE",125:"GROUP",126:"BY",130:"GROUPING",131:"SETS",132:"ROLLUP",133:"CUBE",134:"HAVING",135:"UNION",136:"EXCEPT",137:"INTERSECT",138:"ORDER",141:"DIRECTION",142:"COLLATE",143:"NOCASE",144:"LIMIT",146:"OFFSET",149:"TD",150:"TH",151:"NUMBER",154:"STAR",165:"JAVASCRIPT",166:"NEW",167:"CAST",169:"CONVERT",171:"CURRENT_TIMESTAMP",174:"OVER",177:"PARTITION",178:"SUM",179:"COUNT",180:"MIN",181:"MAX",182:"AVG",183:"FIRST",184:"LAST",185:"AGGR",186:"ARRAY",188:"TRUE",189:"FALSE",190:"NSTRING",191:"NULL",192:"AT",193:"EXISTS",194:"DOLLAR",195:"COLON",196:"QUESTION",197:"BRAQUESTION",198:"CASE",201:"END",203:"WHEN",204:"THEN",205:"ELSE",206:"LIKE",207:"NOT_LIKE",208:"PLUS",209:"MINUS",210:"SLASH",211:"MODULO",212:"CARET",213:"ARROW",214:"GT",215:"GE",216:"LT",217:"LE",218:"EQ",219:"EQEQ",220:"EQEQEQ",221:"NE",222:"NEEQEQ",223:"NEEQEQEQ",226:"AND",227:"OR",228:"NOT",229:"IN",231:"BETWEEN",232:"NOT_BETWEEN",233:"IS",234:"DOUBLECOLON",235:"SOME",236:"ANY",237:"UPDATE",238:"SET",241:"DELETE",242:"INSERT",244:"VALUES",246:"DEFAULT",249:"DateValue",250:"CREATE",251:"TABLE",257:"ENGINE",258:"AUTO_INCREMENT",259:"CHARSET",261:"TEMPORARY",262:"TEMP",263:"IF",273:"CONSTRAINT",274:"CHECK",275:"PRIMARY",276:"KEY",278:"FOREIGN",279:"REFERENCES",283:"NO",284:"ACTION",287:"ColumnConstraints",288:"ENUM",291:"IDENTITY",292:"DROP",294:"ALTER",295:"RENAME",296:"TO",297:"ADD",298:"MODIFY",299:"ATTACH",300:"DATABASE",301:"DETACH",303:"USE",304:"SHOW",305:"DATABASES",306:"TABLES",307:"COLUMNS",308:"VIEW",309:"HELP",311:"SOURCE",312:"ASSERT",314:"ATLBRA",318:"LCUR",320:"RCUR",322:"RBRA",327:"OFF",328:"COMMIT",329:"TRANSACTION",330:"ROLLBACK",331:"BEGIN",333:"WHILE",334:"CONTINUE",335:"BREAK",336:"PRINT",337:"REQUIRE",339:"DECLARE",342:"TRUNCATE",343:"MERGE",351:"MATCHED",354:"TARGET",355:"OUTPUT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,3],[7,1],[7,1],[12,2],[12,4],[10,1],[16,0],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[35,3],[60,3],[60,1],[62,5],[33,8],[66,4],[66,4],[66,4],[66,3],[74,1],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[74,2],[76,2],[76,4],[76,3],[76,0],[67,0],[67,2],[67,2],[67,2],[67,2],[67,2],[68,2],[68,3],[68,0],[101,6],[101,7],[101,6],[101,7],[98,1],[98,3],[99,4],[99,5],[99,3],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[99,1],[99,2],[99,3],[105,1],[92,3],[92,1],[100,2],[100,2],[100,1],[100,1],[107,3],[109,1],[109,2],[109,3],[109,2],[109,3],[109,4],[109,5],[109,1],[109,2],[109,3],[109,1],[109,2],[109,3],[108,1],[108,2],[111,1],[111,2],[111,2],[111,3],[111,2],[111,3],[111,2],[111,3],[111,2],[111,2],[111,2],[110,2],[110,2],[110,0],[69,0],[69,2],[70,0],[70,4],[127,1],[127,3],[129,5],[129,4],[129,4],[129,1],[128,0],[128,2],[73,0],[73,2],[73,3],[73,2],[73,2],[71,0],[71,3],[139,1],[139,3],[140,1],[140,2],[140,3],[140,4],[72,0],[72,3],[145,0],[145,2],[77,4],[77,2],[148,0],[148,2],[148,2],[148,4],[147,3],[147,2],[147,3],[147,2],[147,3],[147,2],[147,1],[153,5],[153,3],[153,1],[155,5],[155,3],[155,3],[155,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,3],[121,1],[49,1],[164,2],[164,2],[162,6],[162,8],[162,6],[162,8],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[170,1],[156,5],[156,6],[156,6],[173,0],[173,4],[173,4],[173,5],[175,3],[176,3],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[172,1],[93,4],[93,3],[187,1],[187,3],[89,1],[158,1],[158,1],[152,1],[152,1],[159,1],[95,2],[160,4],[94,2],[94,2],[94,1],[94,1],[161,5],[161,4],[199,2],[199,1],[202,4],[200,2],[200,0],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,5],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,3],[157,6],[157,6],[157,3],[157,3],[157,2],[157,2],[157,2],[157,3],[157,5],[157,6],[157,5],[157,6],[157,4],[157,5],[157,3],[157,4],[157,3],[157,3],[157,3],[157,3],[230,1],[230,1],[230,4],[224,1],[224,1],[224,1],[224,1],[224,1],[224,1],[225,1],[225,1],[225,1],[47,6],[47,4],[239,1],[239,3],[240,3],[25,5],[25,3],[31,5],[31,5],[31,8],[31,4],[31,7],[243,0],[243,1],[245,3],[245,1],[245,1],[245,5],[245,3],[245,3],[247,1],[247,3],[248,1],[248,1],[248,1],[248,1],[248,1],[248,1],[123,1],[123,3],[22,8],[22,4],[254,0],[254,1],[255,2],[255,1],[256,1],[256,3],[256,3],[256,3],[260,0],[260,1],[260,1],[252,0],[252,3],[253,3],[253,1],[253,2],[265,1],[265,3],[266,2],[266,2],[266,2],[266,2],[266,2],[267,0],[267,2],[272,4],[268,5],[269,11],[280,0],[280,2],[281,4],[282,4],[270,1],[271,5],[271,5],[277,1],[277,1],[277,3],[277,3],[264,1],[264,3],[285,3],[285,2],[285,1],[168,6],[168,4],[168,1],[168,4],[286,0],[286,1],[289,2],[289,1],[290,2],[290,7],[290,5],[290,1],[290,6],[290,1],[290,2],[290,1],[290,2],[290,1],[29,4],[293,0],[293,2],[18,6],[18,6],[18,6],[18,8],[18,6],[32,5],[19,4],[19,7],[19,6],[19,9],[26,3],[20,4],[20,6],[20,9],[20,6],[302,0],[302,2],[46,3],[46,2],[27,4],[27,5],[27,5],[21,8],[21,9],[28,3],[38,2],[38,4],[38,3],[38,5],[40,2],[40,4],[40,4],[40,6],[37,4],[37,6],[39,4],[39,6],[36,4],[36,6],[23,9],[23,6],[30,4],[48,2],[48,1],[310,1],[50,2],[51,2],[51,2],[51,4],[163,4],[163,2],[163,2],[163,2],[163,2],[163,1],[163,2],[163,2],[316,1],[316,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[317,3],[313,3],[313,4],[313,2],[315,2],[315,3],[315,1],[319,3],[319,1],[323,3],[323,3],[323,3],[321,3],[321,1],[58,3],[58,5],[58,6],[325,3],[325,2],[326,1],[326,1],[326,3],[324,1],[324,1],[43,2],[44,2],[42,2],[17,4],[17,3],[332,2],[52,3],[53,1],[54,1],[55,3],[56,2],[56,2],[57,2],[338,3],[338,1],[24,2],[340,1],[340,3],[341,3],[341,4],[341,5],[341,6],[41,3],[34,6],[344,1],[344,2],[345,2],[346,2],[347,2],[347,2],[347,1],[347,1],[349,4],[349,6],[352,1],[352,3],[350,5],[350,7],[350,7],[350,9],[350,7],[350,9],[353,3],[353,6],[353,3],[353,6],[348,0],[348,2],[348,5],[348,4],[348,7]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:if(yy.casesensitive)this.$=$$[$0];else this.$=$$[$0].toLowerCase();break;case 2:this.$=doubleq($$[$0].substr(1,$$[$0].length-2));break;case 3:return new yy.Statements({statements:$$[$0-1]});break;case 4:case 5:this.$=$$[$0-2];if($$[$0])$$[$0-2].push($$[$0]);break;case 6:case 7:case 56:case 88:case 113:case 114:case 149:case 164:case 246:case 263:case 323:case 336:case 337:case 341:case 349:case 388:case 389:case 497:case 502:case 522:case 524:case 538:case 539:this.$=[$$[$0]];break;case 8:this.$=$$[$0];$$[$0].explain=true;break;case 9:this.$=$$[$0];$$[$0].explain=true;break;case 10:this.$=$$[$0];if(yy.exists)this.$.exists=yy.exists;delete yy.exists;if(yy.queries)this.$.queries=yy.queries;delete yy.queries;break;case 11:case 63:case 74:case 83:case 144:case 145:case 147:case 155:case 157:case 162:case 170:case 172:case 225:case 266:case 361:case 364:case 376:case 381:case 382:case 416:this.$=undefined;break;case 54:this.$=new yy.WithSelect({withs:$$[$0-1],select:$$[$0]});break;case 55:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 57:this.$={name:$$[$0-4],select:$$[$0-1]};break;case 58:yy.extend(this.$,$$[$0-7]);yy.extend(this.$,$$[$0-6]);yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);this.$=$$[$0-7];break;case 59:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 60:this.$=new yy.Select({columns:$$[$0],distinct:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 61:this.$=new yy.Select({columns:$$[$0],all:true});yy,extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-1]);break;case 62:this.$=new yy.Select({columns:$$[$0]});yy,extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 64:this.$={modifier:"VALUE"};break;case 65:this.$={modifier:"ROW"};break;case 66:this.$={modifier:"COLUMN"};break;case 67:this.$={modifier:"MATRIX"};break;case 68:this.$={modifier:"TEXTSTRING"};break;case 69:this.$={modifier:"INDEX"};break;case 70:this.$={modifier:"RECORDSET"};break;case 71:this.$={top:$$[$0]};break;case 72:this.$={top:$$[$0-1]};break;case 73:this.$={top:$$[$0-1],percent:true};break;case 75:case 229:case 383:case 384:this.$=undefined;break;case 76:case 77:case 78:case 79:this.$={into:$$[$0]};break;case 80:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();if(s[0]=="#"){this.$={into:new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){this.$={into:new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}else if(x4=="XLSX"||x4=="JSON"){this.$={into:new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}}break;case 81:this.$={from:$$[$0]};break;case 82:this.$={from:[$$[$0-1]],joins:$$[$0]};break;case 84:this.$=new yy.Apply({select:$$[$0-2],applymode:"CROSS",as:$$[$0]});break;case 85:this.$=new yy.Apply({select:$$[$0-3],applymode:"CROSS",as:$$[$0]});break;case 86:this.$=new yy.Apply({select:$$[$0-2],applymode:"OUTER",as:$$[$0]});break;case 87:this.$=new yy.Apply({select:$$[$0-3],applymode:"OUTER",as:$$[$0]});break;case 89:case 150:case 324:case 390:case 391:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 90:this.$=$$[$0-2];this.$.as=$$[$0];break;case 91:this.$=$$[$0-3];this.$.as=$$[$0];break;case 92:this.$=$$[$0-1];this.$.as="default";break;case 93:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 94:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 95:case 154:case 186:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 209:case 219:case 220:case 221:case 222:case 223:case 224:case 265:case 312:case 313:case 314:case 315:case 316:case 317:case 377:case 402:case 404:case 471:case 472:case 473:case 474:case 475:case 476:case 480:case 482:case 483:case 492:case 503:case 504:this.$=$$[$0];break;case 96:case 100:case 103:case 106:this.$=$$[$0-1];$$[$0-1].as=$$[$0];break;case 97:case 101:case 104:case 107:this.$=$$[$0-2];$$[$0-2].as=$$[$0];break;case 98:case 99:case 102:case 105:this.$=$$[$0];$$[$0].as="default";break;case 108:var s=$$[$0];s=s.substr(1,s.length-2);var x3=s.substr(-3).toUpperCase();var x4=s.substr(-4).toUpperCase();var r;if(s[0]=="#"){r=new yy.FuncValue({funcid:"HTML",args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x3=="XLS"||x3=="CSV"||x3=="TAB"){r=new yy.FuncValue({funcid:x3,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else if(x4=="XLSX"||x4=="JSON"){r=new yy.FuncValue({funcid:x4,args:[new yy.StringValue({value:s}),new yy.Json({value:{headers:true}})]})}else{throw new Error("Unknown string in FROM clause")};this.$=r;break;case 109:this.$=new yy.Table({databaseid:$$[$0-2],tableid:$$[$0]});break;case 110:this.$=new yy.Table({tableid:$$[$0]});break;case 111:case 112:this.$=$$[$0-1];$$[$0-1].push($$[$0]);break;case 115:this.$=new yy.Join($$[$0-2]);yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 116:this.$={table:$$[$0]};break;case 117:this.$={table:$$[$0-1],as:$$[$0]};break;case 118:this.$={table:$$[$0-2],as:$$[$0]};break;case 119:this.$={param:$$[$0-1],as:$$[$0]};break;case 120:this.$={param:$$[$0-2],as:$$[$0]};break;case 121:this.$={select:$$[$0-3],as:$$[$0]};break;case 122:this.$={select:$$[$0-4],as:$$[$0]};break;case 123:this.$={funcid:$$[$0],as:"default"};break;case 124:this.$={funcid:$$[$0-1],as:$$[$0]};break;case 125:this.$={funcid:$$[$0-2],as:$$[$0]};break;case 126:this.$={variable:$$[$0],as:"default"};break;case 127:this.$={variable:$$[$0-1],as:$$[$0]};break;case 128:this.$={variable:$$[$0-2],as:$$[$0]};break;case 129:this.$={joinmode:$$[$0]};break;case 130:this.$={joinmode:$$[$0-1],natural:true};break;case 131:case 132:this.$="INNER";break;case 133:case 134:this.$="LEFT";break;case 135:case 136:this.$="RIGHT";break;case 137:case 138:this.$="OUTER";break;case 139:this.$="SEMI";break;case 140:this.$="ANTI";break;case 141:this.$="CROSS";break;case 142:this.$={on:$$[$0]};break;case 143:case 534:this.$={using:$$[$0]};break;case 146:this.$={where:new yy.Expression({expression:$$[$0]})};break;case 148:this.$={group:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 151:this.$=new yy.GroupExpression({type:"GROUPING SETS",group:$$[$0-1]});break;case 152:this.$=new yy.GroupExpression({type:"ROLLUP",group:$$[$0-1]});break;case 153:this.$=new yy.GroupExpression({type:"CUBE",group:$$[$0-1]});break;case 156:this.$={having:$$[$0]};break;case 158:this.$={union:$$[$0]};break;case 159:this.$={unionall:$$[$0]};break;case 160:this.$={except:$$[$0]};break;case 161:this.$={intersect:$$[$0]};break;case 163:this.$={order:$$[$0]};break;case 165:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 166:this.$=new yy.Expression({expression:$$[$0],direction:"ASC"});break;case 167:this.$=new yy.Expression({expression:$$[$0-1],direction:$$[$0].toUpperCase()});break;case 168:this.$=new yy.Expression({expression:$$[$0-2],direction:"ASC",nocase:true});break;case 169:this.$=new yy.Expression({expression:$$[$0-3],direction:$$[$0].toUpperCase(),nocase:true});break;case 171:this.$={limit:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 173:this.$={offset:$$[$0]};break;case 174:yy.extend($$[$0-1],$$[$0]);$$[$0-3].push($$[$0-1]);this.$=$$[$0-3];break;case 175:yy.extend($$[$0-1],$$[$0]);this.$=[$$[$0-1]];break;case 176:this.$=undefined;break;case 177:this.$={td:$$[$0]};break;case 178:this.$={th:$$[$0]};break;case 179:this.$={th:$$[$0-2],td:$$[$0]};break;case 180:case 182:case 184:$$[$0-2].as=$$[$0];this.$=$$[$0-2];break;case 181:case 183:case 185:$$[$0-1].as=$$[$0];this.$=$$[$0-1];break;case 187:this.$=new yy.Column({columid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 188:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 189:this.$=new yy.Column({columnid:$$[$0]});break;case 190:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2],databaseid:$$[$0-4]});break;case 191:case 192:this.$=new yy.Column({columnid:$$[$0],tableid:$$[$0-2]});break;case 193:this.$=new yy.Column({columnid:$$[$0]});break;case 208:this.$=new yy.Json({value:$$[$0]});break;case 210:if(!yy.queries)yy.queries=[];yy.queries.push($$[$0-1]);$$[$0-1].queriesidx=yy.queries.length;this.$=$$[$0-1];break;case 211:this.$=$$[$0];break;case 212:this.$=new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});break;case 213:this.$=new yy.FuncValue({funcid:$$[$0],newid:true});break;case 214:this.$=$$[$0];yy.extend(this.$,{newid:true});break;case 215:this.$=new yy.Convert({expression:$$[$0-3]});yy.extend(this.$,$$[$0-1]);break;case 216:this.$=new yy.Convert({expression:$$[$0-5],style:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 217:this.$=new yy.Convert({expression:$$[$0-1]});yy.extend(this.$,$$[$0-3]);break;case 218:this.$=new yy.Convert({expression:$$[$0-3],style:$$[$0-1]});yy.extend(this.$,$$[$0-5]);break;case 226:this.$=new yy.AggrValue({aggregatorid:$$[$0-4].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 227:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],distinct:true,over:$$[$0]});break;case 228:this.$=new yy.AggrValue({aggregatorid:$$[$0-5].toUpperCase(),expression:$$[$0-2],over:$$[$0]});break;case 230:case 231:this.$=new yy.Over;yy.extend(this.$,$$[$0-1]);break;case 232:this.$=new yy.Over;yy.extend(this.$,$$[$0-2]);yy.extend(this.$,$$[$0-1]);break;case 233:this.$={partition:$$[$0]};break;case 234:this.$={order:$$[$0]};break;case 235:this.$="SUM";break;case 236:this.$="COUNT";break;case 237:this.$="MIN";break;case 238:this.$="MAX";break;case 239:this.$="AVG";break;case 240:this.$="FIRST";break;case 241:this.$="LAST";break;case 242:this.$="AGGR";break;case 243:this.$="ARRAY";break;case 244:if(alasql.aggr[$$[$0-3]]){this.$=new yy.AggrValue({aggregatorid:"REDUCE",funcid:$$[$0-3],expression:$$[$0-1].pop()})}else{this.$=new yy.FuncValue({funcid:$$[$0-3],args:$$[$0-1]})};break;case 245:this.$=new yy.FuncValue({funcid:$$[$0-2]});break;case 247:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 248:this.$=new yy.NumValue({value:+$$[$0]});break;case 249:this.$=new yy.LogicValue({value:true});break;case 250:this.$=new yy.LogicValue({value:false});break;case 251:this.$=new yy.StringValue({value:$$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 252:this.$=new yy.StringValue({value:$$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 253:this.$=new yy.NullValue({value:undefined});break;case 254:this.$=new yy.VarValue({variable:$$[$0]});break;case 255:if(!yy.exists)yy.exists=[];this.$=new yy.ExistsValue({value:$$[$0-1],existsidx:yy.exists.length});yy.exists.push($$[$0-1]);break;case 256:case 257:this.$=new yy.ParamValue({param:$$[$0]});break;case 258:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++});break;case 259:if(typeof yy.question=="undefined")yy.question=0;this.$=new yy.ParamValue({param:yy.question++,array:true});break;case 260:this.$=new yy.CaseValue({expression:$$[$0-3],whens:$$[$0-2],elses:$$[$0-1]});break;case 261:this.$=new yy.CaseValue({whens:$$[$0-2],elses:$$[$0-1]}); break;case 262:case 536:case 537:this.$=$$[$0-1];this.$.push($$[$0]);break;case 264:this.$={when:$$[$0-2],then:$$[$0]};break;case 267:this.$=new yy.Op({left:$$[$0-2],op:"LIKE",right:$$[$0]});break;case 268:this.$=new yy.Op({left:$$[$0-2],op:"NOT LIKE",right:$$[$0]});break;case 269:this.$=new yy.Op({left:$$[$0-2],op:"+",right:$$[$0]});break;case 270:this.$=new yy.Op({left:$$[$0-2],op:"-",right:$$[$0]});break;case 271:this.$=new yy.Op({left:$$[$0-2],op:"*",right:$$[$0]});break;case 272:this.$=new yy.Op({left:$$[$0-2],op:"/",right:$$[$0]});break;case 273:this.$=new yy.Op({left:$$[$0-2],op:"%",right:$$[$0]});break;case 274:this.$=new yy.Op({left:$$[$0-2],op:"^",right:$$[$0]});break;case 275:case 276:case 278:this.$=new yy.Op({left:$$[$0-2],op:"->",right:$$[$0]});break;case 277:this.$=new yy.Op({left:$$[$0-4],op:"->",right:$$[$0-1]});break;case 279:this.$=new yy.Op({left:$$[$0-2],op:">",right:$$[$0]});break;case 280:this.$=new yy.Op({left:$$[$0-2],op:">=",right:$$[$0]});break;case 281:this.$=new yy.Op({left:$$[$0-2],op:"<",right:$$[$0]});break;case 282:this.$=new yy.Op({left:$$[$0-2],op:"<=",right:$$[$0]});break;case 283:this.$=new yy.Op({left:$$[$0-2],op:"=",right:$$[$0]});break;case 284:this.$=new yy.Op({left:$$[$0-2],op:"==",right:$$[$0]});break;case 285:this.$=new yy.Op({left:$$[$0-2],op:"===",right:$$[$0]});break;case 286:this.$=new yy.Op({left:$$[$0-2],op:"!=",right:$$[$0]});break;case 287:this.$=new yy.Op({left:$$[$0-2],op:"!==",right:$$[$0]});break;case 288:this.$=new yy.Op({left:$$[$0-2],op:"!===",right:$$[$0]});break;case 289:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 290:this.$=new yy.Op({left:$$[$0-5],op:$$[$0-4],allsome:$$[$0-3],right:$$[$0-1]});break;case 291:this.$=new yy.Op({left:$$[$0-2],op:"AND",right:$$[$0]});break;case 292:this.$=new yy.Op({left:$$[$0-2],op:"OR",right:$$[$0]});break;case 293:this.$=new yy.UniOp({op:"NOT",right:$$[$0]});break;case 294:this.$=new yy.UniOp({op:"-",right:$$[$0]});break;case 295:this.$=new yy.UniOp({op:"+",right:$$[$0]});break;case 296:this.$=new yy.UniOp({right:$$[$0-1]});break;case 297:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 298:if(!yy.queries)yy.queries=[];this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1],queriesidx:yy.queries.length});yy.queries.push($$[$0-1]);break;case 299:this.$=new yy.Op({left:$$[$0-4],op:"IN",right:$$[$0-1]});break;case 300:this.$=new yy.Op({left:$$[$0-5],op:"NOT IN",right:$$[$0-1]});break;case 301:this.$=new yy.Op({left:$$[$0-3],op:"IN",right:[]});break;case 302:this.$=new yy.Op({left:$$[$0-4],op:"NOT IN",right:[]});break;case 303:this.$=new yy.Op({left:$$[$0-2],op:"IN",right:$$[$0]});break;case 304:this.$=new yy.Op({left:$$[$0-3],op:"NOT IN",right:$$[$0]});break;case 305:this.$=new yy.Op({left:$$[$0-2],op:"BETWEEN",right:$$[$0]});break;case 306:this.$=new yy.Op({left:$$[$0-2],op:"NOT BETWEEN",right:$$[$0]});break;case 307:this.$=new yy.Op({op:"IS",left:$$[$0-2],right:$$[$0]});break;case 308:this.$=new yy.Convert({expression:$$[$0-2]});yy.extend(this.$,$$[$0]);break;case 309:case 310:this.$=$$[$0];break;case 311:this.$=$$[$0-1];break;case 318:this.$="ALL";break;case 319:this.$="SOME";break;case 320:this.$="ANY";break;case 321:this.$=new yy.Update({table:$$[$0-4],columns:$$[$0-2],where:$$[$0]});break;case 322:this.$=new yy.Update({table:$$[$0-2],columns:$$[$0]});break;case 325:this.$=new yy.SetColumn({columnid:$$[$0-2],expression:$$[$0]});break;case 326:this.$=new yy.Delete({table:$$[$0-2],where:$$[$0]});break;case 327:this.$=new yy.Delete({table:$$[$0]});break;case 328:this.$=new yy.Insert({into:$$[$0-2],values:$$[$0]});break;case 329:this.$=new yy.Insert({into:$$[$0-2],"default":true});break;case 330:this.$=new yy.Insert({into:$$[$0-5],columns:$$[$0-3],values:$$[$0]});break;case 331:this.$=new yy.Insert({into:$$[$0-1],select:$$[$0]});break;case 332:this.$=new yy.Insert({into:$$[$0-4],columns:$$[$0-2],select:$$[$0]});break;case 335:this.$=[$$[$0-1]];break;case 338:this.$=$$[$0-4];$$[$0-4].push($$[$0-1]);break;case 339:case 340:case 342:case 350:this.$=$$[$0-2];$$[$0-2].push($$[$0]);break;case 351:this.$=new yy.CreateTable({table:$$[$0-4]});yy.extend(this.$,$$[$0-5]);yy.extend(this.$,$$[$0-2]);break;case 352:this.$=new yy.CreateTable({table:$$[$0]});break;case 362:case 363:this.$={temporary:true};break;case 365:this.$={ifnotexists:true};break;case 366:this.$={columns:$$[$0-2],constraints:$$[$0]};break;case 367:this.$={columns:$$[$0]};break;case 368:this.$={as:$$[$0]};break;case 369:case 392:this.$=[$$[$0]];break;case 370:case 393:case 496:case 501:case 521:case 525:$$[$0-2].push($$[$0]);this.$=$$[$0-2];break;case 371:case 372:case 373:case 374:case 375:$$[$0].constraintid=$$[$0-1];this.$=$$[$0];break;case 378:this.$={type:"CHECK",expression:$$[$0-1]};break;case 379:this.$={type:"PRIMARY KEY",columns:$$[$0-1]};break;case 380:this.$={type:"FOREIGN KEY",columns:$$[$0-7],fktableid:$$[$0-4],fkcolumns:$$[$0-2]};break;case 394:this.$=new yy.ColumnDef({columnid:$$[$0-2]});yy.extend(this.$,$$[$0-1]);yy.extend(this.$,$$[$0]);break;case 395:this.$=new yy.ColumnDef({columnid:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 396:this.$=new yy.ColumnDef({columnid:$$[$0],dbtypeid:""});break;case 397:this.$={dbtypeid:$$[$0-5],dbsize:+$$[$0-3],dbprecision:+$$[$0-1]};break;case 398:this.$={dbtypeid:$$[$0-3],dbsize:+$$[$0-1]};break;case 399:this.$={dbtypeid:$$[$0]};break;case 400:this.$={dbtypeid:"ENUM",enumvalues:$$[$0-1]};break;case 401:this.$=undefined;break;case 403:yy.extend($$[$0-1],$$[$0]);this.$=$$[$0-1];break;case 405:this.$={primarykey:true};break;case 406:case 407:this.$={foreignkey:{tableid:$$[$0-3],columnid:$$[$0-1]}};break;case 408:this.$={auto_increment:true};break;case 409:this.$={identity:[$$[$0-3],$$[$0-1]]};break;case 410:this.$={identity:[1,1]};break;case 411:this.$={"default":$$[$0]};break;case 412:this.$={"null":true};break;case 413:this.$={notnull:true};break;case 414:this.$=$$[$0];break;case 415:this.$=new yy.DropTable({table:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 417:this.$={ifexists:true};break;case 418:this.$=new yy.AlterTable({table:$$[$0-3],renameto:$$[$0]});break;case 419:this.$=new yy.AlterTable({table:$$[$0-3],addcolumn:$$[$0]});break;case 420:this.$=new yy.AlterTable({table:$$[$0-3],modifycolumn:$$[$0]});break;case 421:this.$=new yy.AlterTable({table:$$[$0-5],renamecolumn:$$[$0-2],to:$$[$0]});break;case 422:this.$=new yy.AlterTable({table:$$[$0-3],dropcolumn:$$[$0]});break;case 423:this.$=new yy.AlterTable({table:$$[$0-2],renameto:$$[$0]});break;case 424:this.$=new yy.AttachDatabase({databaseid:$$[$0],engineid:$$[$0-2].toUpperCase()});break;case 425:this.$=new yy.AttachDatabase({databaseid:$$[$0-3],engineid:$$[$0-5].toUpperCase(),args:$$[$0-1]});break;case 426:this.$=new yy.AttachDatabase({databaseid:$$[$0-2],engineid:$$[$0-4].toUpperCase(),as:$$[$0]});break;case 427:this.$=new yy.AttachDatabase({databaseid:$$[$0-5],engineid:$$[$0-7].toUpperCase(),as:$$[$0],args:$$[$0-3]});break;case 428:this.$=new yy.DetachDatabase({databaseid:$$[$0]});break;case 429:this.$=new yy.CreateDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0]);break;case 430:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),databaseid:$$[$0-1],as:$$[$0]});yy.extend(this.$,$$[$0-2]);break;case 431:this.$=new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(),databaseid:$$[$0-4],args:$$[$0-2],as:$$[$0]});yy.extend(this.$,$$[$0-5]);break;case 432:this.$=new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),as:$$[$0],args:[$$[$0-1]]});yy.extend(this.$,$$[$0-2]);break;case 433:this.$=undefined;break;case 434:case 467:case 485:case 488:case 505:this.$=$$[$0-1];break;case 435:case 436:this.$=new yy.UseDatabase({databaseid:$$[$0]});break;case 437:this.$=new yy.DropDatabase({databaseid:$$[$0]});yy.extend(this.$,$$[$0-1]);break;case 438:case 439:this.$=new yy.DropDatabase({databaseid:$$[$0],engineid:$$[$0-3].toUpperCase()});yy.extend(this.$,$$[$0-1]);break;case 440:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1]});break;case 441:this.$=new yy.CreateIndex({indexid:$$[$0-5],table:$$[$0-3],columns:$$[$0-1],unique:true});break;case 442:this.$=new yy.DropIndex({indexid:$$[$0]});break;case 443:this.$=new yy.ShowDatabases;break;case 444:this.$=new yy.ShowDatabases({like:$$[$0]});break;case 445:this.$=new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase()});break;case 446:this.$=new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase(),like:$$[$0]});break;case 447:this.$=new yy.ShowTables;break;case 448:this.$=new yy.ShowTables({like:$$[$0]});break;case 449:this.$=new yy.ShowTables({databaseid:$$[$0]});break;case 450:this.$=new yy.ShowTables({like:$$[$0],databaseid:$$[$0-2]});break;case 451:this.$=new yy.ShowColumns({table:$$[$0]});break;case 452:this.$=new yy.ShowColumns({table:$$[$0-2],databaseid:$$[$0]});break;case 453:this.$=new yy.ShowIndex({table:$$[$0]});break;case 454:this.$=new yy.ShowIndex({table:$$[$0-2],databaseid:$$[$0]});break;case 455:this.$=new yy.ShowCreateTable({table:$$[$0]});break;case 456:this.$=new yy.ShowCreateTable({table:$$[$0-2],databaseid:$$[$0]});break;case 457:this.$=new yy.CreateTable({table:$$[$0-5],view:true,select:$$[$0],viewcolumns:$$[$0-3]});yy.extend(this.$,$$[$0-6]);break;case 458:this.$=new yy.CreateTable({table:$$[$0-2],view:true,select:$$[$0]});break;case 459:this.$=new yy.DropTable({table:$$[$0],view:true});yy.extend(this.$,$$[$0-1]);break;case 460:this.$=new yy.Help({subject:$$[$0].value.toUpperCase()});break;case 461:this.$=new yy.Help;break;case 462:this.$=new yy.ExpressionStatement({expression:$$[$0]});break;case 463:this.$=new yy.Source({url:$$[$0].value});break;case 464:this.$=new yy.Assert({value:$$[$0]});break;case 465:this.$=new yy.Assert({value:$$[$0].value});break;case 466:this.$=new yy.Assert({value:$$[$0],message:$$[$0-2]});break;case 468:case 479:case 481:this.$=$$[$0].value;break;case 469:case 477:this.$=+$$[$0].value;break;case 470:this.$=!!$$[$0].value;break;case 478:this.$=""+$$[$0].value;break;case 484:this.$=$$[$0-1];break;case 486:case 489:this.$=$$[$0-2];break;case 487:this.$={};break;case 490:this.$=[];break;case 491:yy.extend($$[$0-2],$$[$0]);this.$=$$[$0-2];break;case 493:this.$={};this.$[$$[$0-2].substr(1,$$[$0-2].length-2)]=$$[$0];break;case 494:case 495:this.$={};this.$[$$[$0-2]]=$$[$0];break;case 498:this.$=new yy.SetVariable({variable:$$[$0-1].toLowerCase(),value:$$[$0]});break;case 499:this.$=new yy.SetVariable({variable:$$[$0-2],expression:$$[$0]});break;case 500:this.$=new yy.SetVariable({variable:$$[$0-3],props:$$[$0-2],expression:$$[$0]});break;case 506:this.$=true;break;case 507:this.$=false;break;case 508:this.$=new yy.CommitTransaction;break;case 509:this.$=new yy.RollbackTransaction;break;case 510:this.$=new yy.BeginTransaction;break;case 511:this.$=new yy.If({expression:$$[$0-2],thenstat:$$[$0-1],elsestat:$$[$0]});if($$[$0-1].exists)this.$.exists=$$[$0-1].exists;if($$[$0-1].queries)this.$.queries=$$[$0-1].queries;break;case 512:this.$=new yy.If({expression:$$[$0-1],thenstat:$$[$0]});break;case 513:this.$=$$[$0];break;case 514:this.$=new yy.While({expression:$$[$0-1],loopstat:$$[$0]});if($$[$0].exists)this.$.exists=$$[$0].exists;if($$[$0].queries)this.$.queries=$$[$0].queries;break;case 515:this.$=new yy.Continue;break;case 516:this.$=new yy.Break;break;case 517:this.$=new yy.BeginEnd({statements:$$[$0-1]});break;case 518:case 519:this.$=new yy.Print({statement:$$[$0]});break;case 520:this.$=new yy.Require({paths:$$[$0]});break;case 523:this.$=new yy.Declare({declares:$$[$0]});break;case 526:this.$={variable:$$[$0-1]};yy.extend(this.$,$$[$0]);break;case 527:this.$={variable:$$[$0-2]};yy.extend(this.$,$$[$0]);break;case 528:this.$={variable:$$[$0-3],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 529:this.$={variable:$$[$0-4],expression:$$[$0]};yy.extend(this.$,$$[$0-2]);break;case 530:this.$=new yy.TruncateTable({table:$$[$0]});break;case 531:this.$=new yy.Merge;yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);yy.extend(this.$,$$[$0-2]);yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);break;case 532:case 533:this.$={into:$$[$0]};break;case 535:this.$={on:$$[$0]};break;case 540:this.$={matched:true,action:$$[$0]};break;case 541:this.$={matched:true,expr:$$[$0-2],action:$$[$0]};break;case 542:this.$={"delete":true};break;case 543:this.$={update:$$[$0]};break;case 544:case 545:this.$={matched:false,bytarget:true,action:$$[$0]};break;case 546:case 547:this.$={matched:false,bytarget:true,expr:$$[$0-2],action:$$[$0]};break;case 548:this.$={matched:false,bysource:true,action:$$[$0]};break;case 549:this.$={matched:false,bysource:true,expr:$$[$0-2],action:$$[$0]};break;case 550:this.$={insert:true,values:$$[$0]};break;case 551:this.$={insert:true,values:$$[$0],columns:$$[$0-3]};break;case 552:this.$={insert:true,defaultvalues:true};break;case 553:this.$={insert:true,defaultvalues:true,columns:$$[$0-3]};break;case 555:this.$={output:{columns:$$[$0]}};break;case 556:this.$={output:{columns:$$[$0-3],intovar:$$[$0]}};break;case 557:this.$={output:{columns:$$[$0-2],intotable:$$[$0]}};break;case 558:this.$={output:{columns:$$[$0-5],intotable:$$[$0-3],intocolumns:$$[$0-1]}};break}},table:[o([8,9,11],$V0,{6:1,7:2,10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{1:[3]},{8:[1,81],9:$Vx,11:$Vy},o($Vz,[2,6]),o($Vz,[2,7]),o($VA,[2,10]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:84,14:[1,85],45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,12]),o($VA,[2,13]),o($VA,[2,14]),o($VA,[2,15]),o($VA,[2,16]),o($VA,[2,17]),o($VA,[2,18]),o($VA,[2,19]),o($VA,[2,20]),o($VA,[2,21]),o($VA,[2,22]),o($VA,[2,23]),o($VA,[2,24]),o($VA,[2,25]),o($VA,[2,26]),o($VA,[2,27]),o($VA,[2,28]),o($VA,[2,29]),o($VA,[2,30]),o($VA,[2,31]),o($VA,[2,32]),o($VA,[2,33]),o($VA,[2,34]),o($VA,[2,35]),o($VA,[2,36]),o($VA,[2,37]),o($VA,[2,38]),o($VA,[2,39]),o($VA,[2,40]),o($VA,[2,41]),o($VA,[2,42]),o($VA,[2,43]),o($VA,[2,44]),o($VA,[2,45]),o($VA,[2,46]),o($VA,[2,47]),o($VA,[2,48]),o($VA,[2,49]),o($VA,[2,50]),o($VA,[2,51]),o($VA,[2,52]),o($VA,[2,53]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:86,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{251:[1,141]},{3:142,4:$VB,5:$VC},{3:144,4:$VB,5:$VC,78:[1,146],86:[1,145],251:[1,147],300:[1,143],308:[1,148]},{192:$V71,340:149,341:150},{97:[1,152]},{300:[1,153]},{3:155,4:$VB,5:$VC,86:[1,156],251:[1,157],300:[1,154],308:[1,158]},o($V81,[2,333],{243:159,91:[1,160]}),{251:[1,161]},o($V91,[2,75],{67:162,91:[1,163]}),{3:173,4:$VB,5:$VC,64:$Va1,91:[1,166],92:168,93:170,94:169,95:171,96:$Vb1,99:165,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01,344:164},{3:178,4:$VB,5:$VC,60:176,62:177},{3:182,4:$VB,5:$VC,86:[1,183],250:[1,179],305:[1,181],306:[1,184],307:[1,180]},{251:[1,185]},o([9,11,201],$V0,{10:3,12:4,16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,7:187,13:$V1,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,329:[1,186],330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),{329:[1,188]},{329:[1,189]},{3:191,4:$VB,5:$VC,300:[1,190]},{3:193,4:$VB,5:$VC,92:192},o($VA,[2,461],{152:194,96:$VE,190:$VV}),o($Vd1,[2,212]),{96:$VE,152:195,190:$VV},{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:[1,198],151:$VF,152:201,158:202,159:203,163:196,170:197,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:208,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,515]),o($VA,[2,516]),{3:106,4:$VB,5:$VC,33:209,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:211,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,310:210,313:126,314:$V51,318:$V61},{96:$VE,152:213,190:$VV,338:212},{3:214,4:$VB,5:$VC,192:[1,215]},o($Vg1,$Vh1,{76:219,75:[1,216],78:[1,217],79:[1,218],88:$Vi1}),o($Vj1,[2,63],{81:[1,221],82:[1,222],83:[1,223],84:[1,224],85:[1,225],86:[1,226],87:[1,227]}),{1:[2,3]},o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:228,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:229,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,8]),{15:[1,230]},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:231,224:251,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vd1,[2,194]),o($Vd1,[2,195]),o($Vd1,[2,196]),o($Vd1,[2,197]),o($Vd1,[2,198]),o($Vd1,[2,199]),o($Vd1,[2,200]),o($Vd1,[2,201]),o($Vd1,[2,202]),o($Vd1,[2,203]),o($Vd1,[2,204]),o($Vd1,[2,205]),o($Vd1,[2,206]),o($Vd1,[2,207]),o($Vd1,[2,208]),o($Vd1,[2,209]),{3:106,4:$VB,5:$VC,33:260,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:261,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,211]),{64:[1,262]},o($Vd1,$VL1,{64:$VM1,106:[1,264]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:265,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:266,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:267,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,189]),o([4,5,8,9,11,45,59,61,63,64,65,80,90,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,146,149,150,151,154,165,166,167,169,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,198,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,246,250,257,258,259,263,274,275,278,279,291,292,294,295,299,301,303,304,309,311,312,314,318,320,322,328,330,331,333,334,335,336,337,339,342,343,355],[2,248]),o($VN1,[2,249]),o($VN1,[2,250]),o($VN1,$VO1),o($VN1,[2,252]),o($VN1,[2,253]),{3:268,4:$VB,5:$VC},{3:269,4:$VB,5:$VC},o($VP1,[2,258]),o($VP1,[2,259]),{3:270,4:$VB,5:$VC,64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},{64:[1,277]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:278,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,199:279,202:280,203:$VR1,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,282]},{64:[1,283]},o($VS1,[2,472]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,315:284,316:287,317:289,318:$V61,321:285,322:[1,286]},{3:299,4:$VB,5:$VC,93:300},{64:[2,235]},{64:[2,236]},{64:[2,237]},{64:[2,238]},{64:[2,239]},{64:[2,240]},{64:[2,241]},{64:[2,242]},{64:[2,243]},o($VU1,[2,1]),o($VU1,[2,2]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,319:301,320:[1,302],323:303},{3:193,4:$VB,5:$VC,92:307},{300:[1,308]},o($V81,$VX1,{252:309,263:$VY1}),{300:[1,311]},{3:312,4:$VB,5:$VC},{86:[1,313]},o($V81,$VX1,{252:314,263:$VY1}),o($V81,$VX1,{252:315,263:$VY1}),o($VA,[2,523],{61:[1,316]}),o($VZ1,[2,524]),{3:317,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:318},{3:319,4:$VB,5:$VC},o($V81,$V_1,{293:320,263:$V$1}),{300:[1,322]},{3:323,4:$VB,5:$VC},o($V81,$V_1,{293:324,263:$V$1}),o($V81,$V_1,{293:325,263:$V$1}),{3:193,4:$VB,5:$VC,92:326},o($V81,[2,334]),{3:193,4:$VB,5:$VC,92:327},o($V02,[2,83],{68:328,97:[1,329]}),{3:173,4:$VB,5:$VC,92:330,93:331,94:332,95:333,96:[1,334],192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[1,336],345:335},{122:[2,532]},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:337,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{33:338,66:59,74:79,80:$V4},o($V12,[2,95],{3:339,4:$VB,5:$VC,63:[1,340]}),o($V12,[2,98],{3:341,4:$VB,5:$VC,63:[1,342]}),o($V12,[2,99],{3:343,4:$VB,5:$VC,63:[1,344]}),o($V12,[2,102],{3:345,4:$VB,5:$VC,63:[1,346]}),o($V12,[2,105],{3:347,4:$VB,5:$VC,63:[1,348]}),o([4,5,8,9,11,61,63,65,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],$V22,{64:$VM1,106:$V32}),{3:270,4:$VB,5:$VC},o([4,5,8,9,11,61,63,65,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205],[2,108]),{33:350,61:[1,351],66:59,74:79,80:$V4},o($V42,[2,56]),{63:[1,352]},{251:[1,353]},{97:[1,354]},o($VA,[2,443],{206:[1,355]}),{305:[1,356]},{97:[1,357]},o($VA,[2,447],{97:[1,359],206:[1,358]}),{3:193,4:$VB,5:$VC,92:360},o($VA,[2,510]),{9:$Vx,11:$Vy,201:[1,361]},o($VA,[2,508]),o($VA,[2,509]),{3:362,4:$VB,5:$VC},o($VA,[2,436]),{238:[1,363]},o([8,9,11,63,64,80,97,124,201,205,238,244,246,292,295,296,297,298],$V22,{106:$V32}),o($VA,[2,460]),o($VA,[2,463]),o($VA,[2,464]),o($VA,[2,465]),o($VA,$VO1,{61:[1,364]}),{64:$VQ1,89:273,94:275,96:$VE,151:$VF,152:272,158:274,188:$VT,189:$VU,190:$VV,194:$VZ,195:$V_,196:$V$,197:$V01,313:276,318:$V61},o($V52,[2,219]),o($V52,[2,220]),o($V52,[2,221]),o($V52,[2,222]),o($V52,[2,223]),o($V52,[2,224]),o($V52,[2,225]),{64:$VM1},o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,224:251,10:365,45:$V2,59:$V3,80:$V4,154:$Vk1,165:$V5,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($VA,[2,518]),o($VA,[2,519]),o($VA,[2,462],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,520],{61:[1,366]}),o($VZ1,[2,522]),{120:[1,368],324:367,327:[1,369]},{3:370,4:$VB,5:$VC},o($Vg1,$Vh1,{76:371,88:$Vi1}),o($Vg1,$Vh1,{76:372,88:$Vi1}),o($Vg1,$Vh1,{76:373,88:$Vi1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:374,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,378],89:377,151:$VF},o($Vj1,[2,64]),o($Vj1,[2,65]),o($Vj1,[2,66]),o($Vj1,[2,67]),o($Vj1,[2,68]),o($Vj1,[2,69]),o($Vj1,[2,70]),o($Vz,[2,4]),o($Vz,[2,5]),o($Vz,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:379,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vz,[2,512],{332:380,205:[1,381]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:382,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:383,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:384,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:385,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:386,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:387,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:388,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:389,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:390,4:$VB,5:$VC,64:[1,392],89:391,93:393,151:$VF},o($V62,[2,312],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:394,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,313],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:395,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,314],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:396,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,315],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:397,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),o($V62,[2,316],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:398,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:399,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:400,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V62,[2,317],{156:87,93:88,157:89,155:90,153:91,89:92,158:93,152:94,159:95,94:96,95:97,160:98,161:99,162:100,163:101,164:102,49:104,172:105,3:106,313:126,121:401,4:$VB,5:$VC,64:$VD,96:$VE,151:$VF,154:$VG,165:$V5,166:$VH,167:$VI,169:$VJ,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,314:$V51,318:$V61}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:402,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:403,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{79:[1,405],225:404,235:[1,406],236:[1,407]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:408,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:409,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:298,4:$VB,5:$VC,64:[1,410],93:413,155:412,192:$V72,230:411},{229:[1,415]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:416,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:417,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:418,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:419,288:$V92},{65:[1,422]},{65:[1,423],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,75:[1,425],79:[1,426],89:92,93:88,94:96,95:97,96:$VE,121:424,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,65:[1,428],89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:427,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:430,4:$VB,5:$VC,81:$Va2,154:[1,432]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,293],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,233:$VJ1}),o($Vb2,[2,294],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,295],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($VP1,[2,256]),o($VP1,[2,257]),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,254]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:433,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,468]),o($VS1,[2,469]),o($VS1,[2,470]),o($VS1,[2,471]),o($VS1,[2,473]),{33:434,66:59,74:79,80:$V4},{154:$Vk1,199:435,202:280,203:$VR1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{200:436,201:$Vc2,202:437,203:$VR1,205:$Vd2},o($Ve2,[2,263]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:439,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:440,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:441,288:$V92},o($VS1,[2,474]),{61:[1,443],322:[1,442]},o($VS1,[2,490]),o($Vf2,[2,497]),o($Vg2,[2,475]),o($Vg2,[2,476]),o($Vg2,[2,477]),o($Vg2,[2,478]),o($Vg2,[2,479]),o($Vg2,[2,480]),o($Vg2,[2,481]),o($Vg2,[2,482]),o($Vg2,[2,483]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:444,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,$VL1,{64:$VM1,106:$Vh2}),o($Vd1,[2,213],{64:$VM1}),o($Vd1,[2,214]),{61:[1,447],320:[1,446]},o($VS1,[2,487]),o($Vi2,[2,492]),{195:[1,448]},{195:[1,449]},{195:[1,450]},{292:[1,454],295:[1,451],297:[1,452],298:[1,453]},{3:455,4:$VB,5:$VC},{3:456,4:$VB,5:$VC},{228:[1,457]},o($Vj2,$VX1,{252:458,263:$VY1}),{120:[1,459]},{3:460,4:$VB,5:$VC},{3:193,4:$VB,5:$VC,92:461},{3:193,4:$VB,5:$VC,92:462},{192:$V71,341:463},{4:$V82,63:[1,465],168:464,288:$V92},o($VA,[2,327],{124:[1,466]}),o($VA,[2,428]),{3:467,4:$VB,5:$VC},{193:[1,468]},o($Vj2,$V_1,{293:469,263:$V$1}),o($VA,[2,442]),{3:193,4:$VB,5:$VC,92:470},{3:193,4:$VB,5:$VC,92:471},{33:475,64:[1,474],66:59,74:79,80:$V4,244:[1,472],246:[1,473]},{296:[1,476]},o($Vk2,[2,145],{69:477,124:[1,478]}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,98:479,99:480,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V91,[2,76]),o($V91,[2,77]),o($V91,[2,78]),o($V91,[2,79]),o($V91,[2,80]),{120:[1,482],346:481},{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:483,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{122:[2,533]},{65:[1,484]},o($V12,[2,93]),{3:485,4:$VB,5:$VC},o($V12,[2,96]),{3:486,4:$VB,5:$VC},o($V12,[2,100]),{3:487,4:$VB,5:$VC},o($V12,[2,103]),{3:488,4:$VB,5:$VC},o($V12,[2,106]),{3:489,4:$VB,5:$VC},{3:490,4:$VB,5:$VC},o($VA,[2,54]),{3:178,4:$VB,5:$VC,62:491},{64:[1,492]},{3:193,4:$VB,5:$VC,92:493},{3:193,4:$VB,5:$VC,92:494},{96:$VE,152:495,190:$VV},o($VA,[2,445],{206:[1,496]}),{3:193,4:$VB,5:$VC,92:497},{96:$VE,152:498,190:$VV},{3:499,4:$VB,5:$VC},o($VA,[2,530]),o($VA,[2,517]),o($VA,[2,435]),{3:503,4:$VB,5:$VC,155:502,239:500,240:501},{163:504,192:$Vf1,313:126,314:$V51,318:$V61},o($VA,[2,514]),{96:$VE,152:505,190:$VV},o($VA,[2,498]),o($VA,[2,506]),o($VA,[2,507]),{213:[1,508],218:[1,506],325:507},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:509,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:510,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,77:511,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vl2,[2,62],{61:$Vm2}),o($Vn2,$Vo2,{148:513,149:$Vp2,150:$Vq2}),o($Vr2,[2,186],{224:251,3:517,152:519,4:$VB,5:$VC,63:[1,516],96:$VE,151:[1,518],154:$Vk1,190:$VV,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vg1,[2,71],{90:[1,520]}),{89:521,151:$VF},o($Vz,[2,9]),o($VA,[2,511]),o($VA,$V0,{16:5,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:20,31:21,32:22,33:23,34:24,35:25,36:26,37:27,38:28,39:29,40:30,41:31,42:32,43:33,44:34,46:36,47:37,48:38,49:39,50:40,51:41,52:42,53:43,54:44,55:45,56:46,57:47,58:48,66:59,74:79,10:522,45:$V2,59:$V3,80:$V4,165:$V5,237:$V6,238:$V7,241:$V8,242:$V9,250:$Va,263:$Vb,292:$Vc,294:$Vd,295:$Ve,299:$Vf,301:$Vg,303:$Vh,304:$Vi,309:$Vj,311:$Vk,312:$Vl,328:$Vm,330:$Vn,331:$Vo,333:$Vp,334:$Vq,335:$Vr,336:$Vs,337:$Vt,339:$Vu,342:$Vv,343:$Vw}),o($Vs2,[2,267],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vs2,[2,268],{224:251,154:$Vk1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,269],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vb2,[2,270],{224:251,154:$Vk1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vt2,[2,271],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,272],{224:251,212:$Vr1,213:$Vs1}),o($Vt2,[2,273],{224:251,212:$Vr1,213:$Vs1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,154,165,190,201,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,274],{224:251,213:$Vs1}),o($Vd1,[2,275],{64:$VM1}),o($Vd1,[2,276]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:523,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,278]),o($Vu2,[2,279],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,280],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,281],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,282],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,283],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,284],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,285],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,286],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,287],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),o($Vu2,[2,288],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,228:$VF1,229:$VG1,233:$VJ1}),{64:[1,524]},{64:[2,318]},{64:[2,319]},{64:[2,320]},o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,226,227,231,232,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,291],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,227,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,292],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1}),{3:106,4:$VB,5:$VC,33:525,49:104,64:$VD,65:[1,527],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:526,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,303]),o($Vd1,[2,309]),o($Vd1,[2,310]),{64:[1,528]},{3:298,4:$VB,5:$VC,64:[1,529],93:413,155:412,192:$V72,230:530},o($Vv2,[2,305],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o($Vv2,[2,306],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,228:$VF1,229:$VG1,233:$VJ1}),o([4,5,8,9,11,45,59,61,63,65,80,91,96,97,102,104,112,113,114,115,116,117,118,119,124,125,134,135,136,137,138,141,142,144,149,150,151,165,190,201,203,204,205,214,215,216,217,218,219,220,221,222,223,226,227,228,229,231,232,233,234,237,238,241,242,250,263,292,294,295,299,301,303,304,309,311,312,328,330,331,333,334,335,336,337,339,342,343,355],[2,307],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1}),o($Vd1,[2,308]),o($Vw2,[2,399],{64:[1,531]}),{64:[1,532]},o($Vd1,[2,210]),o($Vd1,[2,296]),{65:[1,533],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:534,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:535,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vx2,65:[1,536]},o($VP1,[2,245]),o($Vy2,[2,246],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,$Vz2,{106:[1,538]}),o($VS1,[2,192]),o($Vd1,[2,188]),{65:[1,539],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,540]},{200:541,201:$Vc2,202:437,203:$VR1,205:$Vd2},{201:[1,542]},o($Ve2,[2,262]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:543,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{154:$Vk1,204:[1,544],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{63:[1,545],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{61:[1,546]},o($VS1,[2,488]),{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:548,317:289,318:$V61,322:[1,547]},{65:[1,549],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:550,4:$VB,5:$VC,81:$Va2},o($VS1,[2,485]),{3:306,4:$VB,5:$VC,96:$VV1,151:$VW1,320:[1,551],323:552},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:553,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:554,317:289,318:$V61},{3:298,4:$VB,5:$VC,64:$VT1,89:290,93:296,94:295,96:$VE,151:$VF,152:291,155:293,158:292,159:294,163:288,188:$VT,189:$VU,190:$VV,191:$VW,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,316:555,317:289,318:$V61},{83:[1,557],296:[1,556]},{83:[1,558]},{83:[1,559]},{83:[1,560]},o($VA,[2,424],{63:[1,562],64:[1,561]}),o($VA,[2,429]),{193:[1,563]},{3:564,4:$VB,5:$VC,96:$VE,152:565,190:$VV},{3:193,4:$VB,5:$VC,92:566},{120:[1,567]},o($VA,[2,352],{64:[1,568]}),{63:[1,570],64:[1,569]},o($VZ1,[2,525]),o($VZ1,[2,526],{218:[1,571]}),{4:$V82,168:572,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:573,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,437]),o($Vj2,[2,417]),{3:574,4:$VB,5:$VC,96:$VE,152:575,190:$VV},o($VA,[2,415]),o($VA,[2,459]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:576,313:126,314:$V51,318:$V61},{244:[1,580]},{3:503,4:$VB,5:$VC,123:581,155:582},o($VA,[2,331]),{3:583,4:$VB,5:$VC},o($VB2,[2,147],{70:584,125:[1,585]}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:586,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V02,[2,81],{61:[1,587]}),o($VC2,[2,88],{100:588,107:589,101:590,108:591,111:594,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),{203:$VN2,347:603,349:604,350:605},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:607,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{120:[2,534]},o($V12,[2,92],{3:608,4:$VB,5:$VC,63:[1,609]}),o($V12,[2,94]),o($V12,[2,97]),o($V12,[2,101]),o($V12,[2,104]),o($V12,[2,107]),o([4,5,8,9,11,61,63,64,65,80,97,102,104,112,113,114,115,116,117,118,119,120,122,124,125,135,136,137,138,144,201,205,238,244,246,292,295,296,297,298],[2,109]),o($V42,[2,55]),{33:610,66:59,74:79,80:$V4},o($VA,[2,455],{97:[1,611]}),o($VA,[2,451],{97:[1,612]}),o($VA,[2,444]),{96:$VE,152:613,190:$VV},o($VA,[2,453],{97:[1,614]}),o($VA,[2,448]),o($VA,[2,449],{206:[1,615]}),o($VA,[2,322],{61:$VO2,124:[1,616]}),o($VP2,[2,323]),{218:[1,618]},o([8,9,11,61,65,102,104,112,113,114,115,116,117,118,119,124,125,135,136,137,138,144,201,205,218],$VL1,{106:$Vh2}),o($VA,[2,466]),o($VZ1,[2,521]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:619,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{213:[1,621],218:[1,620]},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:622},o($Vl2,[2,59],{61:$Vm2}),o($Vl2,[2,60],{61:$Vm2}),o($Vl2,[2,61],{61:$Vm2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:376,147:626,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,[2,175]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:627,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:628,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:629,4:$VB,5:$VC,96:$VE,151:[1,630],152:631,190:$VV},o($Vr2,[2,181]),o($Vr2,[2,183]),o($Vr2,[2,185]),o($Vg1,[2,73]),{65:[1,632]},o($VA,[2,513]),{65:[1,633],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,33:634,49:104,64:$VD,66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:635,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{65:[1,636]},{61:$Vx2,65:[1,637]},o($Vd1,[2,301]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:638,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,33:639,49:104,64:$VD,65:[1,641],66:59,74:79,80:$V4,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:640,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,304]),{151:[1,642]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:643,313:126,314:$V51,318:$V61},o($Vd1,$VS2,{173:645,174:$VT2}),{65:[1,647],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,648],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VP1,[2,244]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:649,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:650,4:$VB,5:$VC,154:[1,651]},o($VS1,[2,467]),o($Vd1,[2,255]),{201:[1,652]},o($Vd1,[2,261]),{154:$Vk1,201:[2,265],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:653,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{4:$V82,168:654,288:$V92},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:655,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VS1,[2,489]),o($Vf2,[2,496]),o($Vg2,[2,484]),o($VS1,$Vz2,{106:[1,656]}),o($VS1,[2,486]),o($Vi2,[2,491]),o($Vi2,[2,493]),o($Vi2,[2,494]),o($Vi2,[2,495]),{3:657,4:$VB,5:$VC},{3:658,4:$VB,5:$VC},{3:660,4:$VB,5:$VC,285:659},{3:660,4:$VB,5:$VC,285:661},{3:662,4:$VB,5:$VC},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:663,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:664,4:$VB,5:$VC},o($Vj2,[2,365]),o($VA,$VU2,{302:665,63:$VV2,64:[1,666]}),o($VA,$VU2,{302:668,63:$VV2}),{64:[1,669]},{3:193,4:$VB,5:$VC,92:670},{3:660,4:$VB,5:$VC,63:[1,673],253:671,264:672,285:674},{3:503,4:$VB,5:$VC,123:675,155:582},{33:676,66:59,74:79,80:$V4},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:677,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VZ1,[2,527],{218:[1,678]}),o($VA,[2,326],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,438]),o($VA,[2,439]),o($VA,[2,328],{61:$VW2}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:680,313:126,314:$V51,318:$V61},o($VX2,[2,336]),o($VX2,[2,337]),o($VA,[2,329]),{61:$VY2,65:[1,681]},o($VZ2,[2,349]),o($VA,[2,423]),o($V_2,[2,162],{71:683,138:[1,684]}),{126:[1,685]},o($Vk2,[2,146],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:173,4:$VB,5:$VC,64:$Va1,92:168,93:170,94:169,95:171,96:$Vb1,99:686,105:172,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},o($V02,[2,82],{108:591,111:594,107:687,101:688,102:$VD2,104:$VE2,112:$VF2,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2}),o($V$2,[2,113]),o($V$2,[2,114]),{3:173,4:$VB,5:$VC,64:[1,692],92:690,93:693,94:691,95:694,109:689,192:$Vc1,194:$VZ,195:$V_,196:$V$,197:$V01},{103:[1,695],113:$V03},{103:[1,697],113:$V13},o($V23,[2,129]),{102:[1,701],104:[1,700],111:699,113:$VG2,114:$VH2,115:$VI2,116:$VJ2,117:$VK2,118:$VL2,119:$VM2},o($V23,[2,131]),{113:[1,702]},{104:[1,704],113:[1,703]},{104:[1,706],113:[1,705]},{104:[1,707]},{113:[1,708]},{113:[1,709]},o($VA,[2,554],{348:710,349:711,350:712,203:$VN2,355:[1,713]}),o($V33,[2,538]),o($V33,[2,539]),{228:[1,715],351:[1,714]},{154:$Vk1,203:[2,535],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V12,[2,90]),{3:716,4:$VB,5:$VC},{65:[1,717]},{3:718,4:$VB,5:$VC},{3:719,4:$VB,5:$VC},o($VA,[2,446]),{3:720,4:$VB,5:$VC},{96:$VE,152:721,190:$VV},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:722,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,155:502,240:723},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:724,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,499],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:725,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:623,4:$VB,5:$VC,64:$VQ2,151:$VR2,326:726},o($V43,[2,502]),o($V43,[2,503]),o($V43,[2,504]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:727,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vn2,$Vo2,{148:728,149:$Vp2,150:$Vq2}),o($Vn2,[2,177],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vn2,[2,178],{224:251,149:[1,729],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vr2,[2,180]),o($Vr2,[2,182]),o($Vr2,[2,184]),o($Vg1,[2,72]),o($Vd1,[2,277]),{65:[1,730]},{61:$Vx2,65:[1,731]},o($Vd1,[2,297]),o($Vd1,[2,299]),{65:[1,732],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{65:[1,733]},{61:$Vx2,65:[1,734]},o($Vd1,[2,302]),{61:[1,735],65:[1,736]},{61:$V53,65:[1,737]},o($Vy2,[2,341],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($Vd1,[2,226]),{64:[1,739]},o($Vd1,$VS2,{173:740,174:$VT2}),o($Vd1,$VS2,{173:741,174:$VT2}),o($Vy2,[2,247],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VS1,[2,190]),o($Vd1,[2,187]),o($Vd1,[2,260]),o($Ve2,[2,264],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{61:[1,743],65:[1,742]},{61:[1,745],65:[1,744],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{3:650,4:$VB,5:$VC},o($VA,[2,418]),{296:[1,746]},o($VA,[2,419]),o($V63,[2,396],{168:747,4:$V82,287:[1,748],288:$V92}),o($VA,[2,420]),o($VA,[2,422]),{61:$Vx2,65:[1,749]},o($VA,[2,426]),o($VA,[2,430]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:429,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,187:750,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:751,4:$VB,5:$VC},o($VA,[2,432]),{3:753,4:$VB,5:$VC,96:$V73,277:752},{64:[1,755]},{65:[1,756]},{61:[1,757],65:[2,367]},{33:758,66:59,74:79,80:$V4},o($Vy2,[2,392]),{61:$VY2,65:[1,759]},o($VA,[2,458]),o($VZ1,[2,528],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:760,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,761],94:763,163:762,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,313:126,314:$V51,318:$V61},{61:$V53,65:[1,764]},{33:766,66:59,74:79,80:$V4,244:[1,765]},{3:503,4:$VB,5:$VC,155:767},o($V83,[2,170],{72:768,144:[1,769]}),{126:[1,770]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:771,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC2,[2,89]),o($V$2,[2,111]),o($V$2,[2,112]),o($V$2,[2,144],{110:777,120:[1,778],122:[1,779]}),o($Vc3,[2,116],{3:780,4:$VB,5:$VC,63:[1,781]}),{3:782,4:$VB,5:$VC,63:[1,783]},{33:784,66:59,74:79,80:$V4},o($Vc3,[2,123],{3:785,4:$VB,5:$VC,63:[1,786]}),o($Vc3,[2,126],{3:787,4:$VB,5:$VC,63:[1,788]}),{64:[1,789]},o($V23,[2,141]),{64:[1,790]},o($V23,[2,137]),o($V23,[2,130]),{113:$V13},{113:$V03},o($V23,[2,132]),o($V23,[2,133]),{113:[1,791]},o($V23,[2,135]),{113:[1,792]},{113:[1,793]},o($V23,[2,139]),o($V23,[2,140]),o($VA,[2,531]),o($V33,[2,536]),o($V33,[2,537]),{3:106,4:$VB,5:$VC,49:104,64:$VD,77:794,89:92,93:88,94:96,95:97,96:$VE,121:376,147:375,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{204:[1,795],226:[1,796]},{351:[1,797]},o($V12,[2,91]),o($V42,[2,57]),o($VA,[2,456]),o($VA,[2,452]),o($VA,[2,454]),o($VA,[2,450]),o($VA,[2,321],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VP2,[2,324]),o($VP2,[2,325],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VA,[2,500],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V43,[2,501]),{65:[1,798],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vn2,[2,174]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:799,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,289]),o($Vd1,[2,290]),o($Vd1,[2,311]),o($Vd1,[2,298]),o($Vd1,[2,300]),{151:[1,800]},o($Vw2,[2,398]),o($Vw2,[2,400]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:801,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{138:$Vd3,175:802,176:803,177:[1,804]},o($Vd1,[2,227]),o($Vd1,[2,228]),o($Vd1,[2,215]),{151:[1,806]},o($Vd1,[2,217]),{151:[1,807]},{3:808,4:$VB,5:$VC},o($V63,[2,401],{286:809,289:810,290:811,272:820,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V63,[2,395]),o($VA,[2,425],{63:[1,822]}),{61:$Vx2,65:[1,823]},o($VA,[2,434]),{61:$Vn3,65:[1,824]},o($Vy2,[2,388]),o($Vy2,[2,389]),{3:753,4:$VB,5:$VC,96:$V73,277:826},o($VA,[2,353],{254:827,255:828,256:829,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($Vs3,$Vt3,{3:660,265:834,285:835,266:836,267:837,4:$VB,5:$VC,273:$Vu3}),{65:[2,368]},{63:[1,839]},o($VZ1,[2,529],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:644,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,247:840,313:126,314:$V51,318:$V61},o($VX2,[2,339]),o($VX2,[2,340]),o($VX2,[2,335]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:841,313:126,314:$V51,318:$V61},o($VA,[2,332]),o($VZ2,[2,350]),o($Vv3,[2,157],{73:842,135:[1,843],136:[1,844],137:[1,845]}),{89:846,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:847,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VB2,[2,155],{128:850,61:$Vw3,134:[1,852]}),o($Vx3,[2,149]),{131:[1,853]},{64:[1,854]},{64:[1,855]},o($Vx3,[2,154],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,115]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:856,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:857,155:582},o($Vc3,[2,117]),{3:858,4:$VB,5:$VC},o($Vc3,[2,119]),{3:859,4:$VB,5:$VC},{65:[1,860]},o($Vc3,[2,124]),{3:861,4:$VB,5:$VC},o($Vc3,[2,127]),{3:862,4:$VB,5:$VC},{33:863,66:59,74:79,80:$V4},{33:864,66:59,74:79,80:$V4},o($V23,[2,134]),o($V23,[2,136]),o($V23,[2,138]),o($VA,[2,555],{61:$Vm2,91:[1,865]}),{237:$Vy3,241:$Vz3,352:866},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:869,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{126:[1,871],204:[1,870],226:[1,872]},o($V43,[2,505]),o($Vn2,[2,179],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,873]},o($Vy2,[2,342],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{65:[1,874],138:$Vd3,176:875},{65:[1,876]},{126:[1,877]},{126:[1,878]},{65:[1,879]},{65:[1,880]},o($VA,[2,421]),o($V63,[2,394]),o($V63,[2,402],{272:820,290:881,191:$Ve3,228:$Vf3,246:$Vg3,258:$Vh3,274:$Vi3,275:$Vj3,278:$Vk3,279:$Vl3,291:$Vm3}),o($V52,[2,404]),{276:[1,882]},{276:[1,883]},{3:884,4:$VB,5:$VC},o($V52,[2,408]),o($V52,[2,410],{64:[1,885]}),{3:207,4:$VB,5:$VC,89:200,93:205,94:204,96:$VE,151:$VF,152:201,158:202,159:203,170:886,171:$Ve1,188:$VT,189:$VU,190:$VV,191:$VW,194:$VZ,195:$V_,196:$V$,197:$V01},o($V52,[2,412]),{191:[1,887]},o($V52,[2,414]),{64:[1,888]},{3:889,4:$VB,5:$VC},o($VA,$VU2,{302:890,63:$VV2}),o($VA,[2,440]),{3:891,4:$VB,5:$VC,96:[1,892]},{61:$Vn3,65:[1,893]},o($VA,[2,351]),o($VA,[2,354],{256:894,246:$Vo3,257:$Vp3,258:$Vq3,259:$Vr3}),o($VA3,[2,356]),o($VA3,[2,357]),{218:[1,895]},{218:[1,896]},{218:[1,897]},{61:[1,898],65:[2,366]},o($Vy2,[2,393]),o($Vy2,[2,369]),{78:[1,906],86:[1,907],268:899,269:900,270:901,271:902,272:903,274:$Vi3,275:[1,904],276:[1,908],278:[1,905]},{3:909,4:$VB,5:$VC},{33:910,66:59,74:79,80:$V4},{61:$V53,65:[1,911]},o($VA,[2,330],{61:$VW2}),o($Vv3,[2,58]),{33:912,66:59,74:79,79:[1,913],80:$V4},{33:914,66:59,74:79,80:$V4},{33:915,66:59,74:79,80:$V4},o($V83,[2,172],{145:916,146:[1,917]}),o($V_2,[2,163],{61:$VB3}),o($VC3,[2,164]),o($VC3,[2,166],{224:251,141:[1,919],142:[1,920],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($VB2,[2,148]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,129:921,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:922,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{64:[1,923]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:924,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:925,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($V$2,[2,142],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),o($V$2,[2,143],{61:$VY2}),o($Vc3,[2,118]),o($Vc3,[2,120]),{3:926,4:$VB,5:$VC,63:[1,927]},o($Vc3,[2,125]),o($Vc3,[2,128]),{65:[1,928]},{65:[1,929]},{3:193,4:$VB,5:$VC,92:931,192:[1,930]},o($V33,[2,540]),o($V33,[2,542]),{238:[1,932]},{154:$Vk1,204:[1,933],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},{242:$VD3,353:934},{311:[1,937],354:[1,936]},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:938,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vw2,[2,397]),o($Vd1,[2,230]),{65:[1,939]},o($Vd1,[2,231]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:940,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,139:941,140:848,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($Vd1,[2,216]),o($Vd1,[2,218]),o($V52,[2,403]),o($V52,[2,405]),{279:[1,942]},{64:[1,943]},{89:944,151:$VF},o($V52,[2,411]),o($V52,[2,413]),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:945,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VA,[2,427]),o($VA,[2,431]),o($Vy2,[2,390]),o($Vy2,[2,391]),o($VA,[2,441]),o($VA3,[2,355]),{3:946,4:$VB,5:$VC},{89:947,151:$VF},{3:948,4:$VB,5:$VC},o($Vs3,$Vt3,{267:837,266:949,273:$Vu3}),o($Vy2,[2,371]),o($Vy2,[2,372]),o($Vy2,[2,373]),o($Vy2,[2,374]),o($Vy2,[2,375]),{276:[1,950]},{276:[1,951]},o($Vy2,[2,385]),{3:952,4:$VB,5:$VC},{3:953,4:$VB,5:$VC},o($Vs3,[2,377]),o($VA,[2,457]),o($VX2,[2,338]),o($Vv3,[2,158]),{33:954,66:59,74:79,80:$V4},o($Vv3,[2,160]),o($Vv3,[2,161]),o($V83,[2,171]),{89:955,151:$VF},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:849,140:956,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},o($VC3,[2,167]),{143:[1,957]},o($Vx3,[2,150]),o($VB2,[2,156],{224:251,154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1}),{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:776,127:958,129:772,130:$V93,132:$Va3,133:$Vb3,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{61:$Vw3,65:[1,959]},{61:$Vw3,65:[1,960]},o($Vc3,[2,121]),{3:961,4:$VB,5:$VC},{3:962,4:$VB,5:$VC,63:[1,963]},{3:964,4:$VB,5:$VC,63:[1,965]},{3:966,4:$VB,5:$VC},o($VA,[2,557],{64:[1,967]}),{3:503,4:$VB,5:$VC,155:502,239:968,240:501},{237:$Vy3,241:$Vz3,352:969},o($V33,[2,544]),{64:[1,971],244:[1,970],246:[1,972]},{204:[1,973],226:[1,974]},{204:[1,975],226:[1,976]},{154:$Vk1,204:[1,977],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($Vd1,[2,232]),o([65,138],[2,233],{61:$Vw3}),{61:$VB3,65:[2,234]},{3:978,4:$VB,5:$VC},{3:979,4:$VB,5:$VC},{61:[1,980]},{65:[1,981],154:$Vk1,206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($VA3,[2,358]),o($VA3,[2,359]),o($VA3,[2,360]),o($Vy2,[2,370]),{64:[1,982]},{64:[1,983]},{64:[1,984]},{64:[1,985]},o($Vv3,[2,159]),o($V83,[2,173]),o($VC3,[2,165]),o($VC3,[2,168],{141:[1,986]}),{61:$Vw3,65:[1,987]},o($Vx3,[2,152]),o($Vx3,[2,153]),o($Vc3,[2,122]),o($V$2,[2,84]),{3:988,4:$VB,5:$VC},o($V$2,[2,86]),{3:989,4:$VB,5:$VC},o($VA,[2,556]),{3:503,4:$VB,5:$VC,123:990,155:582},o($V33,[2,543],{61:$VO2}),o($V33,[2,541]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:991,313:126,314:$V51,318:$V61},{3:503,4:$VB,5:$VC,123:992,155:582},{244:[1,993]},{242:$VD3,353:994},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:995,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:996},{3:106,4:$VB,5:$VC,49:104,64:$VD,89:92,93:88,94:96,95:97,96:$VE,121:997,151:$VF,152:94,153:91,154:$VG,155:90,156:87,157:89,158:93,159:95,160:98,161:99,162:100,163:101,164:102,165:$V5,166:$VH,167:$VI,169:$VJ,172:105,178:$VK,179:$VL,180:$VM,181:$VN,182:$VO,183:$VP,184:$VQ,185:$VR,186:$VS,188:$VT,189:$VU,190:$VV,191:$VW,192:$VX,193:$VY,194:$VZ,195:$V_,196:$V$,197:$V01,198:$V11,208:$V21,209:$V31,228:$V41,313:126,314:$V51,318:$V61},{242:$VD3,353:998},{64:[1,999]},{65:[1,1e3]},{89:1001,151:$VF},o($V52,[2,378]),{3:753,4:$VB,5:$VC,96:$V73,277:1002},{3:753,4:$VB,5:$VC,96:$V73,277:1003},{3:503,4:$VB,5:$VC,123:1004,155:582},{3:503,4:$VB,5:$VC,123:1005,155:582},o($VC3,[2,169]),o($Vx3,[2,151]),o($V$2,[2,85]),o($V$2,[2,87]),{61:$VY2,65:[1,1006]},o($V33,[2,550],{61:$VW2}),{61:$VY2,65:[1,1007]},o($V33,[2,552]),o($V33,[2,545]),{154:$Vk1,204:[1,1008],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,548]),{154:$Vk1,204:[1,1009],206:$Vl1,207:$Vm1,208:$Vn1,209:$Vo1,210:$Vp1,211:$Vq1,212:$Vr1,213:$Vs1,214:$Vt1,215:$Vu1,216:$Vv1,217:$Vw1,218:$Vx1,219:$Vy1,220:$Vz1,221:$VA1,222:$VB1,223:$VC1,224:251,226:$VD1,227:$VE1,228:$VF1,229:$VG1,231:$VH1,232:$VI1,233:$VJ1,234:$VK1},o($V33,[2,546]),{3:1010,4:$VB,5:$VC},o($V52,[2,407]),{65:[1,1011]},{61:$Vn3,65:[1,1012]},{61:$Vn3,65:[1,1013]},{61:$VY2,65:[1,1014]},{61:$VY2,65:[1,1015]},o($VA,[2,558]),{244:[1,1016],246:[1,1017]},{242:$VD3,353:1018},{237:$Vy3,241:$Vz3,352:1019},{65:[1,1020]},o($V52,[2,409]),o($Vy2,[2,379]),{279:[1,1021]},o($Vy2,[2,386]),o($Vy2,[2,387]),{64:$VA2,94:579,163:578,192:$Vf1,194:$VZ,195:$V_,196:$V$,197:$V01,245:1022,313:126,314:$V51,318:$V61},{244:[1,1023]},o($V33,[2,547]),o($V33,[2,549]),o($V52,[2,406]),{3:1024,4:$VB,5:$VC},o($V33,[2,551],{61:$VW2}),o($V33,[2,553]),{64:[1,1025]},{3:753,4:$VB,5:$VC,96:$V73,277:1026},{61:$Vn3,65:[1,1027]},o($Vy2,[2,381],{280:1028,281:1029,120:[1,1030]}),o($Vy2,[2,380]),{120:[1,1032],282:1031},{241:[1,1033]},o($Vy2,[2,382]),{237:[1,1034]},{283:[1,1035]},{283:[1,1036]},{284:[1,1037]},{284:[1,1038]},{120:[2,383]},o($Vy2,[2,384])],defaultActions:{81:[2,3],129:[2,235],130:[2,236],131:[2,237],132:[2,238],133:[2,239],134:[2,240],135:[2,241],136:[2,242],137:[2,243],165:[2,532],337:[2,533],405:[2,318],406:[2,319],407:[2,320],483:[2,534],758:[2,368],1037:[2,383]},parseError:function parseError(str,hash){if(hash.recoverable){this.trace(str) }else{throw new Error(str)}},parse:function parse(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1;var args=lstack.slice.call(arguments,1);var lexer=Object.create(this.lexer);var sharedState={yy:{}};for(var k in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,k)){sharedState.yy[k]=this.yy[k]}}lexer.setInput(input,sharedState.yy);sharedState.yy.lexer=lexer;sharedState.yy.parser=this;if(typeof lexer.yylloc=="undefined"){lexer.yylloc={}}var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;if(typeof sharedState.yy.parseError==="function"){this.parseError=sharedState.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function popStack(n){stack.length=stack.length-2*n;vstack.length=vstack.length-n;lstack.length=lstack.length-n}_token_stack:function lex(){var token;token=lexer.lex()||EOF;if(typeof token!=="number"){token=self.symbols_[token]||token}return token}var symbol,preErrorSymbol,state,action,a,r,yyval={},p,len,newState,expected;while(true){state=stack[stack.length-1];if(this.defaultActions[state]){action=this.defaultActions[state]}else{if(symbol===null||typeof symbol=="undefined"){symbol=lex()}action=table[state]&&table[state][symbol]}if(typeof action==="undefined"||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state]){if(this.terminals_[p]&&p>TERROR){expected.push("'"+this.terminals_[p]+"'")}}if(lexer.showPosition){errStr="Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'"}else{errStr="Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'")}this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}switch(action[0]){case 1:stack.push(symbol);vstack.push(lexer.yytext);lstack.push(lexer.yylloc);stack.push(action[1]);symbol=null;if(!preErrorSymbol){yyleng=lexer.yyleng;yytext=lexer.yytext;yylineno=lexer.yylineno;yyloc=lexer.yylloc;if(recovering>0){recovering--}}else{symbol=preErrorSymbol;preErrorSymbol=null}break;case 2:len=this.productions_[action[1]][1];yyval.$=vstack[vstack.length-len];yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column};if(ranges){yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]}r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args));if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);lstack=lstack.slice(0,-1*len)}stack.push(this.productions_[action[1]][0]);vstack.push(yyval.$);lstack.push(yyval._$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:return true}}return true}};var lexer=function(){var lexer={EOF:1,parseError:function parseError(str,hash){if(this.yy.parser){this.yy.parser.parseError(str,hash)}else{throw new Error(str)}},setInput:function(input,yy){this.yy=yy||this.yy||{};this._input=input;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.offset++;this.match+=ch;this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return ch},unput:function(ch){var len=ch.length;var lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-len);this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(lines.length-1){this.yylineno-=lines.length-1}var r=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len};if(this.options.ranges){this.yylloc.range=[r[0],r[0]+this.yyleng-len]}this.yyleng=this.yytext.length;return this},more:function(){this._more=true;return this},reject:function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length)}return(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput();var c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer){backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){backup.yylloc.range=this.yylloc.range.slice(0)}}lines=match[0].match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno+=lines.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length};this.yytext+=match[0];this.match+=match[0];this.matches=match;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(match[0].length);this.matched+=match[0];token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(token){return token}else if(this._backtrack){for(var k in backup){this[k]=backup[k]}return false}return false},next:function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var token,match,tempMatch,index;if(!this._more){this.yytext="";this.match=""}var rules=this._currentRules();for(var i=0;imatch[0].length)){match=tempMatch;index=i;if(this.options.backtrack_lexer){token=this.test_match(tempMatch,rules[i]);if(token!==false){return token}else if(this._backtrack){match=false;continue}else{return false}}else if(!this.options.flex){break}}}if(match){token=this.test_match(match,rules[index]);if(token!==false){return token}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}},lex:function lex(){var r=this.next();if(r){return r}else{return this.lex()}},begin:function begin(condition){this.conditionStack.push(condition)},popState:function popState(){var n=this.conditionStack.length-1;if(n>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}},_currentRules:function _currentRules(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}},topState:function topState(n){n=this.conditionStack.length-1-Math.abs(n||0);if(n>=0){return this.conditionStack[n]}else{return"INITIAL"}},pushState:function pushState(condition){this.begin(condition)},stateStackSize:function stateStackSize(){return this.conditionStack.length},options:{"case-insensitive":true},performAction:function anonymous(yy,yy_,$avoiding_name_collisions,YY_START){var YYSTATE=YY_START;switch($avoiding_name_collisions){case 0:return 165;break;case 1:return 197;break;case 2:return 314;break;case 3:return 5;break;case 4:return 5;break;case 5:return 190;break;case 6:return 190;break;case 7:return 96;break;case 8:return 96;break;case 9:return;break;case 10:return;break;case 11:break;case 12:return 227;break;case 13:return 226;break;case 14:return"ABSOLUTE";break;case 15:return 284;break;case 16:return 297;break;case 17:return 185;break;case 18:return 79;break;case 19:return 294;break;case 20:return 226;break;case 21:return 119;break;case 22:return 236;break;case 23:return 103;break;case 24:return 186;break;case 25:return 63;break;case 26:return 312;break;case 27:return 141;break;case 28:return 299;break;case 29:return 258;break;case 30:return 258;break;case 31:return 182;break;case 32:return 331;break;case 33:return 231;break;case 34:return 335;break;case 35:return 232;break;case 36:return 207;break;case 37:return 126;break;case 38:return 198;break;case 39:return 167;break;case 40:return 259;break;case 41:return 274;break;case 42:return"CLOSE";break;case 43:return 142;break;case 44:return"COLUMN";break;case 45:return"COLUMNS";break;case 46:return"COMMIT";break;case 47:return"CONSTRAINT";break;case 48:return"CONTINUE";break;case 49:return"CONVERT";break;case 50:return"COUNT";break;case 51:return 250;break;case 52:return"CROSS";break;case 53:return 133;break;case 54:return"CURRENT_TIMESTAMP";break;case 55:return"CURSOR";break;case 56:return 300;break;case 57:return 305;break;case 58:return 339;break;case 59:return 246;break;case 60:return 241;break;case 61:return"DELETED";break;case 62:return 141;break;case 63:return 301;break;case 64:return 75;break;case 65:return 292;break;case 66:return 201;break;case 67:return 257;break;case 68:return 288;break;case 69:return 205;break;case 70:return 136;break;case 71:return 193;break;case 72:return 13;break;case 73:return 189;break;case 74:return"FETCH";break;case 75:return 183;break;case 76:return 278;break;case 77:return 97;break;case 78:return 11;break;case 79:return 125;break;case 80:return 130;break;case 81:return 134;break;case 82:return 309;break;case 83:return 263;break;case 84:return 291;break;case 85:return 233;break;case 86:return 229;break;case 87:return 86;break;case 88:return 114;break;case 89:return 242;break;case 90:return"INSERTED";break;case 91:return 137;break;case 92:return 91;break;case 93:return 113;break;case 94:return 276;break;case 95:return 184;break;case 96:return 115;break;case 97:return 206;break;case 98:return 144;break;case 99:return 311;break;case 100:return"MATCHED";break;case 101:return 84;break;case 102:return"MAX";break;case 103:return"MERGE";break;case 104:return"MIN";break;case 105:return"EXCEPT";break;case 106:return"MODIFY";break;case 107:return 112;break;case 108:return"NEXT";break;case 109:return 166;break;case 110:return 143;break;case 111:return 283;break;case 112:return 228;break;case 113:return 191;break;case 114:return 327;break;case 115:return 120;break;case 116:return 146;break;case 117:return"OPEN";break;case 118:return 227;break;case 119:return 138;break;case 120:return 104;break;case 121:return 174;break;case 122:return 177;break;case 123:return 90;break;case 124:return 15;break;case 125:return 275;break;case 126:return 336;break;case 127:return"PRIOR";break;case 128:return 14;break;case 129:return 87;break;case 130:return"REDUCE";break;case 131:return 279;break;case 132:return"RELATIVE";break;case 133:return 295;break;case 134:return 337;break;case 135:return"RESTORE";break;case 136:return 116;break;case 137:return 330;break;case 138:return 132;break;case 139:return 82;break;case 140:return 300;break;case 141:return 305;break;case 142:return 80;break;case 143:return 118;break;case 144:return 238;break;case 145:return 131;break;case 146:return 304;break;case 147:return 235;break;case 148:return"STORE";break;case 149:return"SUM";break;case 150:return 251;break;case 151:return 306;break;case 152:return 354;break;case 153:return 149;break;case 154:return 85;break;case 155:return 150;break;case 156:return 204;break;case 157:return 296;break;case 158:return 88;break;case 159:return"TRAN";break;case 160:return 329;break;case 161:return 188;break;case 162:return 342;break;case 163:return 135;break;case 164:return 78;break;case 165:return 237;break;case 166:return 303;break;case 167:return 122;break;case 168:return 81;break;case 169:return 244;break;case 170:return 308;break;case 171:return 203;break;case 172:return 124;break;case 173:return 333;break;case 174:return 59;break;case 175:return 329;break;case 176:return 151;break;case 177:return 151;break;case 178:return 213;break;case 179:return 208;break;case 180:return 209;break;case 181:return 154;break;case 182:return 210;break;case 183:return 211;break;case 184:return 223;break;case 185:return 220;break;case 186:return 222;break;case 187:return 219;break;case 188:return 215;break;case 189:return 214;break;case 190:return 217;break;case 191:return 221;break;case 192:return 216;break;case 193:return 218;break;case 194:return 221;break;case 195:return 64;break;case 196:return 65;break;case 197:return 192;break;case 198:return 318;break;case 199:return 320;break;case 200:return 322;break;case 201:return 106;break;case 202:return 61;break;case 203:return 234;break;case 204:return 195;break;case 205:return 9;break;case 206:return 194;break;case 207:return 196;break;case 208:return 212;break;case 209:return 4;break;case 210:return 8;break;case 211:return"INVALID";break}},rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:\/\*(.*?)\*\/)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AGGR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTOINCREMENT\b)/i,/^(?:AUTO_INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHARSET\b)/i,/^(?:CHECK\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE\b)/i,/^(?:DATABASES\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:END\b)/i,/^(?:ENGINE\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:GO\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:HELP\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INNER\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:SOURCE\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX\b)/i,/^(?:MERGE\b)/i,/^(?:MIN\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:RELATIVE\b)/i,/^(?:RENAME\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:SCHEMA\b)/i,/^(?:SCHEMAS\b)/i,/^(?:SELECT\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TD\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:TH\b)/i,/^(?:THEN\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:\^)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],inclusive:true}}};return lexer}();parser.lexer=lexer;function Parser(){this.yy={}}Parser.prototype=parser;parser.Parser=Parser;return new Parser}();if(typeof require!=="undefined"&&typeof exports!=="undefined"){exports.parser=parser;exports.Parser=parser.Parser;exports.parse=function(){return parser.parse.apply(parser,arguments)};exports.main=function commonjsMain(args){if(!args[1]){console.log("Usage: "+args[0]+" FILE");process.exit(1)}var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)};if(typeof module!=="undefined"&&require.main===module){exports.main(process.argv.slice(1))}}alasql.prettyflag=false;alasql.pretty=function(sql,flag){var pf=alasql.prettyflag;alasql.prettyflag=!flag;var s=alasql.parse(sql).toString();alasql.prettyflag=pf;return s};function K(s){if(alasql.prettyflag){return''+s.toUpperCase()+""}else{return s}}function P(s){if(alasql.prettyflag){return''+s+""}else{return s}}function L(s){if(alasql.prettyflag){return''+s+""}else{return s}}function N(s){if(alasql.prettyflag){return''+s+""}else{return s}}function S(s){if(alasql.prettyflag){return''+s+""}else{return s}}function NL(){if(alasql.prettyflag){return"
    "}else{return" "}}function ID(){if(alasql.prettyflag){return"     "}else{return""}}var utils=alasql.utils={};function returnTrue(){return true}function returnUndefined(){}var escapeq=utils.escapeq=function(s){return s.replace(/\'/g,"\\'")};var escapeqq=utils.undoubleq=function(s){return s.replace(/(\')/g,"''")};var doubleq=utils.doubleq=function(s){return s.replace(/(\'\')/g,"\\'")};var doubleqq=utils.doubleqq=function(s){return s.replace(/\'/g,"'")};var cutbom=function(s){if(s[0]==String.fromCharCode(65279))s=s.substr(1);return s};var loadFile=utils.loadFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(!path){var buff="";process.stdin.setEncoding("utf8");process.stdin.on("readable",function(){var chunk=process.stdin.read();if(chunk!==null){buff+=chunk.toString()}});process.stdin.on("end",function(){success(cutbom(buff))})}else{if(asy){fs.readFile(path,function(err,data){if(err){throw err}success(cutbom(data.toString()))})}else{var data=fs.readFileSync(path);success(cutbom(data.toString()))}}}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.file(function(file){var fileReader=new FileReader;fileReader.onloadend=function(e){success(cutbom(this.result))};fileReader.readAsText(file)})})})}else{if(typeof path=="string"){if(path.substr(0,1)=="#"&&typeof document!="undefined"){var data=document.querySelector(path).textContent;success(data)}else{var xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){if(xhr.readyState===XMLHttpRequest.DONE){if(xhr.status===200){if(success)success(cutbom(xhr.responseText))}else{if(error)error(xhr)}}};xhr.open("GET",path,asy);xhr.send()}}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(cutbom(data))};reader.readAsText(files[0])}}};var loadBinaryFile=utils.loadBinaryFile=function(path,asy,success,error){if(typeof exports=="object"){var fs=require("fs");if(asy){fs.readFile(path,function(err,data){if(err){throw err}var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))})}else{var data=fs.readFileSync(path);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))}}else{if(typeof path=="string"){var xhr=new XMLHttpRequest;xhr.open("GET",path,asy);xhr.responseType="arraybuffer";xhr.onload=function(){var data=new Uint8Array(xhr.response);var arr=new Array;for(var i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);success(arr.join(""))};xhr.send()}else if(path instanceof Event){var files=path.target.files;var reader=new FileReader;var name=files[0].name;reader.onload=function(e){var data=e.target.result;success(data)};reader.readAsBinaryString(files[0])}}};var removeFile=utils.removeFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.remove(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){fileEntry.remove(cb);if(cb)cb()},function(){if(cb)cb()})})}else{throw new Error("You can remove files only in Node.js and Apache Cordova")}};var deleteFile=utils.deleteFile=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.unlink(path,cb)}};var fileExists=utils.fileExists=function(path,cb){if(typeof exports=="object"){var fs=require("fs");fs.exists(path,cb)}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:false},function(fileEntry){cb(true)},function(){cb(false)})})}else{throw new Error("You can use exists() only in Node.js or Apach Cordova")}};var saveFile=utils.saveFile=function(path,data,cb){if(!path){alasql.options.stdout=true;console.log(data);if(cb)cb()}else{if(typeof exports=="object"){var fs=require("fs");var data=fs.writeFileSync(path,data);if(cb)cb()}else if(typeof cordova=="object"){window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){fileSystem.root.getFile(path,{create:true},function(fileEntry){fileEntry.createWriter(function(fileWriter){fileWriter.onwriteend=function(){if(cb)cb()};fileWriter.write(data)})})})}else{var blob=new Blob([data],{type:"text/plain;charset=utf-8"});saveAs(blob,path);if(cb)cb()}}};var hash=utils.hash=function hash(str){var h=0;if(str.length==0)return h;for(var i=0;i=26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr;if(i>26){i=(i/26|0)-1;addr=String.fromCharCode(65+i%26)+addr}}return addr};var xlscn=utils.xlscn=function(s){var n=s.charCodeAt(0)-65;if(s.length>1){n=(n+1)*26+s.charCodeAt(1)-65;if(s.length>2){n=(n+1)*26+s.charCodeAt(2)-65}}return n};var domEmptyChildren=utils.domEmptyChildren=function(container){var len=container.childNodes.length;while(len--){container.removeChild(container.lastChild)}};alasql.utils.uncomment=function uncomment(str){str=("__"+str+"__").split("");var quote=false,quoteSign,blockComment=false,lineComment=false;for(var i=0,l=str.length;ialasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement}var res=alasql.res=statement(params,cb,scope);return res}else{alasql.precompile(ast.statements[0],alasql.useid,params);var res=alasql.res=ast.statements[0].execute(databaseid,params,cb,scope);return res}}else{if(cb){alasql.adrun(databaseid,ast,params,cb,scope)}else{return alasql.drun(databaseid,ast,params,cb,scope)}}};alasql.drun=function(databaseid,ast,params,cb,scope){var useid=alasql.useid;if(useid!=databaseid)alasql.use(databaseid);var res=[];for(var i=0,ilen=ast.statements.length;i=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,p))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]];if(this.group){allgroup=decartes(this.group,query) -}var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0] -}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

    "+alasql.pretty(sql)+"
    "}if(res instanceof Array){if(res.length==0){s+="

    [ ]

    "}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

    "}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
    #";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
    ';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
    "}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
    "}else{s+="

    "+JSONtoString(res)+"

    "}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+sql+"

    ");alasql.write('

    '+err+"

    ")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+alasql.pretty(sql,false)+"

    ");alasql.write('

    '+err+"

    ")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file +}};var Database=alasql.Database=function(databaseid){var self=this;if(self===alasql){if(databaseid){self=alasql.databases[databaseid];if(!self){throw new Error('Database "'+databaseid+'" not found')}}else{self=alasql.databases.alasql}}if(!databaseid){databaseid="db"+alasql.databasenum++}self.databaseid=databaseid;alasql.databases[databaseid]=self;self.tables={};self.views={};self.indices={};self.resetSqlCache();self.dbversion=0;return self};Database.prototype.resetSqlCache=function(){this.sqlCache={};this.sqlCacheSize=0};Database.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Database.prototype.transaction=function(cb){var tx=new alasql.Transaction(this.databaseid);var res=cb(tx);return res};var Transaction=alasql.Transaction=function(databaseid){this.transactionid=Date.now();this.databaseid=databaseid;this.commited=false;this.dbversion=alasql.databases[databaseid].dbversion;this.bank=JSON.stringify(alasql.databases[databaseid]);return this};Transaction.prototype.commit=function(){this.commited=true;alasql.databases[this.databaseid].dbversion=Date.now();delete this.bank};Transaction.prototype.rollback=function(){if(!this.commited){alasql.databases[this.databaseid]=JSON.parse(this.bank);delete this.bank}else{throw new Error("Transaction already commited")}};Transaction.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Transaction.prototype.executeSQL=Transaction.prototype.exec;var Table=alasql.Table=function(params){this.columns=[];this.xcolumns={};this.data=[];this.inddefs={};this.indices={};this.uniqs={};this.uniqdefs={};extend(this,params)};Table.prototype.indexColumns=function(){var self=this;self.xcolumns={};self.columns.forEach(function(col){self.xcolumns[col.columnid]=col})};var View=alasql.View=function(params){this.columns=[];this.xcolumns={};this.query=[];extend(this,params)};var Query=alasql.Query=function(params){this.alasql=alasql;this.columns=[];this.xcolumns={};this.selectGroup=[];this.groupColumns={};extend(this,params)};var Recordset=alasql.Recordset=function(params){extend(this,params)};var yy=parser.yy={};yy.extend=extend;yy.casesensitive=alasql.options.casesensitive;var Base=yy.Base=function(params){return yy.extend(this,params)};Base.prototype.toString=function(){};Base.prototype.toType=function(){};Base.prototype.toJavaScript=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};yy.Statements=function(params){return yy.extend(this,params)};yy.Statements.prototype.toString=function(){return this.statements.map(function(st){return st.toString()}).join(";"+NL())};yy.Statements.prototype.compile=function(db){var statements=this.statements.map(function(st){return st.compile(db)});if(statements.length==1){return statements[0]}else{return function(params,cb){var res=statements.map(function(st){return st(params)});if(cb)cb(res);return res}}};function queryfn(query,oldscope,cb,A,B){var ms;query.sourceslen=query.sources.length;var slen=query.sourceslen;query.query=query;query.A=A;query.B=B;query.cb=cb;query.oldscope=oldscope;if(query.queriesfn){query.sourceslen+=query.queriesfn.length;slen+=query.queriesfn.length;query.queriesdata=[];query.queriesfn.forEach(function(q,idx){q.query.params=query.params;if(false){queryfn(q.query,query.oldscope,queryfn2,-idx-1,query)}else{queryfn2([],-idx-1,query)}})}var scope;if(!oldscope)scope={};else scope=cloneDeep(oldscope);query.scope=scope;var result;query.sources.forEach(function(source,idx){source.query=query;var rs=source.datafn(query,query.params,queryfn2,idx,alasql);if(typeof rs!=undefined){if((query.intofn||query.intoallfn)&&rs instanceof Array)rs=rs.length;result=rs}source.queriesdata=query.queriesdata});if(slen==0)result=queryfn3(query);return result}function queryfn2(data,idx,query){if(idx>=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+context+"))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]]; +if(this.group){allgroup=decartes(this.group,query)}var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments) +}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

    "+alasql.pretty(sql)+"
    "}if(res instanceof Array){if(res.length==0){s+="

    [ ]

    "}else if(typeof res[0]!="object"||res[0]instanceof Array){for(var i=0,ilen=res.length;i"+loghtml(res[i])+"

    "}}else{s+=loghtml(res)}}else{s+=loghtml(res)}el.innerHTML+=s}};alasql.clear=function(){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.clear){console.clear()}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML=""}};alasql.write=function(s){var target=alasql.options.logtarget;if(typeof exports=="object"){target="console"}if(target=="console"||typeof exports=="object"){if(console.log){console.log(s)}else{}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}el.innerHTML+=s}};function loghtml(res){var s="";if(typeof res=="undefined"){s+="undefined"}else if(res instanceof Array){s+="";s+="";var cols=[];for(colid in res[0]){cols.push(colid)}s+="
    #";cols.forEach(function(colid){s+=""+colid});for(var i=0,ilen=res.length;i"+(i+1);cols.forEach(function(colid){s+=" ";if(+res[i][colid]==+res[i][colid]){s+='
    ';if(typeof res[i][colid]=="undefined")s+="NULL";else s+=res[i][colid];s+="
    "}else{if(typeof res[i][colid]=="undefined"){s+="NULL"}else if(typeof res[i][colid]=="string"){s+=res[i][colid]}else s+=JSONtoString(res[i][colid])}})}s+="
    "}else{s+="

    "+JSONtoString(res)+"

    "}return s}function scrollTo(element,to,duration){if(duration<=0)return;var difference=to-element.scrollTop;var perTick=difference/duration*10;setTimeout(function(){if(element.scrollTop==to)return;element.scrollTop=element.scrollTop+perTick;scrollTo(element,to,duration-10)},10)}alasql.prompt=function(el,useidel,firstsql){if(typeof exports=="object"){throw new Error("The functionality of prompt is not realized for Node.js")}var prompti=0;if(typeof el=="string")el=document.getElementById(el);if(typeof useidel=="string")useidel=document.getElementById(useidel);useidel.textContent=alasql.useid;if(firstsql){alasql.prompthistory.push(firstsql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(firstsql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+sql+"

    ");alasql.write('

    '+err+"

    ")}}var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500);el.onkeydown=function(event){if(event.which==13){var sql=el.value;var olduseid=alasql.useid;el.value="";alasql.prompthistory.push(sql);prompti=alasql.prompthistory.length;try{var tm=Date.now();alasql.log(sql);alasql.write('

    '+(Date.now()-tm)+" ms

    ")}catch(err){alasql.write("

    "+olduseid+"> "+alasql.pretty(sql,false)+"

    ");alasql.write('

    '+err+"

    ")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 7cdd281461..a3de06e017 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -19,6 +19,7 @@ var shell = require('gulp-shell'); gulp.task('js-merge-worker', function () { return gulp.src([ + './src/05copyright.js', './src/99worker-start.js', './src/99worker.js', './src/99worker-finish.js', @@ -31,6 +32,7 @@ gulp.task('js-merge-worker', function () { gulp.task('js-merge', function () { return gulp.src([ + './src/05copyright.js', './src/10start.js', './src/alasqlparser.js', './src/12pretty.js', diff --git a/package.json b/package.json index 6287fd13c6..8b1a6aaf5f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "alasql", "description": "Alasql - JavaScript SQL database and data manipulation library", - "version": "0.0.43", + "version": "0.0.44", "author": "Andrey Gershun ", "directories": { "example": "examples", @@ -20,7 +20,7 @@ }, "bin" : { "alacon" : "./bin/alacon.js", - "alaserver" : "./bin/alaserver.js", + "alaserver" : "./bin/alaserver.js" }, "homepage": "https://github.com/agershun/alasql", "main": "dist/alasql.js", diff --git a/src/05copyright.js b/src/05copyright.js new file mode 100644 index 0000000000..7ff5ea996a --- /dev/null +++ b/src/05copyright.js @@ -0,0 +1,31 @@ +// +// alasql.js +// AlaSQL - JavaScript SQL database +// Date: 13.04.2015 +// Version: 0.0.44 +// (ñ) 2014-2015, Andrey Gershun +// + +/* +The MIT License (MIT) + +Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ diff --git a/src/10start.js b/src/10start.js index f99969b3aa..2ca493f5e6 100644 --- a/src/10start.js +++ b/src/10start.js @@ -1,34 +1,3 @@ -// -// alasql.js -// Alasql - JavaScript SQL database -// Date: 01.04.2015 -// Version: 0.0.43 -// (ñ) 2014, Andrey Gershun -// - -/* -The MIT License (MIT) - -Copyright (c) 2014-2015 Andrey Gershun (agershun@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ /** UMD envelope @@ -109,5 +78,5 @@ var alasql = function(sql, params, cb, scope) { }; /** Current version of alasql */ -alasql.version = "0.0.36"; +alasql.version = "0.0.44"; diff --git a/src/40select.js b/src/40select.js index ca3658c7bc..7fdc9a4b59 100644 --- a/src/40select.js +++ b/src/40select.js @@ -85,7 +85,7 @@ yy.Select.prototype.toJavaScript = function(context, tableid, defcols) { // console.log('Select.toJS', 81, this.queriesidx); // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]'; //console.log(this); - var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,p))[0]'; + var s = 'alasql.utils.flatArray(this.queriesfn['+(this.queriesidx-1)+'](this.params,null,'+context+'))[0]'; // s = '(console.log(this.queriesfn[0]),'+s+')'; return s; diff --git a/src/41exists.js b/src/41exists.js index 68fb4637c5..b5a322a18d 100644 --- a/src/41exists.js +++ b/src/41exists.js @@ -15,9 +15,9 @@ yy.ExistsValue.prototype.toType = function() { return 'boolean'; }; -yy.ExistsValue.prototype.toJavaScript = function() { +yy.ExistsValue.prototype.toJavaScript = function(context,tableid,defcols) { // return 'ww=this.existsfn['+this.existsidx+'](params,null,p).length,console.log(ww),ww'; - return 'this.existsfn['+this.existsidx+'](params,null,p).length'; + return 'this.existsfn['+this.existsidx+'](params,null,'+context+').length'; }; yy.Select.prototype.compileWhereExists = function(query) { diff --git a/src/99worker-start.js b/src/99worker-start.js index e0efef5f43..a0bc9a4880 100644 --- a/src/99worker-start.js +++ b/src/99worker-start.js @@ -1,3 +1,10 @@ +/* +// +// AlaSQL Workker +// Date: 13.04.2014 +// (c) 2014-2015, Andrey Gershun +// +*/ (function (root, factory) { if (typeof define === 'function' && define.amd) { define([], factory); diff --git a/test/test169a.xlsx b/test/test169a.xlsx index fa4448cdd74cedd270b1f77eee46e77d58652728..670c6dd24ff1817b7728b4c8e05109f8430b63a2 100644 GIT binary patch delta 166 zcmdm!y(gPDz?+$civa|5XZCL7ZDV8x(wnC-#xj8!-jlMB-SjAtH0wx#hr8t5iQR zgBkNRf3koXv-OG~Y6J{Zz>LY|#x@|C$=i&r!SoknD==+n;tZzCP3*w*4igJ7{Ta$P LF*O78b4~pLeRn~+ diff --git a/test/test238b.xlsx b/test/test238b.xlsx index 4060bd79e315ae16c005f5faeb56be9cb04568e3..e8fd92f80ceb972882a878c2697b39ae8e2c397e 100644 GIT binary patch delta 166 zcmcbcbvKJQz?+$civa|5XZCL7ZDV8x(wnC-#xj8!-jlMB-TQKp3{{+;U(kZ`DuC zV1|R{PZlu4Mz08>YokF5m@!$x*ajpsIo#M9Oiwko0@Ig_ox!w(i5-}ZG_e5FQ=t5- LCT3thpQ%3pPfS2% diff --git a/test/test251.xlsx b/test/test251.xlsx index 9562e72ed1fdf62bd8c0878a016890797a3e49dc..dce22969dea7af0fcfa2c6b21e4f5a3065c3ef9b 100644 GIT binary patch delta 386 zcmZ2izP6k7*0#U+(Fsl|E~xj6yej7%a7 zaL>D`3%@oBW@TUiVPSBPzzB`WjMhpvAp5+s1b_N4F))BIH%uB#uQ6s|h%ZXbDc08m ck!Xfbj<=R(QZ$=vXC^awhP42juq8+n0Odqypa1{> delta 373 zcmZ2mzOI}%z?+$civa{y&S~Aq+s4QYq&H7v{Lcht%wU-W5z%F{VG;sLxi#_M^qk1d zzyQJ$43q7xq&83G*vm9IoJ&B^#Y9P=#8#=eq)5rmrp(UJa&i&(Ua&bvJlt|%hJ)58 zW-!B4uaOnZ*lAn@u}jbFBbYH+$c) as [b->c], sum(a)/(select sum(a) from ?) \ + from ? group by b->c",[db,db]); + + assert.deepEqual(res, + [ { 'b->c': 'label1', + 'SUM(a) / SELECT SUM(a) FROM $0 AS default': 0.4 }, + { 'b->c': 'label2', + 'SUM(a) / SELECT SUM(a) FROM $0 AS default': 0.6 } ] + ); + + done(); + }); + +}); +

    ")}el.focus();useidel.textContent=alasql.useid;var y=el.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;scrollTo(document.getElementsByTagName("body")[0],y,500)}else if(event.which==38){prompti--;if(prompti<0)prompti=0;if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}else if(event.which==40){prompti++;if(prompti>=alasql.prompthistory.length){prompti=alasql.prompthistory.length;el.value=""}else if(alasql.prompthistory[prompti]){el.value=alasql.prompthistory[prompti];event.preventDefault()}}}};yy.BeginTransaction=function(params){return yy.extend(this,params)};yy.BeginTransaction.prototype.toString=function(){return K("BEGIN")+" "+K("TRANSACTION")};yy.BeginTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid,cb)}else{}if(cb)cb(res);return res};yy.CommitTransaction=function(params){return yy.extend(this,params)};yy.CommitTransaction.prototype.toString=function(){return K("COMMIT")+" "+K("TRANSACTION")};yy.CommitTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid,cb)}else{}if(cb)cb(res);return res};yy.RollbackTransaction=function(params){return yy.extend(this,params)};yy.RollbackTransaction.prototype.toString=function(){return K("ROLLBACK")+" "+K("TRANSACTION")};yy.RollbackTransaction.prototype.execute=function(databaseid,params,cb){var res=1;if(alasql.databases[databaseid].engineid){return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid,cb)}else{}if(cb)cb(res);return res};alasql.into.SQL=function(filename,opts,data,columns,cb){var res;if(typeof filename=="object"){opts=filename;filename=""}var opt={};alasql.utils.extend(opt,opts);if(typeof opt.tableid=="undefined"){throw new Error("Table for INSERT TO is not defined.")}var s="";if(columns.length==0){if(typeof data[0]=="object"){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}else{}}for(var i=0,ilen=data.length;i0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var res=data.length;var s="";if(data.length>0){var key=columns[0].columnid;s+=data.map(function(d){return d[key]}).join("\n")}alasql.utils.saveFile(filename,s);if(cb)res=cb(res);return res};alasql.into.TAB=alasql.into.TSV=function(filename,opts,data,columns,cb){var opt={};alasql.utils.extend(opt,opts);opt.separator=" ";return alasql.into.CSV(filename,opt,data,columns,cb)};alasql.into.CSV=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof filename=="object"){opts=filename;filename=null}var opt={};opt.separator=",";opt.quote='"';alasql.utils.extend(opt,opts);var res=data.length;var s="";if(opt.headers){s+=columns.map(function(col){return col.columnid}).join(opt.separator)+"\n"}data.forEach(function(d,idx){s+=columns.map(function(col){var s=d[col.columnid];s=(s+"").replace(new RegExp("\\"+opt.quote,"g"),'""');if((s+"").indexOf(opt.separator)>-1||(s+"").indexOf(opt.quote)>-1)s=opt.quote+s+opt.quote;return s}).join(opt.separator)+"\n"});if(filename){alasql.utils.saveFile(filename,s)}else{console.log(s)}if(cb)res=cb(res);return res};alasql.into.XLSX=function(filename,opts,data,columns,cb){if(columns.length==0&&data.length>0){columns=Object.keys(data[0]).map(function(columnid){return{columnid:columnid}})}if(typeof exports=="object"){var XLSX=require("xlsx")}else{var XLSX=window.XLSX}var opt={sheetid:"Sheet1",headers:true};alasql.utils.extend(opt,opts);var res=data.length;var wb={SheetNames:[],Sheets:{}};if(opt.sourcefilename){alasql.utils.loadBinaryFile(opt.sourcefilename,!!cb,function(data){wb=XLSX.read(data,{type:"binary"});doExport()})}else{doExport()}function doExport(){var cells={};if(wb.SheetNames.indexOf(opt.sheetid)>-1){cells=wb.Sheets[opt.sheetid]}else{wb.SheetNames.push(opt.sheetid);wb.Sheets[opt.sheetid]={};cells=wb.Sheets[opt.sheetid]}var range="A1";if(opt.range)range=opt.range;var col0=alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);var row0=+range.match(/[0-9]+/)[0]-1;if(wb.Sheets[opt.sheetid]["!ref"]){var rangem=wb.Sheets[opt.sheetid]["!ref"];var colm=alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);var rowm=+rangem.match(/[0-9]+/)[0]-1}else{var colm=1,rowm=1}var colmax=Math.max(col0+columns.length,colm);var rowmax=Math.max(row0+data.length+2,rowm);var i=row0+1;wb.Sheets[opt.sheetid]["!ref"]="A1:"+alasql.utils.xlsnc(colmax)+rowmax;if(opt.headers){columns.forEach(function(col,idx){cells[alasql.utils.xlsnc(col0+idx)+""+i]={v:col.columnid}});i++}for(var j=0;j=N)return EOF;if(eol)return eol=false,EOL;var j=I;if(text.charCodeAt(j)===quoteCode){var i=j;while(i++http://github/agershun/alasq for more information'}];yy.Help.prototype.execute=function(databaseid,params,cb){var ss=[];if(!this.subject){ss=helpdocs}else{ss.push('See also http://github/agershun/alasq for more information')}if(cb)ss=cb(ss);return ss};yy.Print=function(params){return yy.extend(this,params)};yy.Print.prototype.toString=function(){var s=K("PRINT");if(this.statement)s+=" "+this.statement.toString();return s};yy.Print.prototype.execute=function(databaseid,params,cb){var res,s;if(this.statement){s=this.statement.execute(databaseid,params)}else{s=""}s=JSONtoString(s);console.log(s);if(cb)res=cb(res);return res};yy.Source=function(params){return yy.extend(this,params)};yy.Source.prototype.toString=function(){var s=K("SOURCE");if(this.url)s+=" "+S("'"+this.url+"'");return s};yy.Source.prototype.execute=function(databaseid,params,cb){var res;loadFile(this.url,!!cb,function(data){res=alasql(data);if(cb)res=cb(res);return res},function(err){throw err});return res};yy.Require=function(params){return yy.extend(this,params)};yy.Require.prototype.toString=function(){var s=K("REQUIRE");if(this.paths&&this.paths.length>0){s+=this.paths.map(function(path){return path.toString()}).join(",")}return s};yy.Require.prototype.execute=function(databaseid,params,cb){var self=this;var res=0;var ss="";if(this.paths.length>0){this.paths.forEach(function(path){loadFile(path.value,!!cb,function(data){res++;ss+=data;if(res0){res=res.filter(function(d){return d.databaseid.match(relike)})}}if(cb)cb(res);return res};LS.createTable=function(databaseid,tableid,ifnotexists,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var tb=LS.get(lsdbid+"."+tableid);var res=1;if(tb&&!ifnotexists){throw new Error('Table "'+tableid+'" alsready exists in localStorage database "'+lsdbid+'"')}var lsdb=LS.get(lsdbid);var table=alasql.databases[databaseid].tables[tableid];lsdb.tables[tableid]={columns:table.columns};LS.set(lsdbid,lsdb);LS.set(lsdbid+"."+tableid,[]);if(cb)cb(res);return res};LS.dropTable=function(databaseid,tableid,ifexists,cb){var res=1;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(!ifexists&&!lsdb.tables[tableid]){throw new Error('Cannot drop table "'+tableid+'" in localStorage, because it does not exist')}delete lsdb.tables[tableid];LS.set(lsdbid,lsdb);localStorage.removeItem(lsdbid+"."+tableid);if(cb)cb(res);return res};LS.fromTable=function(databaseid,tableid,cb,idx,query){var lsdbid=alasql.databases[databaseid].lsdbid;var res=LS.get(lsdbid+"."+tableid);if(cb)res=cb(res,idx,query);return res};LS.intoTable=function(databaseid,tableid,value,columns,cb){var lsdbid=alasql.databases[databaseid].lsdbid;var res=value.length;var tb=LS.get(lsdbid+"."+tableid);if(!tb)tb=[];tb=tb.concat(value);LS.set(lsdbid+"."+tableid,tb);if(cb)cb(res);return res};LS.loadTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;db.tables[tableid].data=LS.get(lsdbid+"."+tableid)};LS.saveTableData=function(databaseid,tableid){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;LS.set(lsdbid+"."+tableid,db.tables[tableid].data);db.tables[tableid].data=null};LS.commit=function(databaseid,cb){var db=alasql.databases[databaseid];var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb={databaseid:lsdbid,tables:{}};if(db.tables){for(var tbid in db.tables){lsdb.tables[tbid]={columns:db.tables[tbid].columns};LS.set(lsdbid+"."+tbid,db.tables[tbid].data)}}LS.set(lsdbid,lsdb);return 1};LS.begin=LS.commit;LS.rollback=function(databaseid,cb){var db=alasql.databases[databaseid];db.dbversion++;var lsdbid=alasql.databases[databaseid].lsdbid;var lsdb=LS.get(lsdbid);if(lsdb.tables){for(var tbid in lsdb.tables){var tb=new alasql.Table({columns:db.tables[tbid].columns});extend(tb,lsdb.tables[tbid]);lsdb.tables[tbid]=tb;if(!alasql.options.autocommit){lsdb.tables[tbid].data=LS.get(db.lsdbid+"."+tbid)}lsdb.tables[tbid].indexColumns()}}delete alasql.databases[databaseid];alasql.databases[databaseid]=new alasql.Database(databaseid);extend(alasql.databases[databaseid],lsdb);alasql.databases[databaseid].databaseid=databaseid;alasql.databases[databaseid].engineid="LOCALSTORAGE"};var SQLITE=alasql.engines.SQLITE=function(){};SQLITE.createDatabase=function(wdbid,args,ifnotexists,dbid,cb){throw new Error("Connot create SQLITE database in memory. Attach it.")};SQLITE.dropDatabase=function(databaseid){throw new Error("This is impossible to drop SQLite database. Detach it.")};SQLITE.attachDatabase=function(sqldbid,dbid,args,params,cb){var res=1;if(alasql.databases[dbid]){throw new Error('Unable to attach database as "'+dbid+'" because it already exists')}if(args[0]&&args[0]instanceof yy.StringValue||args[0]instanceof yy.ParamValue){if(args[0]instanceof yy.StringValue){var value=args[0].value}else if(args[0]instanceof yy.ParamValue){var value=params[args[0].param]}alasql.utils.loadBinaryFile(value,true,function(data){var db=new alasql.Database(dbid||sqldbid);db.engineid="SQLITE";db.sqldbid=sqldbid;var sqldb=db.sqldb=new SQL.Database(data);db.tables=[];var tables=sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;tables.forEach(function(tbl){db.tables[tbl[1]]={};var columns=db.tables[tbl[1]].columns=[];var ast=alasql.parse(tbl[4]);var coldefs=ast.statements[0].columns;if(coldefs&&coldefs.length>0){coldefs.forEach(function(cd){columns.push(cd)})}});cb(1)},function(err){throw new Error('Cannot open SQLite database file "'+args[0].value+'"')});return res}else{throw new Error("Cannot attach SQLite database without a file")}return res};SQLITE.fromTable=function(databaseid,tableid,cb,idx,query){var data=alasql.databases[databaseid].sqldb.exec("SELECT * FROM "+tableid);var columns=query.sources[idx].columns=[];if(data[0].columns.length>0){data[0].columns.forEach(function(columnid){columns.push({columnid:columnid})})}var res=[];if(data[0].values.length>0){data[0].values.forEach(function(d){var r={};columns.forEach(function(col,idx){r[col.columnid]=d[idx]});res.push(r)})}if(cb)cb(res,idx,query)};SQLITE.intoTable=function(databaseid,tableid,value,columns,cb){var sqldb=alasql.databases[databaseid].sqldb;for(var i=0,ilen=value.length;i1){var sql="REQUIRE "+paths.map(function(p){return'"'+p+'"'}).join(",");alasql(sql,[],cb)}}else if(path===false){delete alasql.webworker;return}}} \ No newline at end of file +}};var Database=alasql.Database=function(databaseid){var self=this;if(self===alasql){if(databaseid){self=alasql.databases[databaseid];if(!self){throw new Error('Database "'+databaseid+'" not found')}}else{self=alasql.databases.alasql}}if(!databaseid){databaseid="db"+alasql.databasenum++}self.databaseid=databaseid;alasql.databases[databaseid]=self;self.tables={};self.views={};self.indices={};self.resetSqlCache();self.dbversion=0;return self};Database.prototype.resetSqlCache=function(){this.sqlCache={};this.sqlCacheSize=0};Database.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Database.prototype.transaction=function(cb){var tx=new alasql.Transaction(this.databaseid);var res=cb(tx);return res};var Transaction=alasql.Transaction=function(databaseid){this.transactionid=Date.now();this.databaseid=databaseid;this.commited=false;this.dbversion=alasql.databases[databaseid].dbversion;this.bank=JSON.stringify(alasql.databases[databaseid]);return this};Transaction.prototype.commit=function(){this.commited=true;alasql.databases[this.databaseid].dbversion=Date.now();delete this.bank};Transaction.prototype.rollback=function(){if(!this.commited){alasql.databases[this.databaseid]=JSON.parse(this.bank);delete this.bank}else{throw new Error("Transaction already commited")}};Transaction.prototype.exec=function(sql,params,cb){return alasql.dexec(this.databaseid,sql,params,cb)};Transaction.prototype.executeSQL=Transaction.prototype.exec;var Table=alasql.Table=function(params){this.columns=[];this.xcolumns={};this.data=[];this.inddefs={};this.indices={};this.uniqs={};this.uniqdefs={};extend(this,params)};Table.prototype.indexColumns=function(){var self=this;self.xcolumns={};self.columns.forEach(function(col){self.xcolumns[col.columnid]=col})};var View=alasql.View=function(params){this.columns=[];this.xcolumns={};this.query=[];extend(this,params)};var Query=alasql.Query=function(params){this.alasql=alasql;this.columns=[];this.xcolumns={};this.selectGroup=[];this.groupColumns={};extend(this,params)};var Recordset=alasql.Recordset=function(params){extend(this,params)};var yy=parser.yy={};yy.extend=extend;yy.casesensitive=alasql.options.casesensitive;var Base=yy.Base=function(params){return yy.extend(this,params)};Base.prototype.toString=function(){};Base.prototype.toType=function(){};Base.prototype.toJavaScript=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};Base.prototype.compile=returnUndefined;Base.prototype.exec=function(){};yy.Statements=function(params){return yy.extend(this,params)};yy.Statements.prototype.toString=function(){return this.statements.map(function(st){return st.toString()}).join(";"+NL())};yy.Statements.prototype.compile=function(db){var statements=this.statements.map(function(st){return st.compile(db)});if(statements.length==1){return statements[0]}else{return function(params,cb){var res=statements.map(function(st){return st(params)});if(cb)cb(res);return res}}};function queryfn(query,oldscope,cb,A,B){var ms;query.sourceslen=query.sources.length;var slen=query.sourceslen;query.query=query;query.A=A;query.B=B;query.cb=cb;query.oldscope=oldscope;if(query.queriesfn){query.sourceslen+=query.queriesfn.length;slen+=query.queriesfn.length;query.queriesdata=[];query.queriesfn.forEach(function(q,idx){q.query.params=query.params;if(false){queryfn(q.query,query.oldscope,queryfn2,-idx-1,query)}else{queryfn2([],-idx-1,query)}})}var scope;if(!oldscope)scope={};else scope=cloneDeep(oldscope);query.scope=scope;var result;query.sources.forEach(function(source,idx){source.query=query;var rs=source.datafn(query,query.params,queryfn2,idx,alasql);if(typeof rs!=undefined){if((query.intofn||query.intoallfn)&&rs instanceof Array)rs=rs.length;result=rs}source.queriesdata=query.queriesdata});if(slen==0)result=queryfn3(query);return result}function queryfn2(data,idx,query){if(idx>=0){var source=query.sources[idx];source.data=data;if(typeof source.data=="function"){source.getfn=source.data;source.dontcache=source.getfn.dontcache;if(source.joinmode=="OUTER"||source.joinmode=="RIGHT"||source.joinmode=="ANTI"){source.dontcache=false}source.data={}}}else{query.queriesdata[-idx-1]=flatArray(data)}query.sourceslen--;if(query.sourceslen>0)return;return queryfn3(query)}function queryfn3(query){var scope=query.scope;preIndex(query);query.data=[];query.xgroups={};query.groups=[];var h=0;doJoin(query,scope,h);if(query.groupfn){query.data=[];if(query.groups.length==0){var g={};if(query.selectGroup.length>0){query.selectGroup.forEach(function(sg){if(sg.aggregatorid=="COUNT"||sg.aggregatorid=="SUM"){g[sg.nick]=0}else{g[sg.nick]=undefined}})}query.groups=[g]}for(var i=0,ilen=query.groups.length;i0){for(var i=0,ilen=query.data.length;i0&&source.optimization=="ix"&&source.onleftfn&&source.onrightfn){if(source.databaseid&&alasql.databases[source.databaseid].tables[source.tableid]){if(!alasql.databases[source.databaseid].tables[source.tableid].indices)query.database.tables[source.tableid].indices={};var ixx=alasql.databases[source.databaseid].tables[source.tableid].indices[hash(source.onrightfns+"`"+source.srcwherefns)];if(!alasql.databases[source.databaseid].tables[source.tableid].dirty&&ixx){source.ix=ixx}}if(!source.ix){source.ix={};var scope={};var i=0;var ilen=source.data.length;var dataw;while((dataw=source.data[i])||source.getfn&&(dataw=source.getfn(i))||i=query.sources.length){if(query.wherefn(scope,query.params,alasql)){if(query.groupfn){query.groupfn(scope,query.params,query.alasql)}else{query.data.push(query.selectfn(scope,query.params,alasql))}}}else if(query.sources[h].applyselect){var source=query.sources[h];source.applyselect(query.params,function(data){if(data.length>0){for(var i=0;i0){s+=NL()+ID()+K("GROUP BY")+" "+this.group.map(function(grp){return grp.toString()}).join(", ")}if(this.having)s+=NL()+ID()+K("HAVING")+" "+this.having.toString();if(this.order&&this.order.length>0){s+=NL()+ID()+K("ORDER BY")+" "+this.order.map(function(ord){return ord.toString()}).join(", ")}if(this.limit)s+=NL()+ID()+K("LIMIT")+" "+this.limit.value;if(this.offset)s+=NL()+ID()+K("OFFSET")+" "+this.offset.value;if(this.union)s+=NL()+K("UNION")+NL()+this.union.toString();if(this.unionall)s+=NL()+K("UNION ALL")+NL()+this.unionall.toString();if(this.except)s+=NL()+K("EXCEPT")+NL()+this.except.toString();if(this.intersect)s+=NL()+K("INTERSECT")+NL()+this.intersect.toString();return s};yy.Select.prototype.toJavaScript=function(context,tableid,defcols){var s="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+context+"))[0]";return s};yy.Select.prototype.compile=function(databaseid){var db=alasql.databases[databaseid];var query=new Query;query.removeKeys=[];query.explain=this.explain;query.explaination=[];query.explid=1;query.modifier=this.modifier;query.database=db;this.compileWhereExists(query);this.compileQueries(query);query.defcols=this.compileDefCols(query,databaseid);query.fromfn=this.compileFrom(query);if(this.joins)this.compileJoins(query);this.compileSelectGroup0(query);if(this.group||query.selectGroup.length>0){query.selectgfns=this.compileSelectGroup1(query)}else{query.selectfns=this.compileSelect1(query)}if(this.where)this.compileWhereJoins(query);query.wherefn=this.compileWhere(query);if(this.group||query.selectGroup.length>0)query.groupfn=this.compileGroup(query);if(this.having)query.havingfn=this.compileHaving(query);if(this.group||query.selectGroup.length>0){query.selectgfn=this.compileSelectGroup2(query)}else{query.selectfn=this.compileSelect2(query)}query.distinct=this.distinct;if(this.order)query.orderfn=this.compileOrder(query);if(this.top){query.limit=this.top.value}else if(this.limit){query.limit=this.limit.value;if(this.offset){query.offset=this.offset.value}}query.percent=this.percent;if(this.union){query.unionfn=this.union.compile(databaseid);if(this.union.order){query.orderfn=this.union.compileOrder(query)}else{query.orderfn=null}}else if(this.unionall){query.unionallfn=this.unionall.compile(databaseid);if(this.unionall.order){query.orderfn=this.unionall.compileOrder(query)}else{query.orderfn=null}}else if(this.except){query.exceptfn=this.except.compile(databaseid);if(this.except.order){query.orderfn=this.except.compileOrder(query)}else{query.orderfn=null}}else if(this.intersect){query.intersectfn=this.intersect.compile(databaseid);if(this.intersect.order){query.intersectfn=this.intersect.compileOrder(query)}else{query.orderfn=null}}if(this.into){if(this.into instanceof yy.Table){if(alasql.options.autocommit&&alasql.databases[this.into.databaseid||databaseid].engineid){query.intoallfns='return alasql.engines["'+alasql.databases[this.into.databaseid||databaseid].engineid+'"]'+'.intoTable("'+(this.into.databaseid||databaseid)+'","'+this.into.tableid+'",this.data, columns, cb);'}else{query.intofns="alasql.databases['"+(this.into.databaseid||databaseid)+"'].tables"+"['"+this.into.tableid+"'].data.push(r);"}}else if(this.into instanceof yy.VarValue){query.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=1;if(cb)res=cb(res);return res;'}else if(this.into instanceof yy.FuncValue){var qs="alasql.into['"+this.into.funcid.toUpperCase()+"'](";if(this.into.args&&this.into.args.length>0){qs+=this.into.args[0].toJavaScript()+",";if(this.into.args.length>1){qs+=this.into.args[1].toJavaScript()+","}else{qs+="null,"}}else{qs+="null, null,"}query.intoallfns=qs+"this.data,columns,cb)"}else if(this.into instanceof yy.ParamValue){query.intofns="params['"+this.into.param+"'].push(r)"}if(query.intofns){query.intofn=new Function("r,i,params,alasql",query.intofns)}if(query.intoallfns){query.intoallfn=new Function("columns,cb,alasql",query.intoallfns)}}var statement=function(params,cb,oldscope){query.params=params;var res1=queryfn(query,oldscope,function(res){var res2=modify(query,res);if(cb)cb(res2);return res2});return res1};statement.query=query;return statement};function modify(query,res){if(query.modifier=="VALUE"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];res=res[0][key]}else{res=undefined}}if(query.modifier=="ROW"){if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var a=[];for(var key in res[0]){a.push(res[0][key])}res=a}else{res=undefined}}if(query.modifier=="COLUMN"){var ar=[];if(res.length>0){var key;if(query.columns&&query.columns.length>0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];for(var i=0,ilen=res.length;i0){key=query.columns[0].columnid;val=query.columns[1].columnid}else{var okeys=Object.keys(res[0]);key=okeys[0];val=okeys[1]}for(var i=0,ilen=res.length;i0)key=query.columns[0].columnid;else key=Object.keys(res[0])[0];var s="";for(var i=0,ilen=res.length;i0){if(tq.args[0]){s+=tq.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(tq.args[1]){s+=tq.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s)}else if(tq instanceof yy.FromData){source.datafn=function(query,params,cb,idx,alasql){var res=tq.data;if(cb)res=cb(res,idx,query);return res}}else{throw new Error("Wrong table at FROM")}query.sources.push(source)});query.defaultTableid=query.sources[0].alias};alasql.prepareFromData=function(data,array){var res=data;if(typeof data=="string"){res=data.split(/\r?\n/);if(array){for(var i=0,ilen=res.length;i0){if(jn.args[0]){s+=jn.args[0].toJavaScript("query.oldscope")+","}else{s+="null,"}if(jn.args[1]){s+=jn.args[1].toJavaScript("query.oldscope")+","}else{s+="null,"}}else{s+="null,null,"}s+="cb,idx,query";s+=");/*if(cb)res=cb(res,idx,query);*/return res";source.datafn=new Function("query, params, cb, idx, alasql",s);query.aliases[source.alias]={type:"funcvalue"}}var alias=source.alias;if(jn.natural){if(jn.using||jn.on){throw new Error("NATURAL JOIN cannot have USING or ON clauses")}else{if(query.sources.length>0){var prevSource=query.sources[query.sources.length-1];var prevTable=alasql.databases[prevSource.databaseid].tables[prevSource.tableid];var table=alasql.databases[source.databaseid].tables[source.tableid];if(prevTable&&table){var c1=prevTable.columns.map(function(col){return col.columnid});var c2=table.columns.map(function(col){return col.columnid});jn.using=arrayIntersect(c1,c2).map(function(colid){return{columnid:colid}})}else{throw new Error("In this version of Alasql NATURAL JOIN "+"works for tables with predefined columns only")}}}}if(jn.using){var prevSource=query.sources[query.sources.length-1];source.onleftfns=jn.using.map(function(col){return"p['"+(prevSource.alias||prevSource.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfns=jn.using.map(function(col){return"p['"+(source.alias||source.tableid)+"']['"+col.columnid+"']"}).join('+"`"+');source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.optimization="ix"}else if(jn.on){if(jn.on instanceof yy.Op&&jn.on.op=="="&&!jn.on.allsome){source.optimization="ix";var lefts="";var rights="";var middles="";var middlef=false;var ls=jn.on.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=jn.on.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+alias+"']")>-1&&!(rs.indexOf("p['"+alias+"']")>-1)){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=ls}else{middlef=true}}else if(!(ls.indexOf("p['"+alias+"']")>-1)&&rs.indexOf("p['"+alias+"']")>-1){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=ls}else{middlef=true}}else{middlef=true}if(rs.indexOf("p['"+alias+"']")>-1&&!(ls.indexOf("p['"+alias+"']")>-1)){if((rs.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){rights=rs}else{middlef=true}}else if(!(rs.indexOf("p['"+alias+"']")>-1)&&ls.indexOf("p['"+alias+"']")>-1){if((ls.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+alias+"']"})){lefts=rs}else{middlef=true}}else{middlef=true}if(middlef){rights="";lefts="";middles=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.optimization="no"}source.onleftfns=lefts;source.onrightfns=rights;source.onmiddlefns=middles||"true";source.onleftfn=new Function("p,params,alasql","return "+source.onleftfns);source.onrightfn=new Function("p,params,alasql","return "+source.onrightfns);source.onmiddlefn=new Function("p,params,alasql","return "+source.onmiddlefns)}else{source.optimization="no";source.onmiddlefns=jn.on.toJavaScript("p",query.defaultTableid,query.defcols);source.onmiddlefn=new Function("p,params,alasql","return "+jn.on.toJavaScript("p",query.defaultTableid,query.defcols))}}query.sources.push(source)}})};yy.Select.prototype.compileWhere=function(query){if(this.where){if(typeof this.where=="function"){return this.where}else{s=this.where.toJavaScript("p",query.defaultTableid,query.defcols);query.wherefns=s;return new Function("p,params,alasql","return "+s)}}else return function(){return true}};yy.Select.prototype.compileWhereJoins=function(query){return;optimizeWhereJoin(query,this.where.expression);query.sources.forEach(function(source){if(source.srcwherefns){source.srcwherefn=new Function("p,params,alasql","return "+source.srcwherefns)}if(source.wxleftfns){source.wxleftfn=new Function("p,params,alasql","return "+source.wxleftfns)}if(source.wxrightfns){source.wxrightfn=new Function("p,params,alasql","return "+source.wxrightfns)}})};function optimizeWhereJoin(query,ast){if(!ast)return false;if(!(ast instanceof yy.Op))return;if(ast.op!="="&&ast.op!="AND")return;if(ast.allsome)return;var s=ast.toJavaScript("p",query.defaultTableid,query.defcols);var fsrc=[];query.sources.forEach(function(source,idx){if(source.tableid){if(s.indexOf("p['"+source.alias+"']")>-1)fsrc.push(source)}});if(fsrc.length==0){return}else if(fsrc.length==1){if(!(s.match(/p\[\'.*?\'\]/g)||[]).every(function(s){return s=="p['"+fsrc[0].alias+"']"})){return}var src=fsrc[0];src.srcwherefns=src.srcwherefns?src.srcwherefns+"&&"+s:s;if(ast instanceof yy.Op&&(ast.op=="="&&!ast.allsome)){if(ast.left instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(rs.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=ls;fsrc[0].wxrightfns=rs}}if(ast.right instanceof yy.Column){var ls=ast.left.toJavaScript("p",query.defaultTableid,query.defcols);var rs=ast.right.toJavaScript("p",query.defaultTableid,query.defcols);if(ls.indexOf("p['"+fsrc[0].alias+"']")==-1){fsrc[0].wxleftfns=rs;fsrc[0].wxrightfns=ls}}}ast.reduced=true;return}else{if(ast.op="AND"){optimizeWhereJoin(query,ast.left);optimizeWhereJoin(query,ast.right)}}}yy.Select.prototype.compileGroup=function(query){var self=this;var tableid=query.sources[0].alias;var defcols=query.defcols;var allgroup=[[]]; +if(this.group){allgroup=decartes(this.group,query)}var allgroups=[];allgroup.forEach(function(a){allgroups=arrayUnion(allgroups,a)});query.allgroups=allgroups;if(false){allgroups.forEach(function(col2){if(query.selectColumns[colid]){}else{var tmpid="default";if(query.sources.length>0)tmpid=query.sources[0].alias;if(Object.keys(query.selectColumns).length!=0)query.removeKeys.push(colid);query.selectfns+="r['"+escapeq(colid)+"']="+new yy.Column({columnid:colid}).toJavaScript("p",tmpid)+";"}})}var s="";allgroup.forEach(function(agroup){s+="var g=this.xgroups[";var rg=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"1";else return coljs});if(rg.length==0)rg=["''"];s+=rg.join('+"`"+');s+="];if(!g) {this.groups.push((g=this.xgroups[";s+=rg.join('+"`"+');s+="] = {";s+=agroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];if(columnid=="")return"";else return"'"+columnid+"':"+coljs+","}).join("");var neggroup=arrayDiff(allgroups,agroup);s+=neggroup.map(function(col2){var columnid=col2.split(" ")[0];var coljs=col2.split(" ")[1];return"'"+columnid+"':null,"}).join("");var aft="";s+=query.selectGroup.map(function(col,idx){var colexp=col.expression.toJavaScript("p",tableid,defcols);var colas=col.nick;if(col instanceof yy.AggrValue){if(col.distinct){aft+=",g['$$_VALUES_"+colas+"']={},g['$$_VALUES_"+colas+"']["+colexp+"]=true"}if(col.aggregatorid=="SUM"||col.aggregatorid=="MIN"||col.aggregatorid=="MAX"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"){return"'"+colas+"':"+colexp+","}else if(col.aggregatorid=="ARRAY"){return"'"+colas+"':["+colexp+"],"}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*"){return"'"+colas+"':1,"}else{return"'"+colas+"':(typeof "+colexp+' != "undefined")?1:0,'}}else if(col.aggregatorid=="AVG"){query.removeKeys.push("_SUM_"+colas);query.removeKeys.push("_COUNT_"+colas);return"'"+colas+"':"+colexp+",'_SUM_"+colas+"':"+colexp+",'_COUNT_"+colas+"':1,"}else if(col.aggregatorid=="AGGR"){aft+=",g['"+colas+"']="+col.expression.toJavaScript("g",-1);return""}else if(col.aggregatorid=="REDUCE"){return"'"+colas+"':alasql.aggr['"+col.funcid+"']("+colexp+"),"}return""}else return""}).join("");s+="}"+aft+",g));} else {";s+=query.selectGroup.map(function(col,idx){var colas=col.nick;var colexp=col.expression.toJavaScript("p",tableid,defcols);if(col instanceof yy.AggrValue){if(col.distinct){var pre="if(typeof "+colexp+'!="undefined" && (!g[\'$$_VALUES_'+colas+"']["+colexp+"])) {";var post="g['$$_VALUES_"+colas+"']["+colexp+"]=true;}"}else{var pre="",post=""}if(col.aggregatorid=="SUM"){return pre+"g['"+colas+"']+="+colexp+";"+post}else if(col.aggregatorid=="COUNT"){if(col.expression.columnid=="*")return pre+"g['"+colas+"']++;"+post;else{return pre+"if(typeof "+colexp+'!="undefined") g[\''+colas+"']++;"+post}}else if(col.aggregatorid=="ARRAY"){return pre+"g['"+colas+"'].push("+colexp+");"+post}else if(col.aggregatorid=="MIN"){return pre+"g['"+colas+"']=Math.min(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="MAX"){return pre+"g['"+colas+"']=Math.max(g['"+colas+"'],"+colexp+");"+post}else if(col.aggregatorid=="FIRST"){return""}else if(col.aggregatorid=="LAST"){return pre+"g['"+colas+"']="+colexp+";"+post}else if(col.aggregatorid=="AVG"){return pre+"g['_SUM_"+colas+"']+="+colexp+";"+"g['_COUNT_"+colas+"']++;"+"g['"+colas+"']=g['_SUM_"+colas+"']/g['_COUNT_"+colas+"'];"+post}else if(col.aggregatorid=="AGGR"){return pre+"g['"+colas+"']="+col.expression.toJavaScript("g",-1)+";"+post}else if(col.aggregatorid=="REDUCE"){return pre+"g['"+colas+"']=alasql.aggr."+col.funcid+"("+colexp+",g['"+colas+"']);"+post}return""}else return""}).join("");s+="}"});return new Function("p,params,alasql",s)};function compileSelectStar(query,alias){var s="",sp="",ss=[];if(query.aliases[alias].tableid){var columns=alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns}if(columns&&columns.length>0){columns.forEach(function(tcol){ss.push("'"+tcol.columnid+"':p['"+alias+"']['"+tcol.columnid+"']");query.selectColumns[escapeq(tcol.columnid)]=true;var coldef={columnid:tcol.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbprecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef})}else{sp+='var w=p["'+alias+'"];for(var k in w){r[k]=w[k]};';query.dirtyColumns=true}return{s:ss.join(","),sp:sp}}yy.Select.prototype.compileSelect1=function(query){var self=this;query.columns=[];query.xcolumns={};query.selectColumns={};query.dirtyColumns=false;var s="var r={";var sp="";var ss=[];this.columns.forEach(function(col){if(col instanceof yy.Column){if(col.columnid=="*"){if(col.func){sp+="r=params['"+col.param+"'](p['"+query.sources[0].alias+"'],p,params,alasql);"}else if(col.tableid){var ret=compileSelectStar(query,col.tableid);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}else{for(var alias in query.aliases){var ret=compileSelectStar(query,alias);if(ret.s)ss=ss.concat(ret.s);sp+=ret.sp}}}else{var tbid=col.tableid;var dbid=col.databaseid||query.sources[0].databaseid||query.database.databaseid;if(!tbid)tbid=query.defcols[col.columnid];if(!tbid)tbid=query.defaultTableid;if(col.columnid!="_"){ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']['"+col.columnid+"']")}else{ss.push("'"+escapeq(col.as||col.columnid)+"':p['"+tbid+"']")}query.selectColumns[escapeq(col.as||col.columnid)]=true;if(query.aliases[tbid]&&query.aliases[tbid].type=="table"){if(!alasql.databases[dbid].tables[query.aliases[tbid].tableid]){throw new Error("Table '"+tbid+"' does not exists in database")}var columns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].columns;var xcolumns=alasql.databases[dbid].tables[query.aliases[tbid].tableid].xcolumns;if(xcolumns&&columns.length>0){var tcol=xcolumns[col.columnid];var coldef={columnid:col.as||col.columnid,dbtypeid:tcol.dbtypeid,dbsize:tcol.dbsize,dbpecision:tcol.dbprecision,dbenum:tcol.dbenum};query.columns.push(coldef);query.xcolumns[coldef.columnid]=coldef}else{query.dirtyColumns=true}}else{}}}else if(col instanceof yy.AggrValue){if(!self.group){self.group=[""]}if(!col.as)col.as=escapeq(col.toString());if(col.aggregatorid=="SUM"||col.aggregatorid=="MAX"||col.aggregatorid=="MIN"||col.aggregatorid=="FIRST"||col.aggregatorid=="LAST"||col.aggregatorid=="AVG"||col.aggregatorid=="ARRAY"||col.aggregatorid=="REDUCE"){ss.push("'"+escapeq(col.as)+"':"+col.expression.toJavaScript("p",query.defaultTableid,query.defcols))}else if(col.aggregatorid=="COUNT"){ss.push("'"+escapeq(col.as)+"':1")}query.selectColumns[col.aggregatorid+"("+escapeq(col.expression.toString())+")"]=thtd}else{ss.push("'"+escapeq(col.as||col.columnid||col.toString())+"':"+col.toJavaScript("p",query.defaultTableid,query.defcols));query.selectColumns[escapeq(col.as||col.columnid||col.toString())]=true}});s+=ss.join(",")+"};"+sp;return s};yy.Select.prototype.compileSelect2=function(query){var s=query.selectfns;return new Function("p,params,alasql",s+"return r")};yy.Select.prototype.compileSelectGroup0=function(query){var self=this;self.columns.forEach(function(col,idx){if(col instanceof yy.Column&&col.columnid=="*"){}else{var colas;if(col instanceof yy.Column){colas=escapeq(col.columnid)}else{colas=escapeq(col.toString())}for(var i=0;irb)return 1;if(ra==rb)return 0;return-1}}var s="";var sk="";this.order.forEach(function(ord,idx){var dg="";if(ord.expression instanceof yy.NumValue){ord.expression=self.columns[ord.expression.value-1]}if(ord.expression instanceof yy.Column){var columnid=ord.expression.columnid;if(query.xcolumns[columnid]){var dbtypeid=query.xcolumns[columnid].dbtypeid;if(dbtypeid=="DATE"||dbtypeid=="DATETIME")dg=".valueOf()"}else{if(alasql.options.valueof)dg=".valueOf()"}if(ord.nocase)dg+=".toUpperCase()";s+="if(a['"+columnid+"']"+dg+(ord.direction=="ASC"?">":"<")+"b['"+columnid+"']"+dg+")return 1;";s+="if(a['"+columnid+"']"+dg+"==b['"+columnid+"']"+dg+"){"}else{dg=".valueOf()";if(ord.nocase)dg+=".toUpperCase()";s+="if("+ord.toJavaScript("a","")+dg+(ord.direction=="ASC"?">":"<")+ord.toJavaScript("b","")+dg+")return 1;";s+="if("+ord.toJavaScript("a","")+dg+"=="+ord.toJavaScript("b","")+dg+"){"}sk+="}"});s+="return 0;";s+=sk+"return -1";query.orderfns=s;return new Function("a,b",s)}};var rollup=function(a,query){var rr=[];var mask=0;var glen=a.length;for(var g=0;g"){var s=this.left.toString()+"->";if(typeof this.right!="string"&&typeof this.right!="number")s+="(";s+=this.right.toString();if(typeof this.right!="string"&&typeof this.right!="number")s+=")";return s}return this.left.toString()+" "+P(this.op)+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()};yy.Op.prototype.findAggregator=function(query){if(this.left&&this.left.findAggregator)this.left.findAggregator(query);if(this.right&&this.right.findAggregator&&!this.allsome){this.right.findAggregator(query)}};yy.Op.prototype.toType=function(tableid){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(this.op=="+"){if(this.left.toType(tableid)=="string"||this.right.toType(tableid)=="string")return"string";if(this.left.toType(tableid)=="number"||this.right.toType(tableid)=="number")return"number"}if(["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE"].indexOf(this.op)>-1)return"boolean";if(this.op=="BETWEEN"||this.op=="NOT BETWEEN"||this.op=="IS NULL"||this.op=="IS NOT NULL")return"boolean";if(this.allsome)return"boolean";if(!this.op)return this.left.toType();return"unknown"};yy.Op.prototype.toJavaScript=function(context,tableid,defcols){var op=this.op;if(this.op=="=")op="===";else if(this.op=="<>")op="!=";else if(this.op=="OR")op="||";if(this.op=="->"){if(typeof this.right=="string"){return this.left.toJavaScript(context,tableid,defcols)+'["'+this.right+'"]'}else if(typeof this.right=="number"){return this.left.toJavaScript(context,tableid,defcols)+"["+this.right+"]"}else if(this.right instanceof yy.FuncValue){ss=[];if(!this.right.args||this.right.args.length==0){}else{var ss=this.right.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)})}return this.left.toJavaScript(context,tableid,defcols)+"['"+this.right.funcid+"']("+ss.join(",")+")"}else{return this.left.toJavaScript(context,tableid,defcols)+"["+this.right.toJavaScript(context,tableid,defcols)+"]"}}if(this.op=="IS"){return"((typeof "+this.left.toJavaScript(context,tableid,defcols)+"=='undefined') == "+"(typeof "+this.right.toJavaScript(context,tableid,defcols)+"=='undefined'))"}if(this.op=="=="){return"alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}if(this.op=="==="){return"(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!==="){return"!(("+this.left.toJavaScript(context,tableid,defcols)+").valueOf()===("+this.right.toJavaScript(context,tableid,defcols)+".valueOf()))"}if(this.op=="!=="){return"(!alasql.utils.deepEqual("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+"))"}if(this.op=="LIKE"){var s="("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g'))";return s}if(this.op=="NOT LIKE"){var s="!(("+this.left.toJavaScript(context,tableid,defcols)+"+'')"+".toUpperCase().match(new RegExp('^'+("+this.right.toJavaScript(context,tableid,defcols)+").replace(/\\%/g,'.*').toUpperCase()+'$','g')))";return s}if(this.op=="BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong BETWEEN operator without AND part")}}if(this.op=="NOT BETWEEN"){if(this.right instanceof yy.Op&&this.right.op=="AND"){return"!(("+this.right.left.toJavaScript(context,tableid,defcols)+"<="+this.left.toJavaScript(context,tableid,defcols)+")&&"+"("+this.left.toJavaScript(context,tableid,defcols)+"<="+this.right.right.toJavaScript(context,tableid,defcols)+"))"}else{throw new Error("Wrong NOT BETWEEN operator without AND part")}}if(this.op=="IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}else{var s="("+this.right.toJavaScript(context,tableid,defcols)+".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")>-1)";return s}}if(this.op=="NOT IN"){if(this.right instanceof yy.Select){var s="(";s+="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else if(this.right instanceof Array){var s="(["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].indexOf(";s+=this.left.toJavaScript(context,tableid,defcols)+")<0)";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="ALL"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].every(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.allsome=="SOME"||this.allsome=="ANY"){if(this.right instanceof yy.Select){var s="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))";s+=".some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else if(this.right instanceof Array){var s="["+this.right.map(function(a){return a.toJavaScript(context,tableid,defcols)}).join(",")+"].some(function(b){return (";s+=this.left.toJavaScript(context,tableid,defcols)+")"+op+"b})";return s}else{throw new Error("Wrong NOT IN operator without SELECT part")}}if(this.op=="AND"){if(this.left.reduced){if(this.right.reduced){return"true"}else{return this.right.toJavaScript(context,tableid,defcols)}}else if(this.right.reduced){return this.left.toJavaScript(context,tableid,defcols)}op="&&"}if(this.op=="^"){return"Math.pow("+this.left.toJavaScript(context,tableid,defcols)+","+this.right.toJavaScript(context,tableid,defcols)+")"}return"("+this.left.toJavaScript(context,tableid,defcols)+op+this.right.toJavaScript(context,tableid,defcols)+")"};yy.VarValue=function(params){return yy.extend(this,params)};yy.VarValue.prototype.toString=function(){return"@"+L(this.variable)};yy.VarValue.prototype.toType=function(){return"unknown"};yy.VarValue.prototype.toJavaScript=function(){return"alasql.vars['"+this.variable+"']"};yy.NumValue=function(params){return yy.extend(this,params)};yy.NumValue.prototype.toString=function(){return N(this.value.toString())};yy.NumValue.prototype.toType=function(){return"number"};yy.NumValue.prototype.toJavaScript=function(){return""+this.value};yy.StringValue=function(params){return yy.extend(this,params)};yy.StringValue.prototype.toString=function(){return"'"+S(this.value.toString())+"'"};yy.StringValue.prototype.toType=function(){return"string"};yy.StringValue.prototype.toJavaScript=function(){return"'"+escapeq(this.value)+"'"};yy.LogicValue=function(params){return yy.extend(this,params)};yy.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"};yy.LogicValue.prototype.toType=function(){return"boolean"};yy.LogicValue.prototype.toJavaScript=function(){return this.value?"true":"false"};yy.NullValue=function(params){return yy.extend(this,params)};yy.NullValue.prototype.toString=function(){return"NULL"};yy.NullValue.prototype.toJavaScript=function(){return"undefined"};yy.ParamValue=function(params){return yy.extend(this,params)};yy.ParamValue.prototype.toString=function(){return"$"+this.param};yy.ParamValue.prototype.toJavaScript=function(){if(typeof this.param=="string")return"params['"+this.param+"']";else return"params["+this.param+"]"};yy.UniOp=function(params){return yy.extend(this,params)};yy.UniOp.prototype.toString=function(){if(this.op=="-")return this.op+this.right.toString();if(this.op=="+")return this.op+this.right.toString();if(this.op=="NOT")return this.op+"("+this.right.toString()+")";else if(this.op==null)return"("+this.right.toString()+")"};yy.UniOp.prototype.findAggregator=function(query){if(this.right.findAggregator)this.right.findAggregator(query)};yy.UniOp.prototype.toType=function(tableid){if(this.op=="-")return"number";if(this.op=="+")return"number";if(this.op=="NOT")return"boolean"};yy.UniOp.prototype.toJavaScript=function(context,tableid,defcols){if(this.op=="-")return"(-("+this.right.toJavaScript(context,tableid,defcols)+"))";if(this.op=="+")return"("+this.right.toJavaScript(context,tableid,defcols)+")";if(this.op=="NOT")return"!("+this.right.toJavaScript(context,tableid,defcols)+")";else if(this.op==null)return"("+this.right.toJavaScript(context,tableid,defcols)+")"};yy.Column=function(params){return yy.extend(this,params)};yy.Column.prototype.toString=function(){var s;if(this.columnid==+this.columnid){s="["+this.columnid+"]"}else{s=this.columnid}if(this.tableid){if(+this.columnid==this.columnid){s=this.tableid+s}else{s=this.tableid+"."+s}if(this.databaseid){s=this.databaseid+"."+s}}return s};yy.Column.prototype.toJavaScript=function(context,tableid,defcols){var s="";if(!this.tableid&&tableid==""&&!defcols){if(this.columnid!="_"){s=context+"['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context}}}else{if(context=="g"){s="g['"+this.nick+"']"}else if(this.tableid){if(this.columnid!="_"){s=context+"['"+this.tableid+"']['"+this.columnid+"']"}else{if(context=="g"){s="g['_']"}else{s=context+"['"+this.tableid+"']"}}}else if(defcols){var tbid=defcols[this.columnid];if(tbid=="-"){throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables')}else if(tbid){if(this.columnid!="_"){s=context+"['"+tbid+"']['"+this.columnid+"']"}else{s=context+"['"+tbid+"']"}}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}else if(tableid==-1){s=context+"['"+this.columnid+"']"}else{if(this.columnid!="_"){s=context+"['"+(this.tableid||tableid)+"']['"+this.columnid+"']"}else{s=context+"['"+(this.tableid||tableid)+"']"}}}return s};yy.AggrValue=function(params){return yy.extend(this,params)};yy.AggrValue.prototype.toString=function(){var s="";if(this.aggregatorid=="REDUCE")s+=L(this.funcid)+"(";else s+=this.aggregatorid+"(";if(this.distinct)s+=K("DISTINCT")+" ";if(this.expression)s+=this.expression.toString();s+=")";if(this.over)s+=" "+this.over.toString();return s};yy.AggrValue.prototype.findAggregator=function(query){var colas=escapeq(this.toString())+":"+query.selectGroup.length;var found=false;if(!found){if(!this.nick){this.nick=colas;var found=false;for(var i=0;i-1)return"number";if(["ARRAY"].indexOf(this.aggregatorid)>-1)return"array";if(["FIRST","LAST"].indexOf(this.aggregatorid)>-1)return this.expression.toType()};yy.AggrValue.prototype.toJavaScript=function(context,tableid,defcols){var colas=this.nick;if(typeof colas=="undefined")colas=this.toString();return"g['"+colas+"']"};yy.OrderExpression=function(params){return yy.extend(this,params)};yy.OrderExpression.prototype.toString=function(){var s=this.expression.toString();if(this.order)s+=" "+this.order.toString();if(this.nocase)s+=" "+K("COLLATE")+" "+K("NOCASE");return s};yy.GroupExpression=function(params){return yy.extend(this,params)};yy.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.FromData=function(params){return yy.extend(this,params)};yy.FromData.prototype.toString=function(){if(this.data)return K("DATA")+"("+(Math.random()*1e16|0)+")";else return"?"};yy.FromData.prototype.toJavaScript=function(){};yy.Select.prototype.exec=function(params,cb){if(this.preparams)params=this.preparams.concat(params);var databaseid=alasql.useid;db=alasql.databases[databaseid];var sql=this.toString();var hh=hash(sql);var statement=this.compile(databaseid);if(!statement)return;statement.sql=sql;statement.dbversion=db.dbversion;if(db.sqlCacheSize>alasql.MAXSQLCACHESIZE){db.resetSqlCache()}db.sqlCacheSize++;db.sqlCache[hh]=statement;var res=alasql.res=statement(params,cb);return res};yy.Select.prototype.Select=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.columns=[];args.forEach(function(arg){if(typeof arg=="string"){self.columns.push(new yy.Column({columnid:arg}))}else if(typeof arg=="function"){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(arg);self.columns.push(new yy.Column({columnid:"*",func:arg,param:pari}))}else{}});return self};yy.Select.prototype.From=function(tableid){var self=this;if(!self.from)self.from=[];if(tableid instanceof Array){var pari=0;if(self.preparams){pari=self.preparams.length}else{self.preparams=[]}self.preparams.push(tableid);self.from.push(new yy.ParamValue({param:pari}))}else if(typeof tableid=="string"){self.from.push(new yy.Table({tableid:tableid}))}else{throw new Error("Unknown arguments in From() function")}return self};yy.Select.prototype.OrderBy=function(){var self=this;var agrs=[];self.order=[];if(arguments.length==0){args=["_"]}else if(arguments.length>1){args=Array.prototype.slice.call(arguments)}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}if(args.length>0){args.forEach(function(arg){var expr=new yy.Column({columnid:arg});if(typeof arg=="function"){expr=arg}self.order.push(new yy.OrderExpression({expression:expr,direction:"ASC"}))})}return self};yy.Select.prototype.Top=function(topnum){var self=this;self.top=new yy.NumValue({value:topnum});return self};yy.Select.prototype.GroupBy=function(){var self=this;var agrs=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments) +}else if(arguments.length==1){if(arguments[0]instanceof Array){args=arguments[0]}else{args=[arguments[0]]}}else{throw new Error("Wrong number of arguments of Select() function")}self.group=[];args.forEach(function(arg){var expr=new yy.Column({columnid:arg});self.group.push(expr)});return self};yy.Select.prototype.Where=function(expr){var self=this;if(typeof expr=="function"){self.where=expr}return self};yy.FuncValue=function(params){return yy.extend(this,params)};yy.FuncValue.prototype.toString=function(){var s="";if(alasql.fn[this.funcid])s+=this.funcid;else if(alasql.aggr[this.funcid])s+=this.funcid;else if(alasql.stdlib[this.funcid.toUpperCase()]||alasql.stdfn[this.funcid.toUpperCase()])s+=this.funcid.toUpperCase();s+="(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toString()}).join(",")}s+=")";if(this.as)s+=" AS "+this.as.toString();return s};yy.FuncValue.prototype.findAggregator=function(query){if(this.args&&this.args.length>0){this.args.forEach(function(arg){if(arg.findAggregator)arg.findAggregator(query)})}};yy.FuncValue.prototype.toJavaScript=function(context,tableid,defcols){var s="";var funcid=this.funcid;if(alasql.fn[funcid]){if(this.newid)s+="new ";s+="alasql.fn."+this.funcid+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else if(alasql.stdlib[funcid.toUpperCase()]){if(this.args&&this.args.length>0){s+=alasql.stdlib[funcid.toUpperCase()].apply(this,this.args.map(function(arg){return arg.toJavaScript(context,tableid)}))}else{s+=alasql.stdlib[funcid.toUpperCase()]()}}else if(alasql.stdfn[funcid.toUpperCase()]){if(this.newid)s+="new ";s+="alasql.stdfn."+this.funcid.toUpperCase()+"(";if(this.args&&this.args.length>0){s+=this.args.map(function(arg){return arg.toJavaScript(context,tableid,defcols)}).join(",")}s+=")"}else{}return s};var stdlib=alasql.stdlib={};var stdfn=alasql.stdfn={};stdlib.ABS=function(a){return"Math.abs("+a+")"};stdlib.CLONEDEEP=function(a){return"alasql.utils.cloneDeep("+a+")"};stdlib.IIF=function(a,b,c){if(arguments.length==3){return"(("+a+")?("+b+"):("+c+"))"}else{throw new Error("Number of arguments of IFF is not equals to 3")}};stdlib.IFNULL=function(a,b){return"("+a+"||"+b+")"};stdlib.INSTR=function(s,p){return"(("+s+").indexOf("+p+")+1)"};stdlib.LEN=stdlib.LENGTH=function(s){return"("+s+'+"").length'};stdlib.LOWER=stdlib.LCASE=function(s){return"("+s+").toLowerCase()"};stdlib.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"};stdlib.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"};stdlib.MID=function(a,b,c){if(arguments.length==2)return"("+a+").substr("+b+"-1)";else if(arguments.length==3)return"("+a+").substr("+b+"-1,"+c+")"};stdlib.NULLIF=function(a,b){return"("+a+"=="+b+"?null:"+a+")"};stdlib.POWER=function(a,b){return"Math.pow("+a+","+b+")"};stdlib.RANDOM=function(r){if(arguments.length==0){return"Math.random()"}else{return"(Math.random()*("+r+")|0)"}};stdlib.ROUND=function(s,d){if(arguments.length==2){return"Math.round("+s+"*Math.pow(10,"+d+"))/Math.pow(10,"+d+")"}else{return"Math.round("+s+")"}};stdlib.SQRT=function(s){return"Math.sqrt("+s+")"};stdlib.TRIM=function(s){return s+".trim()"};stdlib.UPPER=stdlib.UCASE=function(s){return"("+s+").toUpperCase()"};alasql.aggr.GROUP_CONCAT=function(v,s){if(typeof s=="undefined")return v;else return s+","+v};yy.CaseValue=function(params){return yy.extend(this,params)};yy.CaseValue.prototype.toString=function(){var s="CASE ";if(this.expression)s+=this.expression.toString();if(this.whens){s+=this.whens.map(function(w){return" WHEN "+w.when.toString()+" THEN "+w.then.toString()}).join()}s+=" END";return s};yy.CaseValue.prototype.findAggregator=function(query){if(this.expression&&this.expression.findAggregator)this.expression.findAggregator(query);if(this.whens&&this.whens.length>0){this.whens.forEach(function(w){if(w.when.findAggregator)w.when.findAggregator(query);if(w.then.findAggregator)w.then.findAggregator(query)})}};yy.CaseValue.prototype.toJavaScript=function(context,tableid,defcols){var s="(function("+context+",params,alasql){var r;";if(this.expression){s+="v="+this.expression.toJavaScript(context,tableid,defcols)+";";s+=(this.whens||[]).map(function(w){return" if(v=="+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}else{s+=(this.whens||[]).map(function(w){return" if("+w.when.toJavaScript(context,tableid,defcols)+") {r="+w.then.toJavaScript(context,tableid,defcols)+"}"}).join(" else ");if(this.elses)s+=" else {r="+this.elses.toJavaScript(context,tableid,defcols)+"}"}s+="return r;})("+context+",params,alasql)";return s};yy.Json=function(params){return yy.extend(this,params)};yy.Json.prototype.toString=function(){var s="@";s+=JSONtoString(this.value);s+="";return s};var JSONtoString=alasql.utils.JSONtoString=function(obj){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s=obj;else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoString(b)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoString(obj[k]);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toString){s=obj.toString()}else{throw new Error("1Can not show JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not show JSON object "+JSON.stringify(obj))}return s};function JSONtoJavaScript(obj,context,tableid,defcols){var s="";if(typeof obj=="string")s='"'+obj+'"';else if(typeof obj=="number")s="("+obj+")";else if(typeof obj=="boolean")s=obj;else if(typeof obj=="object"){if(obj instanceof Array){s+="["+obj.map(function(b){return JSONtoJavaScript(b,context,tableid,defcols)}).join(",")+"]"}else if(!obj.toJavaScript||obj instanceof yy.Json){s="{";var ss=[];for(var k in obj){var s1="";if(typeof k=="string")s1+='"'+k+'"';else if(typeof k=="number")s1+=k;else if(typeof k=="boolean")s1+=k;else{throw new Error("THis is not ES6... no expressions on left side yet")}s1+=":"+JSONtoJavaScript(obj[k],context,tableid,defcols);ss.push(s1)}s+=ss.join(",")+"}"}else if(obj.toJavaScript){s=obj.toJavaScript(context,tableid,defcols)}else{throw new Error("1Can not parse JSON object "+JSON.stringify(obj))}}else{throw new Error("2Can not parse JSON object "+JSON.stringify(obj))}return s}yy.Json.prototype.toJavaScript=function(context,tableid,defcols){return JSONtoJavaScript(this.value,context,tableid,defcols)};yy.Convert=function(params){return yy.extend(this,params)};yy.Convert.prototype.toString=function(){var s="CONVERT(";s+=this.dbtypeid;if(typeof this.dbsize!="undefined"){s+="("+this.dbsize;if(this.dbprecision)s+=","+dbprecision;s+=")"}s+=","+this.expression.toString();if(this.style)s+=","+this.style;s+=")";return s};yy.Convert.prototype.toJavaScript=function(context,tableid,defcols){return"alasql.stdfn.CONVERT("+this.expression.toJavaScript(context,tableid,defcols)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})";throw new Error("There is not such type conversion for "+this.toString())};alasql.stdfn.CONVERT=function(value,args){var val=value;if(args.style){var t;if(/\d{8}/.test(val))t=new Date(+val.substr(0,4),+val.substr(4,2)-1,+val.substr(6,2));else t=new Date(val);if(args.style==1){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==2){val=("0"+t.getYear()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==3){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getYear()).substr(-2)}else if(args.style==4){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getYear()).substr(-2)}else if(args.style==5){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==6){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+("0"+t.getYear()).substr(-2)}else if(args.style==7){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+("0"+t.getYear()).substr(-2)}else if(args.style==8){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==10){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+("0"+t.getYear()).substr(-2)}else if(args.style==11){val=("0"+t.getYear()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==12){val=("0"+t.getYear()).substr(-2)+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else if(args.style==101){val=("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)+"/"+t.getFullYear()}else if(args.style==102){val=t.getFullYear()+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+("0"+t.getDate()).substr(-2)}else if(args.style==103){val=("0"+t.getDate()).substr(-2)+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+t.getFullYear()}else if(args.style==104){val=("0"+t.getDate()).substr(-2)+"."+("0"+(t.getMonth()+1)).substr(-2)+"."+t.getFullYear()}else if(args.style==105){val=("0"+t.getDate()).substr(-2)+"-"+("0"+(t.getMonth()+1)).substr(-2)+"-"+t.getFullYear()}else if(args.style==106){val=("0"+t.getDate()).substr(-2)+" "+t.toString().substr(4,3).toLowerCase()+" "+t.getFullYear()}else if(args.style==107){val=t.toString().substr(4,3)+" "+("0"+t.getDate()).substr(-2)+","+t.getFullYear()}else if(args.style==108){val=("0"+t.getHours()).substr(-2)+":"+("0"+(t.getMinutes()+1)).substr(-2)+":"+("0"+t.getSeconds()).substr(-2)}else if(args.style==110){val=("0"+(t.getMonth()+1)).substr(-2)+"-"+("0"+t.getDate()).substr(-2)+"-"+t.getFullYear()}else if(args.style==111){val=t.getFullYear()+"/"+("0"+(t.getMonth()+1)).substr(-2)+"/"+("0"+t.getDate()).substr(-2)}else if(args.style==112){val=t.getFullYear()+("0"+(t.getMonth()+1)).substr(-2)+("0"+t.getDate()).substr(-2)}else{throw new Error("The CONVERT style "+args.style+" is not realized yet.")}}if(args.dbtypeid=="Date"){return new Date(val)}else if(args.dbtypeid.toUpperCase()=="DATE"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);return s}else if(args.dbtypeid=="DATETIME"){var d=new Date(val);var s=d.getFullYear()+"."+("0"+(d.getMonth()+1)).substr(-2)+"."+("0"+d.getDate()).substr(-2);s+=" "+("0"+d.getHours()).substr(-2)+":"+("0"+d.getMinutes()).substr(-2)+":"+("0"+d.getSeconds()).substr(-2);s+="."+("00"+d.getMilliseconds()).substr(-3);return s}else if(args.dbtypeid.toUpperCase()=="STRING"){return""+val}else if(args.dbtypeid.toUpperCase()=="NUMBER"||args.dbtypeid=="FLOAT"){return+val}else if(args.dbtypeid.toUpperCase()=="MONEY"){var m=+val;return(m|0)+m*100%100/100}else if(args.dbtypeid.toUpperCase()=="BOOLEAN"){return!!val}else if(args.dbtypeid.toUpperCase()=="INT"){return val|0}else if(args.dbtypeid.toUpperCase()=="VARCHAR"||args.dbtypeid=="NVARCHAR"){if(args.dbsize)return(""+val).substr(0,args.dbsize);else return""+val}else if(args.dbtypeid.toUpperCase()=="CHAR"||args.dbtypeid=="NCHAR"){return(val+new Array(args.dbsize+1).join(" ")).substr(0,args.dbsize)}};yy.ColumnDef=function(params){return yy.extend(this,params)};yy.ColumnDef.prototype.toString=function(){var s=this.columnid;if(this.dbtypeid)s+=" "+this.dbtypeid;if(this.dbsize){s+="("+this.dbsize;if(this.dbprecision)s+=","+this.dbprecision;s+=")"}if(this.primarykey)s+=" PRIMARY KEY";if(this.notnull)s+=" NOT NULL";return s};yy.CreateTable=function(params){return yy.extend(this,params)};yy.CreateTable.prototype.toString=function(){var s=K("CREATE");if(this.temporary)s+=" "+K("TEMPORARY");if(this.view)s+=" "+K("VIEW");else s+=" "+K("TABLE");if(this.ifnotexists)s+=" "+K("IF")+" "+K("NOT")+" "+K("EXISTS");s+=" "+this.table.toString();if(this.viewcolumns){s+="("+this.viewcolumns.map(function(vcol){return vcol.toString()}).join(",")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);else{var ss=this.columns.map(function(col){return col.toString()});s+=" ("+NL()+ID()+ss.join(","+NL()+ID())+")"}if(this.view&&this.select){s+=" AS "+this.select.toString()}return s};yy.CreateTable.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.table.databaseid||databaseid];var tableid=this.table.tableid;if(!tableid){throw new Error("Table name is not defined")}var columns=this.columns;var constraints=this.constraints||[];if(this.ifnotexists&&db.tables[tableid])return 0;if(db.tables[tableid]){throw new Error("Can not create table '"+tableid+"', because it already exists in the database '"+db.databaseid+"'")}var table=db.tables[tableid]=new alasql.Table;var ss=[];if(this.columns){this.columns.forEach(function(col){var dbtypeid=col.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();var newcol={columnid:col.columnid,dbtypeid:dbtypeid};if(col.default){ss.push("'"+col.columnid+"':"+col.default.toJavaScript())}table.columns.push(newcol);table.xcolumns[newcol.columnid]=newcol;if(col.primarykey){var pk=table.pk={};pk.columns=[col.columnid];pk.onrightfns="r['"+col.columnid+"']";pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}})}table.defaultfns=ss.join(",");constraints.forEach(function(con){if(con.type=="PRIMARY KEY"){if(table.pk){throw new Error("Primary key already exists")}var pk=table.pk={};pk.columns=con.columns;pk.onrightfns=pk.columns.map(function(columnid){return"r['"+columnid+"']"}).join("+'`'+");pk.onrightfn=new Function("r","return "+pk.onrightfns);pk.hh=hash(pk.onrightfns);table.indices[pk.hh]={}}});if(this.view&&this.viewcolumns){var self=this;this.viewcolumns.forEach(function(vcol,idx){self.select.columns[idx].as=vcol.columnid})}if(db.engineid){return alasql.engines[db.engineid].createTable(this.table.databaseid||databaseid,tableid,this.ifnotexists,cb)}table.insert=function(r){if(this.pk){var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]!="undefined"){throw new Error("Cannot insert record, because it already exists in primary key")}else{table.data.push(r);this.indices[pk.hh][addr]=r}}else{table.data.push(r)}};table.delete=function(i){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined}}};table.deleteall=function(){this.data.length=0;if(this.pk){this.indices[this.pk.hh]={}}};table.update=function(assignfn,i,params){if(this.pk){var r=this.data[i];var pk=this.pk;var addr=pk.onrightfn(r,params);if(typeof this.indices[pk.hh][addr]=="undefined"){throw new Error("Something wrong with index on table")}else{this.indices[pk.hh][addr]=undefined;assignfn(r,params,alasql);var newaddr=pk.onrightfn(r);if(typeof this.indices[pk.hh][newaddr]!="undefined"){throw new Error("Record already exists")}else{this.indices[pk.hh][newaddr]=r}}}else{assignfn(this.data[i],params,alasql)}};if(this.view&&this.select){table.view=true;table.select=this.select.compile(this.table.databaseid||databaseid)}if(cb)cb(1);return 1};alasql.fn.Date=Object;alasql.fn.Date=Date;alasql.fn.Number=Number;alasql.fn.String=String;alasql.fn.Boolean=Boolean;stdfn.EXTEND=alasql.utils.extend;stdfn.CHAR=String.fromCharCode.bind(String);stdfn.ASCII=function(a){return a.charCodeAt(0)};stdfn.COALESCE=function(){for(var i=0;i0){for(var i=0,ilen=table.data.length;i0){for(var i=0,ilen=table.data.length;i=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[table.xcolumns[col.columnid].dbtypeid]){q+="(new "+table.xcolumns[col.columnid].dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{if(values instanceof Array&&table.columns&&table.columns.length>0){table.columns.forEach(function(col,idx){var q="'"+col.columnid+"':";if(["INT","FLOAT","NUMBER","MONEY"].indexOf(col.dbtypeid)>=0){q+="+"+values[idx].toJavaScript()}else if(alasql.fn[col.dbtypeid]){q+="(new "+col.dbtypeid+"(";q+=values[idx].toJavaScript();q+="))"}else{q+=values[idx].toJavaScript()}ss.push(q)})}else{sw=JSONtoJavaScript(values)}}if(db.tables[tableid].defaultfns)ss.unshift(db.tables[tableid].defaultfns);if(sw){s+="a="+sw+";"}else{s+="a={"+ss.join(",")+"};"}if(db.tables[tableid].insert){s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].insert(a);"}else{s+="aa.push(a);"}});s33=s3+s;if(db.tables[tableid].insert){}else{s+="alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data="+"alasql.databases['"+databaseid+"'].tables['"+tableid+"'].data.concat(aa);"}s+="return "+self.values.length;var insertfn=new Function("db, params, alasql",s3+s)}else if(this.select){selectfn=this.select.compile(databaseid);if(db.engineid&&alasql.engines[db.engineid].intoTable){var statement=function(params,cb){var aa=selectfn(params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res};return statement}else{var insertfn=function(db,params,alasql){var res=selectfn(params);db.tables[tableid].data=db.tables[tableid].data.concat(res);return res.length}}}else if(this.default){var insertfns="db.tables['"+tableid+"'].data.push({"+table.defaultfns+"});return 1;";var insertfn=new Function("db,params,alasql",insertfns)}else{throw new Error("Wrong INSERT parameters")}if(db.engineid&&alasql.engines[db.engineid].intoTable&&alasql.options.autocommit){var statement=function(params,cb){var aa=new Function("db,params",s33+"return aa;")(db,params);var res=alasql.engines[db.engineid].intoTable(db.databaseid,tableid,aa,null,cb);return res}}else{var statement=function(params,cb){var db=alasql.databases[databaseid];if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var res=insertfn(db,params,alasql);if(alasql.options.autocommit&&db.engineid){alasql.engines[db.engineid].saveTableData(databaseid,tableid)}if(cb)cb(res);return res}}return statement};yy.Insert.prototype.execute=function(databaseid,params,cb){return this.compile(databaseid)(params,cb)};yy.Delete=function(params){return yy.extend(this,params)};yy.Delete.prototype.toString=function(){var s="DELETE FROM "+this.table.toString();if(this.where)s+=" WHERE "+this.where.toString();return s};yy.Delete.prototype.compile=function(databaseid){databaseid=this.table.databaseid||databaseid;var tableid=this.table.tableid;var statement;var db=alasql.databases[databaseid];if(this.where){wherefn=new Function("r,params","return ("+this.where.toJavaScript("r","")+")");statement=function(params,cb){if(db.engineid&&alasql.engines[db.engineid].deleteFromTable){return alasql.engines[db.engineid].deleteFromTable(databaseid,tableid,wherefn,params,cb)}if(alasql.options.autocommit&&db.engineid&&db.engineid=="LOCALSTORAGE"){alasql.engines[db.engineid].loadTableData(databaseid,tableid)}var table=db.tables[tableid];var orignum=table.data.length;var newtable=[];for(var i=0,ilen=table.data.length;i0){s+="("+this.args.map(function(arg){return arg.toString()}).join(", ")+")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.CreateDatabase.prototype.execute=function(databaseid,params,cb){var args;if(this.args&&this.args.length>0){args=this.args.map(function(arg){return new Function("params","return "+arg.toJavaScript())(params)})}if(this.engineid){var res=alasql.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,cb);return res}else{var dbid=this.databaseid;if(alasql.databases[dbid]){throw new Error("Database '"+dbid+"' already exists")}var a=new alasql.Database(dbid);var res=1;if(cb)return cb(res);return res}};yy.AttachDatabase=function(params){return yy.extend(this,params)};yy.AttachDatabase.prototype.toString=function(){var s=K("ATTACH");if(this.engineid)s+=" "+L(this.engineid);s+=" "+K("DATABASE")+" "+L(this.databaseid);if(args){s+="(";if(args.length>0){s+=args.map(function(arg){return arg.toString()}).join(", ")}s+=")"}if(this.as)s+=" "+K("AS")+" "+L(this.as);return s};yy.AttachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.engines[this.engineid]){throw new Error('Engine "'+this.engineid+'" is not defined.')}var res=alasql.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,params,cb);return res};yy.DetachDatabase=function(params){return yy.extend(this,params)};yy.DetachDatabase.prototype.toString=function(){var s=K("DETACH");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DetachDatabase.prototype.execute=function(databaseid,params,cb){if(!alasql.databases[this.databaseid].engineid){throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.')}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.UseDatabase=function(params){return yy.extend(this,params)};yy.UseDatabase.prototype.toString=function(){return K("USE")+" "+K("DATABASE")+" "+L(this.databaseid)};yy.UseDatabase.prototype.execute=function(databaseid,params,cb){var dbid=this.databaseid;if(!alasql.databases[dbid]){throw new Error("Database '"+dbid+"' does not exist")}alasql.use(dbid);var res=1;if(cb)cb(res);return res};yy.DropDatabase=function(params){return yy.extend(this,params)};yy.DropDatabase.prototype.toString=function(){var s=K("DROP");if(this.ifexists)s+=" "+K("IF")+" "+K("EXISTS");s+=" "+K("DATABASE")+" "+L(this.databaseid);return s};yy.DropDatabase.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,cb)}var res;var dbid=this.databaseid;if(dbid==alasql.DEFAULTDATABASEID){throw new Error("Drop of default database is prohibited")}if(!alasql.databases[dbid]){if(!this.ifexists){throw new Error("Database '"+dbid+"' does not exist")}else{res=0}}else{if(alasql.databases[dbid].engineid){throw new Error("Cannot drop database '"+dbid+"', because it is attached. Detach it.")}delete alasql.databases[dbid];if(dbid==alasql.useid){alasql.use()}res=1}if(cb)cb(res);return res};yy.Declare=function(params){return yy.extend(this,params)};yy.Declare.prototype.toString=function(){var s=K("DECLARE")+" ";if(this.declares&&this.declares.length>0){s=this.declares.map(function(declare){var s="";s+="@"+L(declare.variable)+" ";s+=declare.dbtypeid;if(this.dbsize)s+="("+N(this.dbsize);if(this.dbprecision)s+=","+N(this.dbprecision);s+=")";if(declare.expression)s+=" = "+declare.expression.toString();return s}).join(",")}return s};yy.Declare.prototype.execute=function(databaseid,params,cb){var res=1;if(this.declares&&this.declares.length>0){this.declares.map(function(declare){var dbtypeid=declare.dbtypeid;if(!alasql.fn[dbtypeid])dbtypeid=dbtypeid.toUpperCase();alasql.declares[declare.variable]={dbtypeid:dbtypeid,dbsize:declare.dbsize,dbprecision:declare.dbprecision};if(declare.expression){alasql.vars[declare.variable]=new Function("params,alasql","return "+declare.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[declare.variable]){alasql.vars[declare.variable]=alasql.stdfn.CONVERT(alasql.vars[declare.variable],alasql.declares[declare.variable])}}})}if(cb)res=cb(res);return res};yy.ShowDatabases=function(params){return yy.extend(this,params)};yy.ShowDatabases.prototype.toString=function(){var s=K("SHOW")+" "+K("DATABASES");if(this.like)s+="LIKE "+this.like.toString();return s};yy.ShowDatabases.prototype.execute=function(databaseid,params,cb){if(this.engineid){return alasql.engines[this.engineid].showDatabases(this.like,cb)}else{var self=this;var res=[];for(dbid in alasql.databases){res.push({databaseid:dbid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.databaseid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res}};yy.ShowTables=function(params){return yy.extend(this,params)};yy.ShowTables.prototype.toString=function(){var s=K("SHOW")+" "+K("TABLES");if(this.databaseid)s+=" FROM "+this.databaseid;if(this.like)s+=" "+K("LIKE")+" "+this.like.toString();return s};yy.ShowTables.prototype.execute=function(databaseid,params,cb){var db=alasql.databases[this.databaseid||databaseid];var self=this;var res=[];for(tableid in db.tables){res.push({tableid:tableid})}if(self.like&&res&&res.length>0){res=res.filter(function(d){return d.tableid.match(new RegExp(self.like.value.replace(/\%/g,".*"),"g"))})}if(cb)cb(res);return res};yy.ShowColumns=function(params){return yy.extend(this,params)};yy.ShowColumns.prototype.toString=function(){var s=K("SHOW")+" "+K("COLUMNS");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowColumns.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table&&table.columns){var res=table.columns.map(function(col){return{columnid:col.columnid,dbtypeid:col.dbtypeid,dbsize:col.dbsize}});return res}else{return[]}};yy.ShowIndex=function(params){return yy.extend(this,params)};yy.ShowIndex.prototype.toString=function(){var s=K("SHOW")+" "+K("INDEX");if(this.table.tableid)s+=" "+K("FROM")+" "+this.table.tableid;if(this.databaseid)s+=" "+K("FROM")+" "+this.databaseid;return s};yy.ShowIndex.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;var res=[];if(table&&table.indices){for(var ind in table.indices){res.push({hh:ind,len:Object.keys(table.indices[ind]).length})}}return res};yy.ShowCreateTable=function(params){return yy.extend(this,params)};yy.ShowCreateTable.prototype.toString=function(){var s=K("SHOW")+" "+K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid);if(this.databaseid)s+=" "+K("FROM")+" "+L(this.databaseid);return s};yy.ShowCreateTable.prototype.execute=function(databaseid){var db=alasql.databases[this.databaseid||databaseid];var table=db.tables[this.table.tableid];var self=this;if(table){var s=K("CREATE")+" "+K("TABLE")+" "+L(this.table.tableid)+" (";var ss=[];if(table.columns){table.columns.forEach(function(col){var a=L(col.columnid)+" "+K(col.dbtypeid);if(col.dbsize)a+="("+N(col.dbsize)+")";if(col.primarykey)a+=" "+K("PRIMARY")+" "+K("KEY");ss.push(a)});s+=ss.join(", ")}s+=")";return s}else{throw new Error('There is no such table "'+this.table.tableid+'"')}};yy.SetVariable=function(params){return yy.extend(this,params)};yy.SetVariable.prototype.toString=function(){var s=K("SET")+" ";if(typeof this.value!="undefined")s+=K(this.variable.toUpperCase())+" "+(this.value?"ON":"OFF");if(this.expression)s+="@"+L(this.variable)+" = "+this.expression.toString();return s};yy.SetVariable.prototype.execute=function(databaseid,params,cb){if(typeof this.value!="undefined"){var val=this.value;if(val=="ON")val=true;else if(val=="OFF")val=false;alasql.options[this.variable]=val}else if(this.expression){var res=new Function("params,alasql","return "+this.expression.toJavaScript("","",null))(params,alasql);if(alasql.declares[this.variable]){res=alasql.stdfn.CONVERT(res,alasql.declares[this.variable])}if(this.props&&this.props.length>0){var fs="alasql.vars['"+this.variable+"']";fs+=this.props.map(function(prop){if(typeof prop=="string"){return"['"+prop+"']"}else if(typeof prop=="number"){return"["+prop+"]"}else{return"["+prop.toJavaScript()+"]"}}).join();new Function("value,alasql",fs+"=value")(res,alasql)}else{alasql.vars[this.variable]=res}}var res=1;if(cb)res=cb(res);return res};alasql.test=function(name,times,fn){if(arguments.length==0){alasql.log(alasql.con.results);return}else if(arguments.length==1){var tm=Date.now();fn();alasql.con.log(Date.now()-tm);return}if(arguments.length==2){fn=times;times=1}var tm=Date.now();for(var i=0;i",sql);if(res instanceof Array){if(console.table){console.table(res)}else{console.log(JSONtoString(res))}}else{console.log(JSONtoString(res))}}else{var el;if(target=="output"){el=document.getElementsByTagName("output")[0]}else{if(typeof target=="string"){el=document.getElementById(target)}else{el=target}}var s="";if(typeof sql=="string"&&alasql.options.logprompt){s+="

    - - - -