diff --git a/DynamicBibleIonic/.sourcemaps/main.js.map b/DynamicBibleIonic/.sourcemaps/main.js.map index cbff6586..eb1a772d 100644 --- a/DynamicBibleIonic/.sourcemaps/main.js.map +++ b/DynamicBibleIonic/.sourcemaps/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/pages/search/search.ts","../../node_modules/@angular/core/esm5 lazy","../../src lazy","../../src/components/strongs-modal/strongs-modal.ts","../../src/services/strongs-service.ts","../../src/services/pages-service.ts","../../src/pages/settings/settings.ts","../../src/pages/help/help.ts","../../src/components/verse-picker/verse-picker.ts","../../src/app/main.ts","../../src/app/app.module.ts","../../src/libs/Reference.ts","../../src/app/app.component.ts","../../src/components/component-loader/component-loader.ts","../../src/components/passage/passage.ts","../../src/services/bible-service.ts","../../src/components/strongs/strongs.ts","../../src/components/words/words.ts","../../src/services/word-service.ts","../../src/components/error/error.ts","../../src/components/error-message/error-message.ts","../../src/services/profile-service.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Type, Component, OnInit } from '@angular/core';\nimport { Loading, LoadingController, ModalController, NavParams, AlertController, MenuController } from 'ionic-angular';\nimport { Storage } from '@ionic/storage';\n\nimport { StrongsModal } from '../../components/strongs-modal/strongs-modal';\nimport { PagesService } from '../../services/pages-service';\n\nimport { ProfileService, User } from './../../services/profile-service';\nimport { Reference } from '../../libs/Reference';\nimport { VersePickerModal } from '../../components/verse-picker/verse-picker';\n\n@Component({\n templateUrl: 'search.html'\n})\nexport class SearchPage implements OnInit\n{\n searchQuery = '';\n last: CardItem;\n loader: Loading;\n title: string;\n\n constructor(\n private pagesService: PagesService\n , private alertCtrl: AlertController\n , private menu: MenuController\n , public loadingCtrl: LoadingController\n , public modalCtrl: ModalController\n , public profileService: ProfileService\n , public params: NavParams\n )\n {\n }\n\n ngOnInit(): void\n {\n let t = this.profileService.profile();\n // Check if there is a profile saved in local storage\n this.loader = this.loadingCtrl.create({ content: 'Loading Page...' });\n this.loader.present().then(() =>\n {\n this.initializeItems(t);\n\n this.loader.dismiss();\n });\n }\n \n initializeItems(u: User)\n {\n // migrate old way of storing card items to the new.\n let has_migrated = false;\n for (let i in u.items)\n {\n if (u.items.hasOwnProperty(i))\n {\n let ci = u.items[i];\n if (ci['data'] !== undefined)\n {\n if (ci['data'].qry !== undefined)\n u.items[i] = { qry: ci['data'].qry, dict: ci.dict, type: ci.type };\n else if (ci['data'].ref !== undefined)\n u.items[i] = { qry: ci['data'].ref, dict: ci.dict, type: ci.type };\n else if (ci['data'].word !== undefined)\n u.items[i] = { qry: ci['data'].word, dict: ci.dict, type: ci.type };\n else if (ci['data'].sn !== undefined)\n u.items[i] = {\n qry: ci['data'].sn,\n dict: ci['prefix'] === 'G' ? 'grk' : 'heb',\n type: ci.type\n };\n\n has_migrated = true;\n }\n }\n }\n\n for (let pg of u.saved_pages)\n {\n for (let i in pg.queries)\n {\n if (pg.queries.hasOwnProperty(i))\n {\n let ci = pg.queries[i];\n if (ci['data'] !== undefined)\n {\n if (ci['data'].qry !== undefined)\n pg.queries[i] = { qry: ci['data'].qry, dict: ci.dict, type: ci.type };\n else if (ci['data'].ref !== undefined)\n pg.queries[i] = { qry: ci['data'].ref, dict: ci.dict, type: ci.type };\n else if (ci['data'].word !== undefined)\n pg.queries[i] = { qry: ci['data'].word, dict: ci.dict, type: ci.type };\n else if (ci['data'].sn !== undefined)\n pg.queries[i] = {\n qry: ci['data'].sn,\n dict: ci['prefix'] === 'G' ? 'grk' : 'heb',\n type: ci.type\n };\n\n has_migrated = true;\n }\n }\n }\n }\n\n // initialize the pages.\n this.pagesService.initializePages(u.saved_pages);\n\n if (this.params.data.queries !== undefined)\n this.profileService.profile().items = this.params.data.queries.slice();\n\n if (this.params.data.title === undefined)\n this.title = 'Search';\n else\n this.title = this.params.data.title;\n\n if (has_migrated)\n this.profileService.save();\n }\n\n save()\n {\n this.profileService.save();\n }\n textSizeChanged()\n {\n this.profileService.textSizeChanged();\n this.save();\n }\n\n actionsMenu()\n {\n this.menu.open('actions');\n }\n\n addPage()\n {\n const alert = this.alertCtrl.create({\n title: 'Save Search as Page',\n inputs: [\n {\n name: 'title',\n placeholder: 'Page Title'\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n handler: (): void =>\n {\n console.log('Cancel clicked');\n }\n },\n {\n text: 'Save',\n handler: data =>\n {\n const p = { queries: this.profileService.profile().items.slice(), title: data.title };\n this.profileService.profile().saved_pages.push(p);\n this.profileService.save();\n this.pagesService.addPage(p);\n }\n }\n ]\n });\n alert.present();\n }\n\n updatePage()\n {\n const page = this.profileService.profile().saved_pages.find(\n i =>\n i.title === this.params.data.title\n );\n page.queries = this.profileService.profile().items.slice();\n this.profileService.save();\n }\n\n setQuery(searchbar)\n {\n this.searchQuery = searchbar.target.value;\n }\n getQuery(searchbar)\n {\n this.updateUIwithItems(this.searchQuery, true);\n }\n\n isError(t: string)\n {\n return t === 'Error';\n }\n isPassage(t: string)\n {\n return t === 'Passage';\n }\n isStrongs(t: string)\n {\n return t === 'Strongs';\n }\n isWords(t: string)\n {\n return t === 'Words';\n }\n\n versePicker()\n {\n const modal = this.modalCtrl.create(VersePickerModal, { onItemClicked: this });\n modal.present();\n }\n\n removeItem(item)\n {\n const idx = this.profileService.profile().items.indexOf(item);\n this.profileService.profile().items.splice(idx, 1);\n\n // save the users settings.\n this.profileService.save();\n }\n addItemToList(item: CardItem)\n {\n if (this.profileService.profile().append_to_bottom)\n {\n if (this.last != null && this.profileService.profile().insert_next_to_item)\n {\n const idx = this.profileService.profile().items.indexOf(this.last);\n this.profileService.profile().items.splice(idx + 1, 0, item);\n } else\n this.profileService.profile().items.push(item);\n }\n else\n {\n if (this.last != null && this.profileService.profile().insert_next_to_item)\n {\n const idx = this.profileService.profile().items.indexOf(this.last);\n this.profileService.profile().items.splice(idx, 0, item);\n } else\n this.profileService.profile().items.unshift(item);\n }\n this.last = null;\n }\n getItemsNextToCard(data: OpenData)\n {\n this.last = data.card;\n this.updateUIwithItems(data.qry, data.from_search_bar);\n }\n \n getItemList(search: string): Promise\n {\n return new Promise((resolve) =>\n {\n const list: CardItem[] = [];\n\n try\n {\n const qs = search.split(';');\n for (let x in qs)\n {\n if (qs.hasOwnProperty(x))\n {\n let q = qs[x].trim();\n if (q !== '')\n {\n // its a search term.\n if (q.search(/[0-9]/i) === -1)\n list.push({ qry: q, dict: 'na', type: 'Words' });\n else if (q.search(/(H|G)[0-9]/i) !== -1)\n {\n // its a strongs lookup\n let dict = q.substring(0, 1);\n\n if (dict.search(/h/i) !== -1)\n dict = 'heb';\n else\n dict = 'grk';\n\n q = q.substring(1, q.length);\n list.push({ qry: q, dict: dict, type: 'Strongs' });\n }\n else\n {\n // its a verse reference.\n if (q.trim() !== '')\n {\n const myref = new Reference(q.trim());\n list.push({ qry: myref.toString(), dict: myref.Section.start.book.book_number > 39 ? 'G' : 'H', type: 'Passage' });\n }\n }\n }\n }\n }\n if (this.profileService.profile().clear_search_after_query)\n $('.searchbar-input').val('');\n\n this.profileService.save();\n }\n catch (error)\n {\n list.push({ qry: error, type: 'Error', dict: 'na' });\n console.log(error);\n }\n\n resolve(list);\n });\n }\n\n updateUIwithItems(search: string, from_search_bar: boolean)\n {\n this.getItemList(search).then(lst =>\n {\n this.loader = this.loadingCtrl.create({ content: 'Looking up Query...' });\n this.loader.present().then(\n () =>\n {\n for (let item of lst)\n {\n if (item.type === 'Strongs' && this.profileService.profile().strongs_modal && !from_search_bar)\n {\n const modal = this.modalCtrl.create(StrongsModal, { sn: parseInt(item.qry), dict: item.dict, onItemClicked: this });\n modal.present();\n } else\n this.addItemToList(item);\n }\n this.loader.dismiss();\n }\n );\n });\n }\n}\n\nexport type OpenData = { card: CardItem, qry: string, from_search_bar: boolean }\n\nexport type CardItem = { qry: string, type: string, dict: string }\n\nclass Item\n{\n id: number;\n data: any;\n type: Type;\n dict: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/search/search.ts","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 148;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/core/esm5 lazy\n// module id = 148\n// module chunks = 0","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 245;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src lazy\n// module id = 245\n// module chunks = 0","import { EventEmitter, Component, Output, OnInit } from '@angular/core';\nimport { Platform, NavParams, ViewController } from 'ionic-angular';\nimport { Reference } from '../../libs/Reference';\nimport { StrongsResult, StrongsService } from '../../services/strongs-service';\n\n@Component({\n selector: 'strongs-modal',\n templateUrl: 'strongs-modal.html',\n providers: [StrongsService]\n})\nexport class StrongsModal implements OnInit\r\n{\n sn: number;\n dict: string;\n item: StrongsResult;\n\n @Output()\n onItemClicked = new EventEmitter();\n\n constructor(private strongsService: StrongsService,\n public platform: Platform,\n public params: NavParams,\n public viewCtrl: ViewController\n )\r\n {\n this.sn = this.params.get('sn') as number;\n this.dict = this.params.get('dict') as string;\n this.onItemClicked.subscribe(item =>\r\n {\n let pg = this.params.get('onItemClicked');\n pg.updateUIwithItems(item, false);\n });\n }\n\n ngOnInit(): void\r\n {\r\n this.strongsService.getResultAsPromise(this.sn, this.dict).then(data => this.item = data);\r\n }\n\r\n dismiss()\r\n {\n this.viewCtrl.dismiss();\n }\n\r\n openItem(p: string)\r\n {\n this.onItemClicked.emit(p);\n this.dismiss();\n }\n\n makePassage(p: string)\r\n {\n return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];\n }\n\n openPassage(p: string)\r\n {\n let ref = this.makePassage(p);\n this.onItemClicked.emit(ref);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/strongs-modal/strongs-modal.ts","/// \r\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\n\r\n@Injectable()\r\nexport class StrongsService\r\n{\r\n result: StrongsResult;\r\n count = 0;\r\n\r\n constructor(private http: Http)\r\n {\r\n }\r\n\r\n getResultAsPromise(sn: number, dict: string): Promise\r\n {\r\n return new Promise((resolve, reject) => { resolve(this.getResult(sn, dict)); });\r\n }\r\n\r\n getResult(sn: number, dict: string): StrongsResult\r\n {\r\n const self = this;\r\n this.result = {\r\n prefix: '',\r\n sn: -1,\r\n strongs: [],\r\n def: null,\r\n rmac: null,\r\n crossrefs: null,\r\n rmaccode: '',\r\n status: 0,\r\n msg: ':)'\r\n };\r\n let url = dict + Math.ceil(sn / 100) + '.json';\r\n if (dict === 'grk')\r\n {\r\n self.result.prefix = 'G';\r\n if (sn > 5624 || sn < 1)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Strong\\'s Number G' + sn + ' is out of range. Strong\\'s numbers range from 1 - 5624 in the New Testament.';\r\n }\r\n }\r\n else\r\n {\r\n self.result.prefix = 'H';\r\n if (sn > 8674 || sn < 1)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Strong\\'s Number H' + sn + ' is out of range. Strong\\'s numbers range from 1 - 8674 in the Old Testament.';\r\n }\r\n }\r\n this.result.sn = sn;\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/strongs/' + url,\r\n dataType: 'json',\r\n success(d: StrongsDefinition[], t, x)\r\n {\r\n self.result.strongs = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve Strong\\'s Data for ' + self.result.prefix + self.result.sn;\r\n }\r\n });\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n self.result.def = self.result.strongs.find(el => (el.i === this.result.prefix + this.result.sn));\r\n self.result.strongs = [];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/strongscr/cr' + url,\r\n dataType: 'json',\r\n success(d: StrongsCrossReference[], t, x)\r\n {\r\n for (let cr of d)\r\n {\r\n if (cr.id.toUpperCase() === self.result.prefix + self.result.sn)\r\n {\r\n self.result.crossrefs = cr;\r\n break;\r\n }\r\n }\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve Strong\\'s Cross References for ' + self.result.prefix + self.result.sn;\r\n }\r\n });\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n if (dict === 'grk')\r\n {\r\n url = 'data/rmac/rs' + (Math.ceil(sn / 1000)) + '.json';\r\n let rmac_cross_references: RMACCrossReference[];\r\n\r\n // rmac is a two get process.\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: RMACCrossReference[], t, x)\r\n {\r\n rmac_cross_references = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // deal with RMAC\r\n let tmp = $.grep(rmac_cross_references, (el, i) => { return el.i === sn + ''; });\r\n if (tmp.length === 0)\r\n return this.result;\r\n\r\n this.result.rmaccode = tmp[0].r;\r\n if (this.result.rmaccode !== undefined)\r\n {\r\n url = `data/rmac/r-${this.result.rmaccode.substring(0, 1)}.json`;\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: RMACDefinition[], t, x)\r\n {\r\n for (let rmac of d)\r\n {\r\n if (rmac.id.toLowerCase() === self.result.rmaccode)\r\n {\r\n self.result.rmac = rmac;\r\n break;\r\n }\r\n }\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n }\r\n }\r\n return this.result;\r\n }\r\n}\r\nexport type StrongsResult =\r\n {\r\n prefix: string,\r\n sn: number,\r\n strongs: StrongsDefinition[],\r\n def: StrongsDefinition,\r\n rmac: RMACDefinition,\r\n crossrefs: StrongsCrossReference,\r\n rmaccode: string,\r\n status: number,\r\n msg: string,\r\n };\r\n\r\ntype StrongsDefinition = { n: number, i: string, tr: string, de: StrongsDefinitionPart[], lemma: string, p: string }\r\ntype StrongsDefinitionPart = { sn: string, w: string }\r\ntype StrongsCrossReference =\r\n {\r\n id: string, // strongs id H1|G1\r\n t: string, // strongs testament grk|heb\r\n d: string, // strongs word/data Aaron {ah-ar-ohn'}\r\n ss: [\r\n {\r\n w: string,\r\n rs: [\r\n { r: string }\r\n ],\r\n }\r\n ],\r\n }\r\n\r\ntype RMACDefinition = { id: string, d: string[] }\r\n\r\ntype RMACCrossReference = { i: string, r: string }\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/strongs-service.ts","import { Injectable } from '@angular/core';\r\nimport { Storage } from '@ionic/storage';\r\nimport { SearchPage } from '../pages/search/search';\r\nimport { SettingsPage } from '../pages/settings/settings';\r\nimport { HelpPage } from '../pages/help/help';\r\n\r\nimport { SavedPage } from './profile-service';\r\n\r\n@Injectable()\r\nexport class PagesService\r\n{\r\n pages: Array<{ title: string, component: any, params: any, icon: string }>;\r\n savedPages: Array<{ title: string, component: any, params: any }>;\r\n\r\n constructor(public local: Storage)\r\n {\r\n this.pages = [\r\n { title: 'Search', component: SearchPage, params: { queries: [], title: 'Search' }, icon: 'search' },\r\n { title: 'Settings', component: SettingsPage, params: {}, icon: 'settings' },\r\n { title: 'Help', component: HelpPage, params: {}, icon: 'help-circle' }\r\n ];\r\n this.savedPages = [];\r\n }\r\n\r\n getMainPages(): Array<{ title: string, component: any }>\r\n {\r\n return this.pages;\r\n }\r\n\r\n getSavedPages(): Array<{ title: string, component: any }>\r\n {\r\n return this.savedPages;\r\n }\r\n\r\n addPage(page: SavedPage)\r\n {\r\n this.savedPages.push({ title: page.title, component: SearchPage, params: { queries: page.queries, title: page.title } });\r\n }\r\n\r\n initializePages(page_array: SavedPage[])\r\n {\r\n this.savedPages = [];\r\n\r\n for (let p of page_array)\r\n {\r\n this.savedPages.push({ title: p.title, component: SearchPage, params: { queries: p.queries, title: p.title } });\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/pages-service.ts","/// \r\nimport { Component } from '@angular/core';\r\nimport { NavController, AlertController } from 'ionic-angular';\r\nimport { Storage } from '@ionic/storage';\r\n\r\nimport { ProfileService, SavedPage } from '../../services/profile-service';\r\n\r\n@Component({\r\n selector: 'settings',\r\n templateUrl: 'settings.html',\r\n})\r\nexport class SettingsPage\r\n{\r\n constructor(\r\n public navCtrl: NavController\r\n , private alertCtrl: AlertController\r\n , public profileService: ProfileService\r\n ) {}\r\n\r\n textSizeChanged()\r\n {\r\n this.profileService.textSizeChanged();\r\n this.save();\r\n }\r\n\r\n save()\r\n {\r\n this.profileService.save()\r\n }\r\n\r\n reset()\r\n {\r\n this.profileService.reset()\r\n }\r\n\r\n removePage(page: SavedPage)\r\n {\r\n let alert = this.alertCtrl.create({\r\n title: 'Confirm Delete',\r\n message: 'Do you want to delete the ' + page.title + ' page?',\r\n buttons: [\r\n {\r\n text: 'Cancel',\r\n role: 'cancel',\r\n handler: () =>\r\n {\r\n console.log('Cancel clicked');\r\n }\r\n },\r\n {\r\n text: 'Ok',\r\n handler: () =>\r\n {\r\n this.profileService.removePage(page);\r\n }\r\n }\r\n ]\r\n });\r\n alert.present();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/settings/settings.ts","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'help',\r\n templateUrl: 'help.html'\r\n})\r\nexport class HelpPage\r\n{\r\n constructor()\r\n {\r\n }\r\n \r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/help/help.ts","import { EventEmitter, Component, Output, OnInit } from '@angular/core';\nimport { Platform, NavParams, ViewController } from 'ionic-angular';\nimport { Book, Reference } from '../../libs/Reference';\n\n@Component({\n selector: 'verse-picker',\n templateUrl: 'verse-picker.html'\n})\nexport class VersePickerModal\n{\n @Output()\n onItemClicked = new EventEmitter();\n books: Array;\n hasBook = false;\n book: Book;\n\n constructor(\n public platform: Platform,\n public params: NavParams,\n public viewCtrl: ViewController\n )\n {\n this.hasBook = false;\n this.books = Reference.Books;\n this.onItemClicked.subscribe(item =>\r\n {\n let pg = this.params.get('onItemClicked');\n pg.updateUIwithItems(item, false);\n });\n }\n\n toBooks()\n {\n this.hasBook = false;\n this.book = null;\n }\n\n dismiss()\n {\n this.viewCtrl.dismiss();\n }\n setBook(book: Book)\n {\n this.hasBook = true;\n this.book = book;\n }\n setChapter(chapter: number)\n {\n // close the control, trigger the passage event.\n this.onItemClicked.emit(this.book.name + ' ' + chapter);\n this.dismiss();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/verse-picker/verse-picker.ts","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\nimport {enableProdMode} from '@angular/core';\r\nenableProdMode();\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/main.ts","import { ProfileService } from './../services/profile-service';\nimport { NgModule, ErrorHandler } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { HttpModule } from '@angular/http';\n\nimport { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';\nimport { IonicStorageModule } from '@ionic/storage';\n\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\n\nimport { MyApp } from './app.component';\n\nimport { SearchPage } from '../pages/search/search';\nimport { SettingsPage } from '../pages/settings/settings';\nimport { HelpPage } from '../pages/help/help';\n\nimport { ComponentLoader } from '../components/component-loader/component-loader';\nimport { Passage } from '../components/passage/passage';\nimport { Strongs } from '../components/strongs/strongs';\nimport { Words } from '../components/words/words';\nimport { Error } from '../components/error/error';\nimport { StrongsModal } from '../components/strongs-modal/strongs-modal';\nimport { ErrorMessage } from '../components/error-message/error-message';\nimport { VersePickerModal } from '../components/verse-picker/verse-picker';\n\nimport { AngularFireModule } from 'angularfire2';\nimport { AngularFireAuthModule } from 'angularfire2/auth';\nimport { AngularFireDatabaseModule } from 'angularfire2/database';\n\nexport const firebaseConfig = {\n apiKey: 'AIzaSyA3UV4s56CV2EumgvZmyJBTyU-vhv0xhc8',\n authDomain: 'dynamicbible-7c6cf.firebaseapp.com',\n databaseURL: 'https://dynamicbible-7c6cf.firebaseio.com',\n projectId: 'dynamicbible-7c6cf',\n // TODO(jwall): What is a storage bucket?\n storageBucket: '',\n messagingSenderId: '200739882604'\n};\n\n@NgModule({\n declarations: [\n MyApp,\n SearchPage,\n SettingsPage,\n HelpPage,\n ComponentLoader,\n Passage,\n Strongs,\n StrongsModal,\n VersePickerModal,\n Words,\n Error,\n ErrorMessage\n ],\n imports: [\n IonicModule.forRoot(MyApp),\n IonicStorageModule.forRoot(),\n BrowserModule,\n HttpModule,\n AngularFireModule.initializeApp(firebaseConfig),\n AngularFireAuthModule,\n AngularFireDatabaseModule,\n ],\n bootstrap: [IonicApp],\n entryComponents: [\n MyApp,\n SearchPage,\n SettingsPage,\n HelpPage,\n Passage,\n Strongs,\n StrongsModal,\n VersePickerModal,\n Words,\n Error,\n ErrorMessage\n ],\n providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }, StatusBar, SplashScreen, ProfileService]\n})\nexport class AppModule { }\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","// This code was written by Jeremy and Jason Wall.\r\n// Feel free to use, and if you can, include a link back to www.walljm.com\r\n// Jason@walljm.com // www.walljm.com\r\n// Jeremy@marzhillstudios.com // jeremy.marzhillstudios.com\r\n\r\nclass StringUtils\r\n{\r\n public static trim(str: string): string\r\n {\r\n return str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n public static ltrim(str: string): string\r\n {\r\n return str.replace(/^\\s+/, '');\r\n }\r\n\r\n public static rtrim(str: string): string\r\n {\r\n return str.replace(/\\s+$/, '');\r\n }\r\n}\r\n\r\nexport class Reference\r\n{\r\n private ref: string;\r\n Section: Section;\r\n errAcc: string;\r\n\r\n constructor(reference: string)\r\n {\r\n this.Section = {\r\n start: {\r\n book: null,\r\n chapter: '',\r\n verse: ''\r\n },\r\n end: {\r\n book: null,\r\n chapter: '',\r\n verse: ''\r\n }\r\n };\r\n this.ref = reference.toLowerCase().trim();\r\n this.parseReference();\r\n\r\n if (this.Section.end.book === null)\r\n {\r\n this.Section.end.book = this.Section.start.book;\r\n }\r\n\r\n if (this.Section.end.chapter === '') this.Section.end.chapter = this.Section.start.chapter;\r\n if (\r\n Number(this.Section.start.verse) > Number(this.Section.end.verse) &&\r\n this.Section.start.chapter === this.Section.end.chapter &&\r\n this.Section.start.book.name === this.Section.end.book.name\r\n ) this.Section.end.verse = this.Section.start.verse;\r\n if (this.Section.start.verse === '') this.Section.start.verse = '1';\r\n if (this.Section.end.verse === '') this.Section.end.verse = '*';\r\n }\r\n\r\n private parseReference()\r\n {\r\n this.parseBook(false);\r\n this.parseFirstNum(false);\r\n const foundFirstVerse = this.ref.search(/:.*-/) !== -1;\r\n this.maybeParseSecondNum(false);\r\n this.maybeParseRangeSep();\r\n const foundSecondBook = this.ref.search(/\\w\\s+\\d/i) !== -1;\r\n\r\n this.maybeParseBook(true);\r\n this.maybeParseFirstNumOrVerse(foundSecondBook, foundFirstVerse, true);\r\n this.maybeParseSecondNum(true);\r\n };\r\n\r\n private parseBook(isEnd?: boolean)\r\n {\r\n this.ref = this.ref.toLowerCase().trim();\r\n\r\n let fbook = this.ref.substring(0, this.ref.search(/\\w\\s+\\d/i) + 1);\r\n if (!fbook)\r\n fbook = this.ref;\r\n this.ref = this.ref.slice(this.ref.search(/\\w\\s+\\d/i) + 1);\r\n if (isEnd) this.Section.end.book = Reference.parseBook(fbook);\r\n else this.Section.start.book = Reference.parseBook(fbook);\r\n }\r\n\r\n private parseFirstNum(isEnd: boolean)\r\n {\r\n let thing = this.Section.start;\r\n if (isEnd) thing = this.Section.end;\r\n\r\n this.ref = StringUtils.ltrim(this.ref);\r\n let found = false;\r\n for (let i = 0; i <= this.ref.length; i++)\r\n {\r\n const c = this.ref.charAt(i);\r\n // Grab characters until we hit a non digit.\r\n if ('0'.charAt(0) <= c && c <= '9'.charAt(0))\r\n {\r\n found = true;\r\n thing.chapter = thing.chapter.concat(c);\r\n }\r\n else\r\n {\r\n // if the chapter is longer than 3 digits it's an error\r\n if (thing.chapter.length > 3)\r\n {\r\n this.errAcc = 'Chapter too long\"' + thing.chapter + '\".';\r\n return;\r\n }\r\n else if (!found)\r\n {\r\n this.errAcc = 'No chapter found' + this.ref;\r\n }\r\n this.ref = this.ref.slice(i);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private parseSecondNum(skipColon?: boolean, isEnd?: boolean)\r\n {\r\n let thing = this.Section.start;\r\n if (isEnd) thing = this.Section.end;\r\n\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (!skipColon)\r\n {\r\n if (this.ref[0] !== ':')\r\n {\r\n return;\r\n }\r\n this.ref = this.ref.slice(1);\r\n }\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (this.ref[0] === '*')\r\n {\r\n thing.verse = '*';\r\n this.ref = this.ref.slice(1);\r\n return;\r\n }\r\n for (let i = 0; i <= this.ref.length; i++)\r\n {\r\n const c = this.ref.charAt(i);\r\n if ('0'.charAt(0) <= c && c <= '9'.charAt(0))\r\n {\r\n thing.verse = thing.verse.concat(c);\r\n }\r\n else\r\n {\r\n if (thing.verse.length > 3)\r\n {\r\n this.errAcc = 'Verse too long \"' + thing.verse + '\".';\r\n return;\r\n }\r\n this.ref = this.ref.slice(i);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private maybeParseBook(isEnd: boolean)\r\n {\r\n return this.maybeDo(() =>\r\n {\r\n if (this.ref.search(/\\w\\s+\\d/i) === -1)\r\n {\r\n this.Section.end.book = this.Section.start.book;\r\n }\r\n else\r\n {\r\n this.parseBook(isEnd);\r\n }\r\n });\r\n };\r\n\r\n private maybeParseSecondNum(isEnd?: boolean)\r\n {\r\n return this.maybeDo(() =>\r\n {\r\n this.parseSecondNum(false, isEnd);\r\n });\r\n };\r\n\r\n private maybeParseFirstNumOrVerse(foundSecondBook: boolean, foundFirstVerse: boolean, isEnd: boolean)\r\n {\r\n const self = this;\r\n return this.maybeDo(() =>\r\n {\r\n if (self.Section.end.book.name === self.Section.start.book.name)\r\n {\r\n if (self.ref.search(/:/) !== -1 || foundSecondBook || !foundFirstVerse)\r\n {\r\n self.parseFirstNum(isEnd);\r\n }\r\n self.parseSecondNum(true, isEnd);\r\n }\r\n });\r\n };\r\n\r\n private maybeParseRangeSep()\r\n {\r\n const self = this;\r\n return this.maybeDo(() =>\r\n {\r\n if (self.ref[0] === '-')\r\n {\r\n self.ref = StringUtils.ltrim(self.ref.slice(1));\r\n }\r\n });\r\n };\r\n\r\n private maybeDo(f)\r\n {\r\n const func = f;\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (this.ref !== '')\r\n {\r\n func();\r\n }\r\n };\r\n\r\n public toString()\r\n {\r\n // get the starting book, chapter, verse\r\n return Reference.toString(this.Section);\r\n };\r\n\r\n public static parseBook(fbook: string): Book\r\n {\r\n if (fbook.search(/\\b(genesis|gen|ge|gn)\\b/i) !== -1)\r\n {\r\n return this.bookName(1);\r\n }\r\n if (fbook.search(/\\b(exodus|ex|exo|exod|exd)\\b/i) !== -1)\r\n {\r\n return this.bookName(2);\r\n }\r\n if (fbook.search(/\\b(leviticus|lev|le|levi|lv)\\b/i) !== -1)\r\n {\r\n return this.bookName(3);\r\n }\r\n if (fbook.search(/\\b(numbers|num|nu|numb|number)\\b/i) !== -1)\r\n {\r\n return this.bookName(4);\r\n }\r\n if (fbook.search(/\\b(deuteronomy|deut|de|dt|deu)\\b/i) !== -1)\r\n {\r\n return this.bookName(5);\r\n }\r\n if (fbook.search(/\\b(joshua|josh|jos)\\b/i) !== -1)\r\n {\r\n return this.bookName(6);\r\n }\r\n if (fbook.search(/\\b(judges|jud|jdg|judg)\\b/i) !== -1)\r\n {\r\n return this.bookName(7);\r\n }\r\n if (fbook.search(/\\b(ruth|ru)\\b/i) !== -1)\r\n {\r\n return this.bookName(8);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(samuel|sa|sam|sml)\\b/i) !== -1)\r\n {\r\n return this.bookName(9);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(samuel|sa|sam|sml)\\b/i) !== -1)\r\n {\r\n return this.bookName(10);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(kings|king|kgs|kn|k|ki)\\b/i) !== -1)\r\n {\r\n return this.bookName(11);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(kings|king|kgs|kn|k|ki)\\b/i) !== -1)\r\n {\r\n return this.bookName(12);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(chronicles|chron|ch|chr)\\b/i) !== -1)\r\n {\r\n return this.bookName(13);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(chronicles|chron|ch|chr)\\b/i) !== -1)\r\n {\r\n return this.bookName(14);\r\n }\r\n if (fbook.search(/\\b(ezra|ezr)\\b/i) !== -1)\r\n {\r\n return this.bookName(15);\r\n }\r\n if (fbook.search(/\\b(nehemiah|neh|ne|nehamiah)\\b/i) !== -1)\r\n {\r\n return this.bookName(16);\r\n }\r\n if (fbook.search(/\\b(esther|est|es|esth)\\b/i) !== -1)\r\n {\r\n return this.bookName(17);\r\n }\r\n if (fbook.search(/\\b(job|jo|jb)\\b/i) !== -1)\r\n {\r\n return this.bookName(18);\r\n }\r\n if (fbook.search(/\\b(psalms|ps|psa|psalm|psm)\\b/i) !== -1)\r\n {\r\n return this.bookName(19);\r\n }\r\n if (fbook.search(/\\b(proverbs|prov|pr|pro|proverb|prv|prvbs)\\b/i) !== -1)\r\n {\r\n return this.bookName(20);\r\n }\r\n if (fbook.search(/\\b(ecclesiastes|eccl|ecc|eccles|ec|ecl|ecclesiaste)\\b/i) !== -1)\r\n {\r\n return this.bookName(21);\r\n }\r\n if (fbook.search(/\\b(song\\sof\\ssolomon|song\\sof\\ssongs|sos|ss|son|so|song|songs)\\b/i) !== -1)\r\n {\r\n return this.bookName(22);\r\n }\r\n if (fbook.search(/\\b(isaiah|is|isah|isai|ia)\\b/i) !== -1)\r\n {\r\n return this.bookName(23);\r\n }\r\n if (fbook.search(/\\b(jerimiah|jeremiah|jer|je|jere)\\b/i) !== -1)\r\n {\r\n return this.bookName(24);\r\n }\r\n if (fbook.search(/\\b(lamentations|lam|la|lamentation)\\b/i) !== -1)\r\n {\r\n return this.bookName(25);\r\n }\r\n if (fbook.search(/\\b(ezekiel|eze|ezk|ezek)\\b/i) !== -1)\r\n {\r\n return this.bookName(26);\r\n }\r\n if (fbook.search(/\\b(daniel|dan|dn|dl|da)\\b/i) !== -1)\r\n {\r\n return this.bookName(27);\r\n }\r\n if (fbook.search(/\\b(hosea|hos|ho)\\b/i) !== -1)\r\n {\r\n return this.bookName(28);\r\n }\r\n if (fbook.search(/\\b(joel|joe|jl)\\b/i) !== -1)\r\n {\r\n return this.bookName(29);\r\n }\r\n if (fbook.search(/\\b(amos|am|amo)\\b/i) !== -1)\r\n {\r\n return this.bookName(30);\r\n }\r\n if (fbook.search(/\\b(obadiah|oba|ob|obad)\\b/i) !== -1)\r\n {\r\n return this.bookName(31);\r\n }\r\n if (fbook.search(/\\b(jonah|jnh|jon)\\b/i) !== -1)\r\n {\r\n return this.bookName(32);\r\n }\r\n if (fbook.search(/\\b(micah|mic|mi)\\b/i) !== -1)\r\n {\r\n return this.bookName(33);\r\n }\r\n if (fbook.search(/\\b(nahum|nah|na)\\b/i) !== -1)\r\n {\r\n return this.bookName(34);\r\n }\r\n if (fbook.search(/\\b(habakkuk|hab|ha|habakuk)\\b/i) !== -1)\r\n {\r\n return this.bookName(35);\r\n }\r\n if (fbook.search(/\\b(zephaniah|zeph|zep)\\b/i) !== -1)\r\n {\r\n return this.bookName(36);\r\n }\r\n if (fbook.search(/\\b(haggia|hag|hg|haggai)\\b/i) !== -1)\r\n {\r\n return this.bookName(37);\r\n }\r\n if (fbook.search(/\\b(zechariah|zech|zch|zec)\\b/i) !== -1)\r\n {\r\n return this.bookName(38);\r\n }\r\n if (fbook.search(/\\b(malachi|mal)\\b/i) !== -1)\r\n {\r\n return this.bookName(39);\r\n }\r\n if (fbook.search(/\\b(matthew|mt|matt|mat)\\b/i) !== -1)\r\n {\r\n return this.bookName(40);\r\n }\r\n if (fbook.search(/\\b(mark|mrk|mk|mr)\\b/i) !== -1)\r\n {\r\n return this.bookName(41);\r\n }\r\n if (fbook.search(/\\b(luke|lu|lke|luk|lk)\\b/i) !== -1)\r\n {\r\n return this.bookName(42);\r\n }\r\n // must come before the Gospel of John\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(62);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(63);\r\n }\r\n if (fbook.search(/\\b(3|iii|3rd|third)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(64);\r\n }\r\n // 1, 2, and 3rd John need to come before this one, else this will catch those book references.\r\n if (fbook.search(/\\b(john|jn|jhn)\\b/i) !== -1)\r\n {\r\n return this.bookName(43);\r\n }\r\n if (fbook.search(/\\b(acts|ac|act)\\b/i) !== -1)\r\n {\r\n return this.bookName(44);\r\n }\r\n if (fbook.search(/\\b(romans|rom|ro|rm|roman)\\b/i) !== -1)\r\n {\r\n return this.bookName(45);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\\b/i) !== -1)\r\n {\r\n return this.bookName(46);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\\b/i) !== -1)\r\n {\r\n return this.bookName(47);\r\n }\r\n if (fbook.search(/\\b(galatians|galatian|galations|gal|ga|gala|galation|galat)\\b/i) !== -1)\r\n {\r\n return this.bookName(48);\r\n }\r\n if (fbook.search(/\\b(ephesians|eph|ep|ephes|ephe|ephs)\\b/i) !== -1)\r\n {\r\n return this.bookName(49);\r\n }\r\n if (fbook.search(/\\b(philippians|phi|phil|ph|philip)\\b/i) !== -1)\r\n {\r\n return this.bookName(50);\r\n }\r\n if (fbook.search(/\\b(colossians|col|co|colossian|colos|coloss)\\b/i) !== -1)\r\n {\r\n return this.bookName(51);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\\b/i) !== -1)\r\n {\r\n return this.bookName(52);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\\b/i) !== -1)\r\n {\r\n return this.bookName(53);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(timothy|tim|ti|timoth|tm)\\b/i) !== -1)\r\n {\r\n return this.bookName(54);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(timothy|tim|timoth|tm)\\b/i) !== -1)\r\n {\r\n return this.bookName(55);\r\n }\r\n if (fbook.search(/\\b(titus|tit)\\b/i) !== -1)\r\n {\r\n return this.bookName(56);\r\n }\r\n if (fbook.search(/\\b(philemon|phlmn|phl|phm|phile|philem)\\b/i) !== -1)\r\n {\r\n return this.bookName(57);\r\n }\r\n if (fbook.search(/\\b(hebrews|heb|he|hebrew)\\b/i) !== -1)\r\n {\r\n return this.bookName(58);\r\n }\r\n if (fbook.search(/\\b(james|jam|ja|jas|jms|jame|jm)\\b/i) !== -1)\r\n {\r\n return this.bookName(59);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(peter|pe|pet|pete|pt|p)\\b/i) !== -1)\r\n {\r\n return this.bookName(60);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(peter|pe|pet|pete|pt|p)\\b/i) !== -1)\r\n {\r\n return this.bookName(61);\r\n }\r\n if (fbook.search(/\\b(jude|ju)\\b/i) !== -1)\r\n {\r\n return this.bookName(65);\r\n }\r\n if (fbook.search(/\\b(revelation|rev|re|revelations|rv)\\b/i) !== -1)\r\n {\r\n return this.bookName(66);\r\n }\r\n\r\n return this.bookName(0);\r\n }\r\n\r\n public static toString(section: Section)\r\n {\r\n // get the starting book, chapter, verse\r\n let ref = section.start.book.name.concat(' ').\r\n concat(section.start.chapter).concat(':').\r\n concat(section.start.verse);\r\n\r\n if (section.start.chapter === section.end.chapter &&\r\n section.start.verse === section.end.verse &&\r\n section.start.book.name === section.end.book.name)\r\n {\r\n return ref;\r\n }\r\n\r\n if (section.start.chapter === section.end.chapter &&\r\n section.start.verse !== section.end.verse &&\r\n section.start.book.name === section.end.book.name)\r\n {\r\n return ref.concat(' - ').concat(section.end.verse);\r\n }\r\n\r\n if (section.start.book.name !== section.end.book.name)\r\n {\r\n ref = ref.concat(' - ').concat(section.end.book.name).concat(' ');\r\n }\r\n else\r\n {\r\n ref = ref.concat(' - ');\r\n }\r\n\r\n ref = ref.concat(section.end.chapter).concat(':');\r\n\r\n return ref.concat(section.end.verse);\r\n }\r\n\r\n public static Books: Array = [\r\n {\r\n name: 'Unkown',\r\n short_name: 'Unk',\r\n long_name: 'Unknown',\r\n book_number: 0,\r\n last_chapter: 0,\r\n chapters: [0]\r\n },\r\n {\r\n name: 'Genesis',\r\n short_name: 'Gen',\r\n long_name: 'Book of Genesis',\r\n book_number: 1,\r\n last_chapter: 66,\r\n chapters: [0, 31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26]\r\n },\r\n {\r\n book_number: 2,\r\n short_name: 'Exo',\r\n name: 'Exodus',\r\n long_name: 'Book of Exodus',\r\n last_chapter: 40,\r\n chapters: [0, 22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38]\r\n },\r\n {\r\n book_number: 3,\r\n name: 'Leviticus',\r\n short_name: 'Lev',\r\n long_name: 'Leviticus',\r\n last_chapter: 27,\r\n chapters: [0, 17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46, 34]\r\n },\r\n {\r\n book_number: 4,\r\n name: 'Numbers',\r\n short_name: 'Num',\r\n long_name: 'Book of Numbers',\r\n last_chapter: 36,\r\n chapters: [0, 54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13]\r\n },\r\n {\r\n book_number: 5,\r\n name: 'Deuteronomy',\r\n short_name: 'Deut',\r\n long_name: 'Book of Deuteronomy',\r\n last_chapter: 34,\r\n chapters: [0, 46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12]\r\n },\r\n {\r\n book_number: 6,\r\n name: 'Joshua',\r\n short_name: 'Josh',\r\n long_name: 'Book of Joshua',\r\n last_chapter: 24,\r\n chapters: [0, 18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33]\r\n },\r\n {\r\n book_number: 7,\r\n name: 'Judges',\r\n short_name: 'Jud',\r\n long_name: 'Book of Judges',\r\n last_chapter: 21,\r\n chapters: [0, 36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25]\r\n },\r\n {\r\n book_number: 8,\r\n name: 'Ruth',\r\n short_name: 'Ruth',\r\n long_name: 'Book of Ruth',\r\n last_chapter: 4,\r\n chapters: [0, 22, 23, 18, 22]\r\n },\r\n {\r\n book_number: 9,\r\n name: '1 Samuel',\r\n short_name: '1 Sam',\r\n long_name: 'First Book of Samuel',\r\n last_chapter: 31,\r\n chapters: [0, 28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, 13]\r\n },\r\n {\r\n book_number: 10,\r\n name: '2 Samuel',\r\n short_name: '2 Sam',\r\n long_name: 'Second Book of Samuel',\r\n last_chapter: 24,\r\n chapters: [0, 27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25]\r\n },\r\n {\r\n book_number: 11,\r\n name: '1 Kings',\r\n short_name: '1 Kng',\r\n long_name: 'First Book of Kings',\r\n last_chapter: 22,\r\n chapters: [0, 53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 53]\r\n },\r\n {\r\n book_number: 12,\r\n name: '2 Kings',\r\n short_name: '2 Kng',\r\n long_name: 'Second Book of Kings',\r\n last_chapter: 25,\r\n chapters: [0, 18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30]\r\n },\r\n {\r\n book_number: 13,\r\n name: '1 Chronicles',\r\n short_name: '1 Chr',\r\n long_name: 'First Book of Chronicles',\r\n last_chapter: 29,\r\n chapters: [0, 54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31, 32, 34, 21, 30]\r\n },\r\n {\r\n book_number: 14,\r\n name: '2 Chronicles',\r\n short_name: '2 Chr',\r\n long_name: 'Second Book of Chronicles',\r\n last_chapter: 36,\r\n chapters: [0, 17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23]\r\n },\r\n {\r\n book_number: 15,\r\n name: 'Ezra',\r\n short_name: 'Ezra',\r\n long_name: 'Book of Ezra',\r\n last_chapter: 10,\r\n chapters: [0, 11, 70, 13, 24, 17, 22, 28, 36, 15, 44]\r\n },\r\n {\r\n book_number: 16,\r\n name: 'Nehemiah',\r\n short_name: 'Neh',\r\n long_name: 'Book of Nehemiah',\r\n last_chapter: 13,\r\n chapters: [0, 11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31]\r\n },\r\n {\r\n book_number: 17,\r\n name: 'Esther',\r\n short_name: 'Esther',\r\n long_name: 'Book of Esther',\r\n last_chapter: 10,\r\n chapters: [0, 22, 23, 15, 17, 14, 14, 10, 17, 32, 3]\r\n },\r\n {\r\n book_number: 18,\r\n name: 'Job',\r\n short_name: 'Job',\r\n long_name: 'Book of Job',\r\n last_chapter: 42,\r\n chapters: [0, 22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, 34, 17]\r\n },\r\n {\r\n book_number: 19,\r\n name: 'Psalms',\r\n short_name: 'Psalm',\r\n long_name: 'Book of Psalms',\r\n last_chapter: 150,\r\n chapters: [0, 6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12, 14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 5, 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6]\r\n },\r\n {\r\n book_number: 20,\r\n name: 'Proverbs',\r\n short_name: 'Prov',\r\n long_name: 'Book of Proverbs',\r\n last_chapter: 31,\r\n chapters: [0, 33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31]\r\n },\r\n {\r\n book_number: 21,\r\n name: 'Ecclesiastes',\r\n short_name: 'Eccl',\r\n long_name: 'Book of Ecclesiastes',\r\n last_chapter: 12,\r\n chapters: [0, 18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14]\r\n },\r\n {\r\n book_number: 22,\r\n name: 'Song of Solomon',\r\n short_name: 'Song',\r\n long_name: 'Song of Solomon',\r\n last_chapter: 8,\r\n chapters: [0, 17, 17, 11, 16, 16, 13, 13, 14]\r\n },\r\n {\r\n book_number: 23,\r\n name: 'Isaiah',\r\n short_name: 'Isa',\r\n long_name: 'Book of Isaiah',\r\n last_chapter: 66,\r\n chapters: [0, 31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24]\r\n },\r\n {\r\n book_number: 24,\r\n name: 'Jeremiah',\r\n short_name: 'Jer',\r\n long_name: 'Book of Jeremiah',\r\n last_chapter: 52,\r\n chapters: [0, 19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34]\r\n },\r\n {\r\n book_number: 25,\r\n name: 'Lamentations',\r\n short_name: 'Lam',\r\n long_name: 'Book of Lamentations',\r\n last_chapter: 5,\r\n chapters: [0, 22, 22, 66, 22, 22]\r\n },\r\n {\r\n book_number: 26,\r\n name: 'Ezekiel',\r\n short_name: 'Eze',\r\n long_name: 'Book of Ezekiel',\r\n last_chapter: 48,\r\n chapters: [0, 28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35]\r\n },\r\n {\r\n book_number: 27,\r\n name: 'Daniel',\r\n short_name: 'Dan',\r\n long_name: 'Book of Daniel',\r\n last_chapter: 12,\r\n chapters: [0, 21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13]\r\n },\r\n {\r\n book_number: 28,\r\n name: 'Hosea',\r\n short_name: 'Hosea',\r\n long_name: 'Book of Hosea',\r\n last_chapter: 14,\r\n chapters: [0, 11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9]\r\n },\r\n {\r\n book_number: 29,\r\n name: 'Joel',\r\n short_name: 'Joel',\r\n long_name: 'Book of Joel',\r\n last_chapter: 3,\r\n chapters: [0, 20, 32, 21]\r\n },\r\n {\r\n book_number: 30,\r\n name: 'Amos',\r\n short_name: 'Amos',\r\n long_name: 'Book of Amos',\r\n last_chapter: 9,\r\n chapters: [0, 15, 16, 15, 13, 27, 14, 17, 14, 15]\r\n },\r\n {\r\n book_number: 31,\r\n name: 'Obadiah',\r\n short_name: 'Oba',\r\n long_name: 'Book of Obadiah',\r\n last_chapter: 1,\r\n chapters: [0, 21]\r\n },\r\n {\r\n book_number: 32,\r\n name: 'Jonah',\r\n short_name: 'Jonah',\r\n long_name: 'Book of Jonah',\r\n last_chapter: 4,\r\n chapters: [0, 17, 10, 10, 11]\r\n },\r\n {\r\n book_number: 33,\r\n name: 'Micah',\r\n short_name: 'Micah',\r\n long_name: 'Book of Micah',\r\n last_chapter: 7,\r\n chapters: [0, 16, 13, 12, 13, 15, 16, 20]\r\n },\r\n {\r\n book_number: 34,\r\n name: 'Nahum',\r\n short_name: 'Nahum',\r\n long_name: 'Book of Nahum',\r\n last_chapter: 3,\r\n chapters: [0, 15, 13, 19]\r\n },\r\n {\r\n book_number: 35,\r\n name: 'Habakkuk',\r\n short_name: 'Hab',\r\n long_name: 'Book of Habakkuk',\r\n last_chapter: 3,\r\n chapters: [0, 17, 20, 19]\r\n },\r\n {\r\n book_number: 36,\r\n name: 'Zephaniah',\r\n short_name: 'Zeph',\r\n long_name: 'Book of Zephaniah',\r\n last_chapter: 3,\r\n chapters: [0, 18, 15, 20]\r\n },\r\n {\r\n book_number: 37,\r\n name: 'Haggai',\r\n short_name: 'Hag',\r\n long_name: 'Book of Haggai',\r\n last_chapter: 2,\r\n chapters: [0, 15, 23]\r\n },\r\n {\r\n book_number: 38,\r\n name: 'Zechariah',\r\n short_name: 'Zech',\r\n long_name: 'Book of Zechariah',\r\n last_chapter: 14,\r\n chapters: [0, 21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21]\r\n },\r\n {\r\n book_number: 39,\r\n name: 'Malachi',\r\n short_name: 'Mal',\r\n long_name: 'Book of Malachi',\r\n last_chapter: 4,\r\n chapters: [0, 14, 17, 18, 6]\r\n },\r\n {\r\n book_number: 40,\r\n name: 'Matthew',\r\n short_name: 'Matt',\r\n long_name: 'Gospel of Matthew',\r\n last_chapter: 28,\r\n chapters: [0, 25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20]\r\n },\r\n {\r\n book_number: 41,\r\n name: 'Mark',\r\n short_name: 'Mark',\r\n long_name: 'Gospel of Mark',\r\n last_chapter: 16,\r\n chapters: [0, 45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20]\r\n },\r\n {\r\n book_number: 42,\r\n name: 'Luke',\r\n short_name: 'Luke',\r\n long_name: 'Gospel of Luke',\r\n last_chapter: 24,\r\n chapters: [0, 80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53]\r\n },\r\n {\r\n book_number: 43,\r\n name: 'John',\r\n short_name: 'John',\r\n long_name: 'Gospel of John',\r\n last_chapter: 21,\r\n chapters: [0, 51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25]\r\n },\r\n {\r\n book_number: 44,\r\n name: 'Acts',\r\n short_name: 'Acts',\r\n long_name: 'Acts of the Apostles',\r\n last_chapter: 28,\r\n chapters: [0, 26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, 40, 30, 35, 27, 27, 32, 44, 31]\r\n },\r\n {\r\n book_number: 45,\r\n name: 'Romans',\r\n short_name: 'Rom',\r\n long_name: 'Epistle to the Romans',\r\n last_chapter: 16,\r\n chapters: [0, 32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27]\r\n },\r\n {\r\n book_number: 46,\r\n name: '1 Corinthians',\r\n short_name: '1 Cor',\r\n long_name: 'First Epistle to the Corinthians',\r\n last_chapter: 16,\r\n chapters: [0, 31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24]\r\n },\r\n {\r\n book_number: 47,\r\n name: '2 Corinthians',\r\n short_name: '2 Cor',\r\n long_name: 'Second Epistle to the Corinthians',\r\n last_chapter: 13,\r\n chapters: [0, 24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14]\r\n },\r\n {\r\n book_number: 48,\r\n name: 'Galatians',\r\n short_name: 'Gal',\r\n long_name: 'Epistle to the Galatians',\r\n last_chapter: 6,\r\n chapters: [0, 24, 21, 29, 31, 26, 18]\r\n },\r\n {\r\n book_number: 49,\r\n name: 'Ephesians',\r\n short_name: 'Eph',\r\n long_name: 'Epistle to the Ephesians',\r\n last_chapter: 6,\r\n chapters: [0, 23, 22, 21, 32, 33, 24]\r\n },\r\n {\r\n book_number: 50,\r\n name: 'Philippians',\r\n short_name: 'Phil',\r\n long_name: 'Epistle to the Philippians',\r\n last_chapter: 4,\r\n chapters: [0, 30, 30, 21, 23]\r\n },\r\n {\r\n book_number: 51,\r\n name: 'Colossians',\r\n short_name: 'Col',\r\n long_name: 'Epistle to the Colossians',\r\n last_chapter: 4,\r\n chapters: [0, 29, 23, 25, 18]\r\n },\r\n {\r\n book_number: 52,\r\n name: '1 Thessalonians',\r\n short_name: '1 Thes',\r\n long_name: 'First Epistle to the Thessalonians',\r\n last_chapter: 5,\r\n chapters: [0, 10, 20, 13, 18, 28]\r\n },\r\n {\r\n book_number: 53,\r\n name: '2 Thessalonians',\r\n short_name: '2 Thes',\r\n long_name: 'Second Epistle to the Thessalonians',\r\n last_chapter: 3,\r\n chapters: [0, 12, 17, 18]\r\n },\r\n {\r\n book_number: 54,\r\n name: '1 Timothy',\r\n short_name: '1 Tim',\r\n long_name: 'First Epistle to Timothy',\r\n last_chapter: 6,\r\n chapters: [0, 20, 15, 16, 16, 25, 21]\r\n },\r\n {\r\n book_number: 55,\r\n name: '2 Timothy',\r\n short_name: '2 Tim',\r\n long_name: 'Second Epistle to Timothy',\r\n last_chapter: 4,\r\n chapters: [0, 18, 26, 17, 22]\r\n },\r\n {\r\n book_number: 56,\r\n name: 'Titus',\r\n short_name: 'Titis',\r\n long_name: 'Epistle to Titus',\r\n last_chapter: 3,\r\n chapters: [0, 16, 15, 15]\r\n },\r\n {\r\n book_number: 57,\r\n name: 'Philemon',\r\n short_name: 'Phi',\r\n long_name: 'Epistle to Philemon',\r\n last_chapter: 1,\r\n chapters: [0, 25]\r\n },\r\n {\r\n book_number: 58,\r\n name: 'Hebrews',\r\n short_name: 'Heb',\r\n long_name: 'Epistle to the Hebrews',\r\n last_chapter: 13,\r\n chapters: [0, 14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25]\r\n },\r\n {\r\n book_number: 59,\r\n name: 'James',\r\n short_name: 'James',\r\n long_name: 'Epistle of James',\r\n last_chapter: 5,\r\n chapters: [0, 27, 26, 18, 17, 20]\r\n },\r\n {\r\n book_number: 60,\r\n name: '1 Peter',\r\n short_name: '1 Pe',\r\n long_name: 'First Epistle of Peter',\r\n last_chapter: 5,\r\n chapters: [0, 25, 25, 22, 19, 14]\r\n },\r\n {\r\n book_number: 61,\r\n name: '2 Peter',\r\n short_name: '2 Pe',\r\n long_name: 'Second Epistle of Peter',\r\n last_chapter: 3,\r\n chapters: [0, 21, 22, 18]\r\n },\r\n {\r\n book_number: 62,\r\n name: '1 John',\r\n short_name: '1 Jn',\r\n long_name: 'First Epistle of John',\r\n last_chapter: 5,\r\n chapters: [0, 10, 29, 24, 21, 21]\r\n },\r\n {\r\n book_number: 63,\r\n name: '2 John',\r\n short_name: '2 Jn',\r\n long_name: 'Second Epistle of John',\r\n last_chapter: 1,\r\n chapters: [0, 13]\r\n },\r\n {\r\n book_number: 64,\r\n name: '3 John',\r\n short_name: '3 Jn',\r\n long_name: 'Third Epistle of John',\r\n last_chapter: 1,\r\n chapters: [0, 14]\r\n },\r\n {\r\n book_number: 65,\r\n name: 'Jude',\r\n short_name: 'Jude',\r\n long_name: 'Epistle to Jude',\r\n last_chapter: 1,\r\n chapters: [0, 25]\r\n },\r\n {\r\n book_number: 66,\r\n name: 'Revelation',\r\n short_name: 'Rev',\r\n long_name: 'Book of Revelations',\r\n last_chapter: 22,\r\n chapters: [0, 20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21]\r\n }\r\n ];\r\n\r\n public static bookName(booknum: number): Book\r\n {\r\n return this.Books[booknum];\r\n }\r\n}\r\n\r\nexport type Book = {\r\n name: string,\r\n short_name: string,\r\n long_name: string,\r\n book_number: number,\r\n last_chapter: number,\r\n chapters: [number],\r\n};\r\n\r\nexport type Section = {\r\n start: Location,\r\n end: Location,\r\n};\r\n\r\nexport type Location = {\r\n book: Book,\r\n chapter: string,\r\n verse: string,\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/libs/Reference.ts","import { Component, ViewChild } from '@angular/core';\nimport { Platform, MenuController, Nav } from 'ionic-angular';\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\nimport { SearchPage } from '../pages/search/search';\n\nimport { PagesService } from '../services/pages-service';\n\n@Component({\n templateUrl: 'app.html',\n providers: [PagesService]\n})\nexport class MyApp\n{\n @ViewChild(Nav) nav: Nav;\n\n rootPage: any = SearchPage;\n\n constructor(\n public platform: Platform,\n public menu: MenuController,\n private statusBar: StatusBar,\n private splash: SplashScreen,\n private pagesSvc: PagesService\n )\n {\n this.initializeApp();\n }\n\n initializeApp()\n {\n this.platform.ready().then(() =>\n {\n // Okay, so the platform is ready and our plugins are available.\n // Here you can do any higher level native things you might need.\n this.statusBar.styleDefault();\n this.splash.hide();\n });\n }\n\n openPage(page)\n {\n // close the menu when clicking a link from the menu\n this.menu.close('pages');\n \n // because the actions menu is on a Page component, and you swap the SearchPage out,\n // the menu get registered multiple times. to avoid some pages not opening the menu because\n // multiple menus with the same id exist and the first one in the list is returned (which happens\n // be disabled when another of the same id is added) it won't show. because not enabled.\n // ---\n // unregistering the actions menu whenever a new page is opened fixes the problem, because the menu\n // will get reregistered when SearchPage loads. Also, if you go to a non SearchPage, the actions\n // menu won't be there, but the unregister function doesn't fail if a non existent id is given,\n // so thats ok.\n this.menu._unregister(this.menu.get('actions'));\n\n // navigate to the new page if it is not the current page\n this.nav.setRoot(page.component, page.params);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","// our root app component\r\nimport {Component, Compiler, ViewContainerRef, ViewChild, Input, ComponentRef, ComponentFactoryResolver, ChangeDetectorRef} from '@angular/core'\r\n\r\n// Helper component to add dynamic components\r\n@Component({\r\n selector: 'component-loader',\r\n template: `
`\r\n})\r\nexport class ComponentLoader {\r\n @ViewChild('target', { read: ViewContainerRef }) target;\r\n @Input() type;\r\n @Input() data;\r\n cmpRef: ComponentRef;\r\n private isViewInitialized = false;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private compiler: Compiler,\r\n private cdRef: ChangeDetectorRef) { }\r\n\r\n updateComponent() {\r\n if (!this.isViewInitialized) {\r\n return;\r\n }\r\n if (this.cmpRef) {\r\n this.cmpRef.destroy();\r\n }\r\n\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.type);\r\n this.cmpRef = this.target.createComponent(factory);\r\n // to access the created instance use\r\n // this.compRef.instance.someProperty = 'someValue';\r\n // this.compRef.instance.someOutput.subscribe(val => doSomething());\r\n \r\n this.cmpRef.instance.item = this.data;\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateComponent();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.isViewInitialized = true;\r\n this.updateComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.cmpRef) {\r\n this.cmpRef.destroy();\r\n }\r\n }\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/component-loader/component-loader.ts","import { Component, EventEmitter, Output, Input, OnInit, ElementRef } from '@angular/core';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { BiblePassageResult, BibleService, BiblePassage, BibleVerse, HashTable, Paragraph } from '../../services/bible-service';\nimport { Reference } from '../../libs/Reference';\n\n@Component({\n selector: 'passage',\n templateUrl: 'passage.html',\n providers: [BibleService]\n})\nexport class Passage implements OnInit\n{\n @Output()\n onItemClicked = new EventEmitter();\n @Output()\n onClose = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n @Input()\n versesOnNewLine: boolean;\n\n @Input()\n showVerseNumbers: boolean;\n\n data: BiblePassageResult;\n ref: Reference;\n\n constructor(private bibleService: BibleService, private elementRef: ElementRef)\n {\n }\n\n ngOnInit(): void\n {\n this.ref = new Reference(this.cardItem.qry);\n this.bibleService.getResultAsPromise(this.ref.Section).then(data => this.data = data);\n }\n\n close()\n {\n let d = 250;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\n next()\n {\n const last_verse_for_end = this.ref.Section.end.book.chapters[parseInt(this.ref.Section.end.chapter)].toString();\n\n if (this.ref.Section.end.verse !== '*' && this.ref.Section.end.verse !== last_verse_for_end)\n this.ref.Section.end.chapter = this.ref.Section.end.chapter;\n else\n this.ref.Section.end.chapter = (parseInt(this.ref.Section.end.chapter) + 1).toString();\n\n this.ref.Section.start.chapter = this.ref.Section.end.chapter;\n this.ref.Section.start.verse = '1';\n this.ref.Section.end.verse = '*';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n prev()\n {\n if (this.ref.Section.start.verse !== '1')\n this.ref.Section.start.chapter = this.ref.Section.start.chapter;\n else\n this.ref.Section.start.chapter = (parseInt(this.ref.Section.start.chapter) - 1).toString();\n\n this.ref.Section.end.chapter = this.ref.Section.start.chapter;\n this.ref.Section.start.verse = '1';\n this.ref.Section.end.verse = '*';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n expand()\n {\n const last_verse_for_end = this.ref.Section.end.book.chapters[parseInt(this.ref.Section.end.chapter)];\n\n // if your verse is at the beginning, to go the prev chapter and add 3 verses from that\n if (parseInt(this.ref.Section.start.verse) < 4)\n {\n this.ref.Section.start.chapter = (parseInt(this.ref.Section.start.chapter) - 1).toString();\n this.ref.Section.start.verse = '*-' + (3 - parseInt(this.ref.Section.start.verse));\n if (this.ref.Section.start.chapter === '0')\n {\n this.ref.Section.start.chapter = '1';\n this.ref.Section.start.verse = '1';\n }\n }\n else // or go back 3 verses\n this.ref.Section.start.verse = (parseInt(this.ref.Section.start.verse) - 3).toString();\n\n // if your verse is at the end, go to the next chapter\n if (this.ref.Section.end.verse === '*' || parseInt(this.ref.Section.end.verse) + 3 > last_verse_for_end)\n {\n this.ref.Section.end.chapter = (parseInt(this.ref.Section.end.chapter) + 1).toString();\n if (this.ref.Section.end.verse === '*')\n this.ref.Section.end.verse = '3';\n else\n this.ref.Section.end.verse = (parseInt(this.ref.Section.end.verse) + 3 - last_verse_for_end).toString();\n\n if (this.ref.Section.end.chapter === (this.ref.Section.end.book.last_chapter + 1).toString())\n {\n this.ref.Section.end.chapter = this.ref.Section.end.book.last_chapter.toString();\n this.ref.Section.end.verse = last_verse_for_end.toString();\n }\n }\n else // or add 3 verses\n this.ref.Section.end.verse = (parseInt(this.ref.Section.end.verse) + 3).toString();\n\n if (this.ref.Section.start.verse === '0')\n this.ref.Section.start.verse = '1';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n openStrongs(strongs: string)\n {\n this.onItemClicked.emit({ card: this.cardItem, qry: this.cardItem.dict + strongs, from_search_bar: false });\n }\n\n openMenu(strongs: string)\n {\n }\n\n isPunct(c: string)\n {\n return new RegExp('^[\\.\\,\\;\\:\\?\\!]$').test(c);\n }\n\n hasHeader(p: Paragraph)\n {\n if (p === undefined)\n return false;\n\n return p.h.length > 0;\n }\n\n isPara(vs: BibleVerse)\n {\n return this.getRefKey(vs) in BibleService.paragraphs;\n }\n\n getRefKey(vs: BibleVerse)\n {\n return this.ref.Section.start.book.book_number + ';' + this.ref.Section.start.chapter + ';' + vs.v;\n }\n\n getParas(ch: BiblePassage)\n {\n // group the verses into paragraphs.\n\n // create an initial paragraph to hold verses that might come before a paragraph.\n let para: BiblePara = { p: { h: '', p: 0 }, vss: [] };\n let paras: BiblePara[] = [];\n\n // for each verse in the chapter, break them into paragraphs.\n for (let v of ch.vss)\n {\n if (this.isPara(v))\n {\n paras.push(para);\n para = { p: BibleService.paragraphs[this.getRefKey(v)], vss: [v] };\n if (para.p === undefined)\n para.p = { h: '', p: 0 }; // just in case you can't find a paragraph.\n }\n else\n {\n para.vss.push(v);\n }\n }\n\n // add the final paragraph if it has verses.\n if (para.vss.length > 0)\n paras.push(para);\n\n return paras;\n }\n}\n\ntype BiblePara = {\n p: Paragraph,\n vss: BibleVerse[],\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/passage/passage.ts","/// \r\n/// \r\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\nimport { Section, Reference } from '../libs/Reference';\r\n\r\n@Injectable()\r\nexport class BibleService\r\n{\r\n chapters: BiblePassage[];\r\n result: BiblePassageResult;\r\n static paragraphs: HashTable;\r\n count = 0;\r\n $: any;\r\n\r\n constructor(private http: Http)\r\n {\r\n this.getParagraphMarkersAsPromise()\r\n }\r\n\r\n getParagraphMarkersAsPromise(): Promise>\r\n {\r\n return new Promise((resolve) => { resolve(this.getParagraphMarkers()); });\r\n }\r\n\r\n getParagraphMarkers() : HashTable\r\n {\r\n try\r\n {\r\n if (BibleService.paragraphs !== undefined && '1;1;1' in BibleService.paragraphs)\r\n return BibleService.paragraphs;\r\n\r\n const self = this;\r\n\r\n const url = 'data/bibles/paras.json';\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: HashTable)\r\n {\r\n BibleService.paragraphs = d;\r\n },\r\n error()\r\n {\r\n console.log('Unable to retrieve paragraphs.');\r\n }\r\n });\r\n\r\n return BibleService.paragraphs;\r\n }\r\n catch (error)\r\n {\r\n console.log(error);\r\n }\r\n return null;\r\n }\r\n\r\n getResultAsPromise(section: Section): Promise\r\n {\r\n return new Promise((resolve) => { resolve(this.getResult(section)); });\r\n }\r\n\r\n getResult(section: Section): BiblePassageResult\r\n {\r\n try\r\n {\r\n const self = this;\r\n this.chapters = []; // the verses from the chapter.\r\n this.result = {\r\n cs: [],\r\n testament: '',\r\n ref: Reference.toString(section),\r\n status: 0,\r\n msg: ':)'\r\n };\r\n\r\n if (Number(section.start.chapter) > section.start.book.last_chapter)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'The requested chapter for ' + section.start.book.name + ' is out of range. Please pick a chapter between 1 and ' + section.start.book.last_chapter + '.';\r\n return self.result;\r\n }\r\n\r\n if (Number(section.end.chapter) > section.end.book.last_chapter)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'The requested chapter for ' + section.end.book.name + ' is out of range. Please pick a chapter between 1 and ' + section.end.book.last_chapter + '.';\r\n return self.result;\r\n }\r\n\r\n this.count = Number(section.end.chapter) - Number(section.start.chapter) + 1;\r\n\r\n for (let i = Number(section.start.chapter); i <= Number(section.end.chapter); i++)\r\n {\r\n const url = 'data/bibles/kjv_strongs/' + section.start.book.book_number + '-' + i + '.json';\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: BiblePassage)\r\n {\r\n self.chapters.push(d);\r\n },\r\n error()\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve bible passage ' + self.result.ref + '.';\r\n }\r\n });\r\n }\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n for (let j = 0; j < this.chapters.length; j++)\r\n {\r\n const vss: BibleVerse[] = [];\r\n let start: number;\r\n let end;\r\n\r\n // figure out the start verse.\r\n if (j === 0)\r\n {\r\n if (section.start.verse.indexOf('*') !== -1) // you sometimes use this as a shortcut to the last verse\r\n {\r\n // replace the * with the last verse, then eval the expression.\r\n section.start.verse = section.start.verse.replace('*', (this.chapters[j].vss.length).toString());\r\n\r\n start = math.eval(section.start.verse);\r\n\r\n // update the section and the ref.\r\n section.start.verse = start.toString();\r\n this.result.ref = Reference.toString(section);\r\n }\r\n else\r\n start = parseInt(section.start.verse);\r\n }\r\n else\r\n start = 1;\r\n\r\n // figure out the end verse\r\n if ((j + 1) === this.chapters.length)\r\n end = section.end.verse;\r\n else\r\n end = '*';\r\n\r\n // get the verses requested.\r\n const tvs = this.chapters[j].vss.length;\r\n if (end === '*' || parseInt(end) > tvs)\r\n end = tvs;\r\n\r\n // we're using c based indexes here, so the index is 1 less than the verse #.\r\n for (let i = start; i <= end; i++)\r\n vss.push(this.chapters[j].vss[i - 1]);\r\n\r\n this.result.cs.push({\r\n ch: this.chapters[j].ch,\r\n vss: vss\r\n });\r\n }\r\n\r\n\r\n if (section.start.book.book_number >= 40)\r\n this.result.testament = 'new';\r\n else\r\n this.result.testament = 'old';\r\n\r\n return this.result;\r\n }\r\n catch (error)\r\n {\r\n console.log(error);\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport type BiblePassageResult = {\r\n cs: BiblePassage[],\r\n testament: string,\r\n ref: string,\r\n status: number,\r\n msg: string,\r\n}\r\n\r\nexport type BiblePassage = {\r\n ch: number,\r\n vss: BibleVerse[],\r\n}\r\n\r\nexport type BibleVerse = {\r\n v: number,\r\n w: [\r\n {\r\n t: string, s: string,\r\n }\r\n ],\r\n}\r\n\r\nexport type Paragraph = {\r\n h: string,\r\n p: number\r\n}\r\n\r\nexport interface HashTable\r\n{\r\n [key: string]: T;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/bible-service.ts","import { HostListener, EventEmitter, Component, Input, Output, OnInit, AfterViewChecked, ElementRef } from '@angular/core';\nimport { Reference } from '../../libs/Reference';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { StrongsResult, StrongsService } from '../../services/strongs-service';\n\n@Component({\n selector: 'strongs',\n templateUrl: 'strongs.html',\n providers: [StrongsService]\n})\nexport class Strongs implements AfterViewChecked, OnInit\n{\n @Output()\n onClose = new EventEmitter();\n\n @Output()\n onItemClicked = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n data: StrongsResult;\n\n constructor(private strongsService: StrongsService, private elementRef: ElementRef)\r\n {\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(evt)\r\n {\n $('strongs ion-scroll').each((i, el) =>\r\n {\r\n let len = $(el).find('.scroll-content .scroll-zoom-wrapper dl span').length;\r\n len += $(el).find('.scroll-content .scroll-zoom-wrapper dl dd').length;\r\n\r\n if (len < 20)\r\n $(el).css('height', Math.ceil(len / 3) * 30 + 30);\r\n });\r\n }\n\n ngAfterViewChecked(): void\n {\r\n this.onResize(null);\r\n }\n\r\n ngOnInit(): void\r\n {\r\n this.strongsService.getResultAsPromise(parseInt(this.cardItem.qry), this.cardItem.dict)\r\n .then(data =>\r\n this.data = data\r\n );\r\n }\n\n close()\n {\r\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\r\n openItem(p: string)\r\n {\n this.onItemClicked.emit({ card: this.cardItem, qry: p, from_search_bar: false });\n }\n\n makePassage(p: string)\r\n {\n return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];\n }\n\n openPassage(p: string)\n {\n const ref = this.makePassage(p);\n this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/strongs/strongs.ts","/// \nimport { HostListener, EventEmitter, Component, Input, Output, AfterViewChecked, OnInit, ElementRef } from '@angular/core';\nimport { Reference } from '../../libs/Reference';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { WordLookupResult, WordService } from '../../services/word-service';\n\n@Component({\n selector: 'words',\n templateUrl: 'words.html',\n providers: [WordService]\n})\nexport class Words implements AfterViewChecked, OnInit\n{\n @Output()\n onClose = new EventEmitter();\n\n @Output()\n onItemClicked = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n $: any;\n\n data: WordLookupResult;\n\n constructor(private wordService: WordService, private elementRef: ElementRef)\r\n {\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(evt)\r\n {\n $('words ion-scroll').each((i, el) =>\r\n {\r\n const wr = $(el).find('.scroll-content .scroll-zoom-wrapper')[0];\r\n const len = $(el).find('.scroll-zoom-wrapper a').length;\r\n\r\n if (wr.scrollWidth < 500) // 1 col\r\n {\r\n // 5 rows\r\n len < 6 ? $(el).css('height', len * 44.4 + 25) : $(el).css('height', 250);\n }\r\n else if (wr.scrollWidth < 699) // 2 col\r\n {\r\n // 6 rows\r\n len < 13 ? $(el).css('height', Math.ceil(len / 2) * 44.4 + 25) : $(el).css('height', 300);\r\n }\r\n else if (wr.scrollWidth < 799) // 3 col\r\n {\r\n // 7 rows\r\n len < 22 ? $(el).css('height', Math.ceil(len / 3) * 44.4 + 25) : $(el).css('height', 350);\r\n }\r\n else if (wr.scrollWidth < 899) // 4 col\r\n {\r\n // 7 rows\r\n len < 29 ? $(el).css('height', Math.ceil(len / 4) * 44.4 + 25) : $(el).css('height', 375);\r\n }\r\n else if (wr.scrollWidth < 1199) // 5 col\r\n {\r\n // 8 rows\r\n len < 41 ? $(el).css('height', Math.ceil(len / 5) * 44.4 + 25) : $(el).css('height', 400);\r\n }\r\n else // 6 col\r\n {\r\n // 8 rows\r\n len < 49 ? $(el).css('height', Math.ceil(len / 6) * 44.4 + 25) : $(el).css('height', 425);\r\n }\r\n });\r\n }\n public ngAfterViewChecked(): void\n {\r\n this.onResize(null);\r\n }\n\n ngOnInit(): void\r\n {\r\n this.wordService.getResultAsPromise(this.cardItem.qry).then(data =>\r\n this.data = data\r\n );\r\n }\r\n\r\n close()\r\n {\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\n makePassage(p: string)\n {\n return Reference.bookName(parseInt(p.split(':')[0])).name + ' ' + p.split(':')[1] + ':' + p.split(':')[2];\n }\n\n openPassage(p: string)\n {\n const ref = this.makePassage(p);\n this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/words/words.ts","/// \r\nimport { stemmer } from '../libs/Stemmer';\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\n\r\n@Injectable()\r\nexport class WordService\r\n{\r\n\r\n wordToStem: Map = {};\n\r\n constructor(private http: Http)\r\n {\r\n this.getStemWordIndex();\r\n }\r\n\r\n normalizeQueryString(qry: string): string[]\r\n {\r\n qry = qry.toLowerCase();\r\n return qry.replace(/'/g, '').replace(/\\s+/g, ' ').split(' ');\r\n }\r\n\r\n getResultAsPromise(qry: string): Promise\r\n {\r\n return new Promise((resolve) => { resolve(this.getResult(qry)); });\r\n }\r\n\r\n getResult(qry: string): WordLookupResult\r\n {\r\n const qs = this.normalizeQueryString(qry);\r\n const words = this.buildIndexArray().sort();\r\n const results = new Array();\r\n\r\n // Loop through each query term.\r\n for (let q of qs)\r\n {\r\n const stem = this.wordToStem[q];\r\n\r\n // For each query term, figure out which xml file it is in, and get it.\r\n // getSearchRefs returns an array of references.\r\n for (let w = 0; w < words.length; w++)\r\n {\r\n // If we are at the end of the array, we want to use a different test.\r\n if (w === 0)\r\n {\r\n if (stem <= words[w])\r\n {\r\n results.unshift(this.getSearchReferences('data/index/' + words[w] + 'idx.json', stem));\r\n break;\r\n }\r\n }\r\n else\r\n {\r\n if (stem <= words[w] && stem > words[w - 1])\r\n {\r\n results.unshift(this.getSearchReferences('data/index/' + words[w] + 'idx.json', stem));\r\n break;\r\n }\r\n }\r\n }\r\n } // End of loop through query terms\r\n\r\n // Now we need to test results. If there is more than one item in the array, we need to find the set\r\n // that is shared by all of them. IF not, we can just return those refs.\r\n if (results.length === 0)\r\n return { word: qry, refs: [], status: -1, msg: 'No passages found for query: ' + qry + '.' };\r\n\r\n let shared: string[];\r\n if (results.length === 1)\r\n {\r\n shared = results[0];\r\n }\r\n else\r\n {\r\n shared = this.findSharedSet(results);\r\n }\r\n\r\n if (shared == null || shared.length === 0)\r\n return { word: qry, refs: [], status: -1, msg: 'No passages found for query: ' + qry + '.' };\r\n\r\n return { word: qry, refs: shared, status: 0, msg: ':)' };\r\n }\r\n \r\n /**\r\n * Gets the references a given word is found in.\r\n * Returns a string[].\r\n * @param {string} url - The url of the word index\r\n * @param {string} query - The word to lookup.\r\n */\r\n private getStemWordIndex()\r\n {\r\n // getSearchRefs takes a url and uses ajax to retrieve the references and returns an array of references.\r\n let r: WordToStem[];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/index/word_to_stem_idx.json',\r\n dataType: 'json',\r\n success(d: WordToStem[], t, x)\r\n {\r\n r = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // find the right word\n for (let i of r)\r\n {\r\n this.wordToStem[i.w] = i.s;\r\n }\r\n }\n\r\n /**\r\n * Gets the references a given word is found in.\r\n * Returns a string[].\r\n * @param {string} url - The url of the word index\r\n * @param {string} query - The word to lookup.\r\n */\r\n private getSearchReferences(url, query): string[]\r\n {\r\n // getSearchRefs takes a url and uses ajax to retrieve the references and returns an array of references.\r\n let r: IndexResult[];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: IndexResult[], t, x)\r\n {\r\n r = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // find the right word\r\n const refs = $.grep(r, (o) => o.w === query);\r\n\r\n if (refs.length > 0)\r\n return refs[0].r;\r\n else\r\n return [];\r\n }\r\n\r\n private buildIndexArray()\r\n {\r\n const words = new Array();\r\n words.unshift('abishur');\r\n words.unshift('achor');\r\n words.unshift('adoni');\r\n words.unshift('afterward');\r\n words.unshift('ahishahar');\r\n words.unshift('alleg');\r\n words.unshift('ambush');\r\n words.unshift('ancestor');\r\n words.unshift('aphik');\r\n words.unshift('arbah');\r\n words.unshift('arodi');\r\n words.unshift('ashkenaz');\r\n words.unshift('ate');\r\n words.unshift('azaniah');\r\n words.unshift('backbiteth');\r\n words.unshift('barbarian');\r\n words.unshift('beard');\r\n words.unshift('begettest');\r\n words.unshift('benefactor');\r\n words.unshift('bethel');\r\n words.unshift('bilshan');\r\n words.unshift('blindeth');\r\n words.unshift('booti');\r\n words.unshift('breaketh');\r\n words.unshift('bucket');\r\n words.unshift('cabbon');\r\n words.unshift('caphtor');\r\n words.unshift('causeless');\r\n words.unshift('chapmen');\r\n words.unshift('chese');\r\n words.unshift('chrysoprasus');\r\n words.unshift('cloth');\r\n words.unshift('common');\r\n words.unshift('confess');\r\n words.unshift('contendeth');\r\n words.unshift('coucheth');\r\n words.unshift('crept');\r\n words.unshift('curseth');\r\n words.unshift('darius');\r\n words.unshift('decketh');\r\n words.unshift('dema');\r\n words.unshift('devil');\r\n words.unshift('directeth');\r\n words.unshift('disposit');\r\n words.unshift('doth');\r\n words.unshift('drowsi');\r\n words.unshift('ebe');\r\n words.unshift('elead');\r\n words.unshift('elkoshit');\r\n words.unshift('encourag');\r\n words.unshift('entreat');\r\n words.unshift('eschew');\r\n words.unshift('ever');\r\n words.unshift('expert');\r\n words.unshift('fallest');\r\n words.unshift('feedeth');\r\n words.unshift('filthi');\r\n words.unshift('fleeth');\r\n words.unshift('forborn');\r\n words.unshift('forsookest');\r\n words.unshift('fretteth');\r\n words.unshift('gahar');\r\n words.unshift('gazzam');\r\n words.unshift('gibea');\r\n words.unshift('glister');\r\n words.unshift('got');\r\n words.unshift('grope');\r\n words.unshift('hadlai');\r\n words.unshift('hammon');\r\n words.unshift('harbona');\r\n words.unshift('hasrah');\r\n words.unshift('hazezon');\r\n words.unshift('heinous');\r\n words.unshift('herebi');\r\n words.unshift('highest');\r\n words.unshift('holdeth');\r\n words.unshift('hosanna');\r\n words.unshift('huri');\r\n words.unshift('ill');\r\n words.unshift('inexcus');\r\n words.unshift('intend');\r\n words.unshift('ishui');\r\n words.unshift('jaazaniah');\r\n words.unshift('jaminit');\r\n words.unshift('jecoliah');\r\n words.unshift('jeopard');\r\n words.unshift('jethro');\r\n words.unshift('joiarib');\r\n words.unshift('juda');\r\n words.unshift('kelaiah');\r\n words.unshift('kishion');\r\n words.unshift('laden');\r\n words.unshift('laughter');\r\n words.unshift('lehi');\r\n words.unshift('lift');\r\n words.unshift('loatheth');\r\n words.unshift('lucius');\r\n words.unshift('madmen');\r\n words.unshift('malachi');\r\n words.unshift('march');\r\n words.unshift('maul');\r\n words.unshift('melchizedek');\r\n words.unshift('merrili');\r\n words.unshift('midianit');\r\n words.unshift('miri');\r\n words.unshift('modest');\r\n words.unshift('move');\r\n words.unshift('naashon');\r\n words.unshift('nazareth');\r\n words.unshift('nephishesim');\r\n words.unshift('nisan');\r\n words.unshift('obadiah');\r\n words.unshift('oliveyard');\r\n words.unshift('oren');\r\n words.unshift('overrun');\r\n words.unshift('pallu');\r\n words.unshift('pas');\r\n words.unshift('peel');\r\n words.unshift('pernici');\r\n words.unshift('philip');\r\n words.unshift('pison');\r\n words.unshift('plucketh');\r\n words.unshift('pour');\r\n words.unshift('price');\r\n words.unshift('proport');\r\n words.unshift('purg');\r\n words.unshift('rabboni');\r\n words.unshift('ravish');\r\n words.unshift('redeemedst');\r\n words.unshift('remainest');\r\n words.unshift('reput');\r\n words.unshift('revers');\r\n words.unshift('rissah');\r\n words.unshift('ruddi');\r\n words.unshift('said');\r\n words.unshift('sapphir');\r\n words.unshift('scepter');\r\n words.unshift('secundus');\r\n words.unshift('separ');\r\n words.unshift('shachia');\r\n words.unshift('sharar');\r\n words.unshift('sheepshear');\r\n words.unshift('sheva');\r\n words.unshift('shishak');\r\n words.unshift('shroud');\r\n words.unshift('signifi');\r\n words.unshift('sittest');\r\n words.unshift('slow');\r\n words.unshift('soft');\r\n words.unshift('sowedst');\r\n words.unshift('spoil');\r\n words.unshift('station');\r\n words.unshift('stoop');\r\n words.unshift('strongest');\r\n words.unshift('sum');\r\n words.unshift('sweep');\r\n words.unshift('tahapan');\r\n words.unshift('tast');\r\n words.unshift('ten');\r\n words.unshift('thereat');\r\n words.unshift('threaten');\r\n words.unshift('timbrel');\r\n words.unshift('tongu');\r\n words.unshift('travailest');\r\n words.unshift('trust');\r\n words.unshift('uncircumcis');\r\n words.unshift('unprepar');\r\n words.unshift('urg');\r\n words.unshift('vat');\r\n words.unshift('visiteth');\r\n words.unshift('wash');\r\n words.unshift('wed');\r\n words.unshift('wherewith');\r\n words.unshift('winepress');\r\n words.unshift('won');\r\n words.unshift('written');\r\n words.unshift('zalmonah');\r\n words.unshift('zenan');\r\n words.unshift('ziphim');\r\n words.unshift('zuzim');\n\r\n return words;\r\n }\r\n\r\n /*\r\n * Returns a list of references in string form as a string[] that are shared\r\n * given a list of lists of references in string form.\r\n */\r\n private findSharedSet(results)\r\n {\r\n // FindSharedSet takes an array of reference arrays, and figures out\r\n // which references are shared by all arrays/sets, then returns a single\r\n // array of references.\r\n for (let j in results)\r\n {\r\n if (results.hasOwnProperty(j))\r\n {\r\n const refs = results[j];\r\n if (refs != null)\r\n {\r\n for (let i = 0; i < refs.length; i++)\r\n {\r\n const r = refs[i].split(':');\r\n // convert references to single integers.\r\n // Book * 100000000, Chapter * 10000, Verse remains same, add all together.\r\n let ref = r[0] * 100000000;\r\n ref = ref + (r[1] * 10000);\r\n ref = ref + r[2] * 1;\r\n results[j][i] = ref;\r\n }\r\n } else\r\n return null;\r\n }\r\n }\r\n\r\n // get the first result\r\n let result = results[0];\r\n\r\n // for each additional result, get the shared set\r\n for (let i = 1; i < results.length; i++)\r\n result = this.returnSharedSet(results[i], result);\r\n\r\n // convert the references back into book, chapter and verse.\r\n for (let i = 0; i < result.length; i++)\r\n {\r\n const ref = result[i];\r\n result[i] = Math.floor(ref / 100000000) + ':' + Math.floor((ref % 100000000) / 10000) + ':' + Math.floor((ref % 100000000) % 10000);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private returnSharedSet(x, y)\r\n {\r\n /// \r\n /// Takes two javascript arrays and returns an array\r\n /// containing a set of values shared by arrays.\r\n /// \r\n // declare iterator\r\n let i = 0;\r\n // declare terminator\r\n let t = (x.length < y.length) ? x.length : y.length;\r\n // sort the arrays\r\n x.sort((a, b) => a - b);\r\n y.sort((a, b) => a - b);\r\n // in this loop, we remove from the arrays, the\r\n // values that aren't shared between them.\r\n while (i < t)\r\n {\r\n if (x[i] === y[i])\r\n i++;\r\n\r\n if (x[i] < y[i])\r\n x.splice(i, 1);\r\n\r\n if (x[i] > y[i])\r\n y.splice(i, 1);\r\n\r\n t = (x.length < y.length) ? x.length : y.length;\r\n // we have to make sure to remove any extra values\r\n // at the end of an array when we reach the end of\r\n // the other.\r\n if (t === i && t < x.length)\r\n x.splice(i, x.length - i);\r\n\r\n if (t === i && t < y.length)\r\n y.splice(i, x.length - i);\r\n }\r\n // we could return y, because at this time, both arrays\r\n // are identical.\r\n return x;\r\n }\r\n}\r\n\r\nexport type WordLookupResult = {\r\n refs: string[],\r\n word: string,\r\n status: number,\r\n msg: string,\r\n}\r\n\r\ntype IndexResult = {\r\n r: string[];\r\n w: string;\r\n}\n\ntype WordToStem = { w:string, s: string}\r\ninterface Map\r\n{\r\n [K: string]: T;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/word-service.ts","import { EventEmitter, Component, Input, Output, ElementRef } from '@angular/core';\nimport { CardItem } from '../../pages/search/search';\n\n@Component({\n selector: 'error',\n templateUrl: 'error.html'\n})\nexport class Error\r\n{\n @Output()\n onClose = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n constructor(private elementRef: ElementRef)\r\n {\n }\n\n close()\r\n {\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out',\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error/error.ts","import { Component, Input} from '@angular/core';\n\n@Component({\n selector: 'error-message',\n templateUrl: 'error-message.html'\n})\nexport class ErrorMessage\r\n{\n @Input()\n msg: string;\n\n constructor()\r\n {\n this.msg = '';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error-message/error-message.ts","/// \nimport { Injectable } from '@angular/core';\nimport { AngularFireDatabase, AngularFireObject } from 'angularfire2/database';\nimport { AngularFireAuth } from 'angularfire2/auth';\nimport * as firebase from 'firebase/app';\nimport { Observable } from 'rxjs/Observable';\nimport { Catch } from 'rxjs/add/operator';\nimport { Storage } from '@ionic/storage';\n\nimport { CardItem } from '../pages/search/search';\nimport { Promise } from 'q';\nimport { setTimeout } from 'timers';\n\ntype fbObject = {\n ref: AngularFireObject,\n stream: Observable,\n};\n\nexport const DEFAULT_USER_NAME = 'john_doe';\n\nexport type User = {\n username: string,\n uid: string | null,\n strongs_modal: boolean,\n clear_search_after_query: boolean,\n items: CardItem[],\n append_to_bottom: boolean,\n insert_next_to_item: boolean,\n font_size: number,\n saved_pages: SavedPage[],\n verses_on_new_line: boolean,\n show_verse_numbers: boolean,\n}\n\nexport type SavedPage = {\n queries: CardItem[],\n title: string,\n}\n@Injectable()\nexport class ProfileService\n{\n localProfile: User;\n remoteProfile: fbObject | null;\n remoteLoggedIn: boolean;\n isWeb: boolean;\n needsSync = false;\n\n constructor(private local: Storage, private db: AngularFireDatabase, public firebaseAuth: AngularFireAuth)\n {\n this.isWeb = (document.URL.startsWith('http') || !document.URL.startsWith('http://localhost:8080'));\n\n // asyncrounosly kick off a poller that does the work of syncing remotely when the\n // profile needs to be synced.\n (function poll(self)\n {\n setTimeout(function ()\n {\n // Setup the next poll recursively\n if (self.needsSync)\n {\n // do the sync here.\n // If we have a remote profile then save it there too \n if (self.remoteProfile && self.localProfile.uid)\n {\n let st = new Date(); console.log('Saving the remote profile...');\n self.remoteProfile.ref.set(self.localProfile);\n console.log('Finished saving remote profile. ' + self.elapsed(st, new Date) + 'ms');\n }\n self.needsSync = false;\n }\n poll(self);\n }, 3000);\n })(this);\n\n let localObserver = this.userObserver().subscribe(\n user =>\n {\n this.update(user);\n this.localProfile = user;\n },\n error => console.log(error)\n );\n\n this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));\n\n }\n\n userObserver(): Observable\n {\n return Observable.fromPromise(this.local.get('profile')).map(json_profile =>\n {\n let t = this.profile();\n\n if (json_profile !== null) t = JSON.parse(json_profile);\n return t;\n });\n }\n\n profile(): User\n {\n if (!this.localProfile)\n {\n this.localProfile = ProfileService.createDefaultUser();\n }\n\n return this.localProfile\n }\n\n subscribeToRemoteProfile(db: AngularFireDatabase, user: firebase.User)\n {\n if (!user) return;\n\n let obj = db.object('/settings/' + user.uid);\n this.remoteProfile = {\n ref: obj as AngularFireObject,\n stream: obj.valueChanges() as Observable,\n };\n this.profile().username = user.displayName;\n this.profile().uid = user.uid;\n\n this.save();\n this.remoteProfile.stream.subscribe(\n user => this.handleRemotePreferenceChange(user),\n error => console.log(error));\n }\n\n handleRemotePreferenceChange(user: User)\n {\n if (user)\n {\n if (!user.saved_pages) user.saved_pages = [];\n if (!user.items) user.items = [];\n\n // merge the items so you don't loose anything.\n if (this.profile().items.length > 0)\n user.items.concat(this.localProfile.items);\n\n // merge the saved pages so you don't loose those either\n if (this.profile().saved_pages.length > 0)\n user.saved_pages.concat(this.localProfile.saved_pages);\n\n // don't sync things that don't make sense.\n this.profile().uid = user.uid;\n this.profile().username = user.username;\n\n // We only save the local change here since this is an update from our remote profile.\n this.localSave();\n }\n else\n {\n // No user is there so we should save our local to the remote.\n\n this.save();\n }\n }\n\n currentUser(): firebase.User\n {\n return this.firebaseAuth.auth.currentUser;\n }\n\n authenticate()\n {\n let self = this;\n let provider = new firebase.auth.GoogleAuthProvider();\n if (this.isWeb)\n {\n this.firebaseAuth.auth.signInWithPopup(provider);\n }\n else\n {\n firebase.auth().signInWithRedirect(provider).then(function ()\n {\n return firebase.auth().getRedirectResult();\n }).catch(function (error)\n {\n // Handle Errors here.\n console.log(error);\n });\n }\n this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));\n this.remoteLoggedIn = true;\n\n }\n\n refresh()\n {\n this.logout();\n this.authenticate();\n }\n\n logout()\n {\n this.firebaseAuth.auth.signOut(); // sign out\n this.remoteProfile = null; // inform the profile service not to bother\n this.remoteLoggedIn = false;\n }\n\n save()\n {\n this.localSave();\n this.needsSync = true;\n }\n\n private localSave()\n {\n this.local.set('profile', JSON.stringify(this.profile()));\n }\n\n\n private elapsed(start: Date, finish: Date)\n {\n let difference = new Date();\n difference.setTime(finish.getTime() - start.getTime());\n return difference.getMilliseconds();\n }\n\n // this function updates a user object, in case new properties have been introduced\n // in a release. \n update(t: User): boolean\n {\n let updated = false;\n let k;\n const user = this.profile();\n for (k in user)\n {\n if (user.hasOwnProperty(k))\n {\n if (t[k] === undefined)\n {\n t[k] = user[k];\n updated = true;\n }\n }\n }\n\n for (k in user)\n if (user.hasOwnProperty(k))\n user[k] = t[k];\n\n this.textSizeChanged();\n return updated;\n }\n\n private resetUser()\n {\n this.profile().strongs_modal = true;\n this.profile().clear_search_after_query = false;\n this.profile().items = [];\n this.profile().append_to_bottom = false;\n this.profile().insert_next_to_item = false;\n this.profile().font_size = 10;\n this.profile().saved_pages = [];\n this.profile().verses_on_new_line = true;\n this.profile().show_verse_numbers = true;\n }\n\n reset()\n {\n this.resetUser();\n this.remoteProfile.ref.set(this.profile())\n this.save();\n }\n\n removePage(page: SavedPage)\n {\n let idx = this.profile().saved_pages.indexOf(page);\n this.profile().saved_pages.splice(idx, 1);\n\n // Sync with remote\n this.save();\n }\n\n // TODO(jwall): This belongs somewhere else.\n textSizeChanged()\n {\n $('html').css('font-size', this.profile().font_size + 'px');\n }\n\n static createDefaultUser(): User\n {\n return {\n username: DEFAULT_USER_NAME,\n uid: null,\n strongs_modal: true,\n clear_search_after_query: false,\n items: [],\n append_to_bottom: false,\n insert_next_to_item: false,\n font_size: 10,\n saved_pages: [],\n verses_on_new_line: true,\n show_verse_numbers: true,\n };\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// ./src/services/profile-service.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["../../src/pages/search/search.ts","../../node_modules/@angular/core/esm5 lazy","../../src lazy","../../src/components/strongs-modal/strongs-modal.ts","../../src/services/strongs-service.ts","../../src/services/pages-service.ts","../../src/pages/settings/settings.ts","../../src/pages/help/help.ts","../../src/components/verse-picker/verse-picker.ts","../../src/app/main.ts","../../src/app/app.module.ts","../../src/libs/Reference.ts","../../src/app/app.component.ts","../../src/components/component-loader/component-loader.ts","../../src/components/passage/passage.ts","../../src/services/bible-service.ts","../../src/components/strongs/strongs.ts","../../src/components/words/words.ts","../../src/services/word-service.ts","../../src/components/error/error.ts","../../src/components/error-message/error-message.ts","../../src/services/profile-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAwD;AACgE;AAG5C;AAChB;AAEY;AACvB;AAC6B;AAK9E;IAOI,oBACY,YAA0B,EACxB,SAA0B,EAC1B,IAAoB,EACrB,WAA8B,EAC9B,SAA0B,EAC1B,cAA8B,EAC9B,MAAiB;QANlB,iBAAY,GAAZ,YAAY,CAAc;QACxB,cAAS,GAAT,SAAS,CAAiB;QAC1B,SAAI,GAAJ,IAAI,CAAgB;QACrB,gBAAW,GAAX,WAAW,CAAmB;QAC9B,cAAS,GAAT,SAAS,CAAiB;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAW;QAZ9B,gBAAW,GAAG,EAAE,CAAC;IAejB,CAAC;IAED,6BAAQ,GAAR;QAAA,iBAWC;QATG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACtC,qDAAqD;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YAEnB,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAExB,KAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACX,CAAC;IAED,oCAAe,GAAf,UAAgB,CAAO;QAEnB,oDAAoD;QACpD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CACtB,CAAC;YACG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;gBACG,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAC7B,CAAC;oBACG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;wBAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;oBACvE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;wBAClC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;oBACvE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;wBACnC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;oBACxE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;wBACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;4BACT,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;4BAClB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK;4BAC1C,IAAI,EAAE,EAAE,CAAC,IAAI;yBAChB,CAAC;oBAEN,YAAY,GAAG,IAAI,CAAC;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;QAED,GAAG,CAAC,CAAW,UAAa,EAAb,MAAC,CAAC,WAAW,EAAb,cAAa,EAAb,IAAa;YAAvB,IAAI,EAAE;YAEP,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CACzB,CAAC;gBACG,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;oBACG,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAC7B,CAAC;wBACG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;4BAC7B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;wBAC1E,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;4BAClC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;wBAC1E,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;4BACnC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;wBAC3E,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;4BACjC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gCACZ,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;gCAClB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK;gCAC1C,IAAI,EAAE,EAAE,CAAC,IAAI;6BAChB,CAAC;wBAEN,YAAY,GAAG,IAAI,CAAC;oBACxB,CAAC;gBACL,CAAC;YACL,CAAC;SACJ;QAED,wBAAwB;QACxB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEjD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAE3E,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC1B,IAAI;YACA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAExC,EAAE,CAAC,CAAC,YAAY,CAAC;YACb,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,yBAAI,GAAJ;QAEI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,oCAAe,GAAf;QAEI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,gCAAW,GAAX;QAEI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,4BAAO,GAAP;QAAA,iBAgCC;QA9BG,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE;gBACJ;oBACI,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,YAAY;iBAC5B;aACJ;YACD,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;wBAEL,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAClC,CAAC;iBACJ;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,cAAI;wBAET,IAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;wBACtF,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;wBAC3B,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACjC,CAAC;iBACJ;aACJ;SACJ,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,+BAAU,GAAV;QAAA,iBAQC;QANG,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CACvD,WAAC;YACD,QAAC,CAAC,KAAK,KAAK,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;QAAlC,CAAkC,CACrC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,6BAAQ,GAAR,UAAS,SAAS;QAEd,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IAC9C,CAAC;IACD,6BAAQ,GAAR,UAAS,SAAS;QAEd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,4BAAO,GAAP,UAAQ,CAAS;QAEb,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC;IACzB,CAAC;IACD,8BAAS,GAAT,UAAU,CAAS;QAEf,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;IAC3B,CAAC;IACD,8BAAS,GAAT,UAAU,CAAS;QAEf,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;IAC3B,CAAC;IACD,4BAAO,GAAP,UAAQ,CAAS;QAEb,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC;IACzB,CAAC;IAED,gCAAW,GAAX;QAEI,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,+FAAgB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,+BAAU,GAAV,UAAW,IAAI;QAEX,IAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEnD,2BAA2B;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,kCAAa,GAAb,UAAc,IAAc;QAExB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,CACnD,CAAC;YACG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAC3E,CAAC;gBACG,IAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;YAAC,IAAI;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CACJ,CAAC;YACG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAC3E,CAAC;gBACG,IAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;YAAC,IAAI;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,uCAAkB,GAAlB,UAAmB,IAAc;QAE7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,gCAAW,GAAX,UAAY,MAAc;QAA1B,iBAyDC;QAvDG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO;YAEvB,IAAM,IAAI,GAAe,EAAE,CAAC;YAE5B,IACA,CAAC;gBACG,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CACjB,CAAC;oBACG,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;wBACG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACrB,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CACb,CAAC;4BACG,qBAAqB;4BACrB,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gCAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;4BACrD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CACxC,CAAC;gCACG,uBAAuB;gCACvB,IAAI,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gCAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oCACzB,IAAI,GAAG,KAAK,CAAC;gCACjB,IAAI;oCACA,IAAI,GAAG,KAAK,CAAC;gCAEjB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gCAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACvD,CAAC;4BACD,IAAI,CACJ,CAAC;gCACG,yBAAyB;gCACzB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CACpB,CAAC;oCACG,IAAM,KAAK,GAAG,IAAI,kEAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oCACtC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gCACvH,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,EAAE,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACvD,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAElC,KAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,CAAC;gBACG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sCAAiB,GAAjB,UAAkB,MAAc,EAAE,eAAwB;QAA1D,iBAqBC;QAnBG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAG;YAE7B,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC1E,KAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CACtB;gBAEI,GAAG,CAAC,CAAa,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG;oBAAf,IAAI,IAAI;oBAET,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,CAC/F,CAAC;wBACG,IAAM,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,6FAAY,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAI,EAAE,CAAC,CAAC;wBACpH,KAAK,CAAC,OAAO,EAAE,CAAC;oBACpB,CAAC;oBAAC,IAAI;wBACF,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBAChC;gBACD,KAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAvTQ,UAAU;QAHtB,wEAAS,CAAC;WACmB;SAC7B,CAAC;mFASwC;YACb,sEAAe;YACpB,wEAAc;YACR,uEAAiB;YACnB,kFAAe;YACV,kEAAc;YACtB,OAAS;OAdrB,UAAU,CAwTtB;IAAD,CAAC;AAAA;SAxTY,UAAU;AA8TvB;IAAA;IAMA,CAAC;IAAD,CAAC;AAAD,CAAC,iC;;;;;;;AClVD;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kC;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kC;;;;;;;;;;;;;;;;;;;;;;ACVwE;AACJ;AACnB;AAC8B;AAO/E;IASI,sBAAoB,cAA8B,EACvC,QAAkB,EAClB,MAAiB,EACjB,QAAwB;QAHnC,iBAaC;QAbmB,mBAAc,GAAd,cAAc,CAAgB;QACvC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAW;QACjB,aAAQ,GAAR,QAAQ,CAAgB;QALnC,kBAAa,GAAG,IAAI,mEAAY,EAAU,CAAC;QAQvC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAI;YAE7B,IAAI,EAAE,GAAG,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC5C,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+BAAQ,GAAR;QAAA,iBAGC;QADG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAI,IAAI,YAAI,CAAC,IAAI,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAC;IAC9F,CAAC;IAED,8BAAO,GAAP;QAEI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,+BAAQ,GAAR,UAAS,CAAS;QAEd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,kCAAW,GAAX,UAAY,CAAS;QAEjB,MAAM,CAAC,kEAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,kCAAW,GAAX,UAAY,CAAS;QAEjB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IA1CD;QADC,qEAAM,EAAE;;uDACkC;IAPlC,YAAY;QALxB,wEAAS,CAAC;YACP,QAAQ,EAAE,eAAe;YACzB,WAAW,kFAAE,CAAoB;WACN;SAC9B,CAAC;4EAUoD;YAC7B,gEAAQ;YACV,qEAAS;YACP,SAAc;OAZ1B,YAAY,CAkDxB;IAAD,CAAC;AAAA;SAlDY,YAAY,oB;;;;;;;;;;;;;;;;;;;;ACVzB,gEAAgE;AACrB;AACN;AAGrC;IAKI,wBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAF9B,UAAK,GAAG,CAAC,CAAC;IAIV,CAAC;IAED,2CAAkB,GAAlB,UAAmB,EAAU,EAAE,IAAY;QAA3C,iBAGC;QADG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,IAAO,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,kCAAS,GAAT,UAAU,EAAU,EAAE,IAAY;QAAlC,iBA8IC;QA5IG,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG;YACV,MAAM,EAAE,EAAE;YACV,EAAE,EAAE,CAAC,CAAC;YACN,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC;QAC/C,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CACnB,CAAC;YACG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;YACzB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CACxB,CAAC;gBACG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oBAAoB,GAAG,EAAE,GAAG,+EAA+E,CAAC;YAClI,CAAC;QACL,CAAC;QACD,IAAI,CACJ,CAAC;YACG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;YACzB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CACxB,CAAC;gBACG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oBAAoB,GAAG,EAAE,GAAG,+EAA+E,CAAC;YAClI,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAEpB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAEvB,CAAC,CAAC,IAAI,CAAC;YACH,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,eAAe,GAAG,GAAG;YAC1B,QAAQ,EAAE,MAAM;YAChB,OAAO,YAAC,CAAsB,EAAE,CAAC,EAAE,CAAC;gBAEhC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;gBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,wCAAwC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrG,CAAC;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAE,IAAI,QAAC,EAAE,CAAC,CAAC,KAAK,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAA9C,CAA8C,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAEzB,CAAC,CAAC,IAAI,CAAC;YACH,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,mBAAmB,GAAG,GAAG;YAC9B,QAAQ,EAAE,MAAM;YAChB,OAAO,YAAC,CAA0B,EAAE,CAAC,EAAE,CAAC;gBAEpC,GAAG,CAAC,CAAW,UAAC,EAAD,OAAC,EAAD,eAAC,EAAD,IAAC;oBAAX,IAAI,EAAE;oBAEP,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAChE,CAAC;wBACG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;wBAC3B,KAAK,CAAC;oBACV,CAAC;iBACJ;YACL,CAAC;YACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;gBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,oDAAoD,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjH,CAAC;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAEvB,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CACnB,CAAC;YACG,GAAG,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;YACxD,IAAI,uBAA2C,CAAC;YAEhD,6BAA6B;YAC7B,CAAC,CAAC,IAAI,CAAC;gBACH,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,GAAG;gBACR,QAAQ,EAAE,MAAM;gBAChB,OAAO,YAAC,CAAuB,EAAE,CAAC,EAAE,CAAC;oBAEjC,uBAAqB,GAAG,CAAC,CAAC;gBAC9B,CAAC;gBACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;oBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;aACJ,CAAC,CAAC;YAEH,iBAAiB;YACjB,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAqB,uBAAqB,EAAE,UAAC,EAAE,EAAE,CAAC,IAAO,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAEvB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CACvC,CAAC;gBACG,GAAG,GAAG,iBAAe,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,UAAO,CAAC;gBACjE,CAAC,CAAC,IAAI,CAAC;oBACH,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,MAAM;oBAChB,OAAO,YAAC,CAAmB,EAAE,CAAC,EAAE,CAAC;wBAE7B,GAAG,CAAC,CAAa,UAAC,EAAD,OAAC,EAAD,eAAC,EAAD,IAAC;4BAAb,IAAI,IAAI;4BAET,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CACnD,CAAC;gCACG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gCACxB,KAAK,CAAC;4BACV,CAAC;yBACJ;oBACL,CAAC;oBACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;wBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IA5JQ,cAAc;QAD1B,yEAAU,EAAE;yCAMiB,2DAAI;OALrB,cAAc,CA6J1B;IAAD,qBAAC;CAAA;AA7J0B;;;;;;;;;;;;;;;;;;;;;;;;ACLgB;AACF;AACW;AACM;AACZ;AAK9C;IAKI,sBAAmB,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;QAE7B,IAAI,CAAC,KAAK,GAAG;YACT,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,wEAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACpG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,8EAAY,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5E,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,kEAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SAC1E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,mCAAY,GAAZ;QAEI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,oCAAa,GAAb;QAEI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,8BAAO,GAAP,UAAQ,IAAe;QAEnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,wEAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7H,CAAC;IAED,sCAAe,GAAf,UAAgB,UAAuB;QAEnC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,GAAG,CAAC,CAAU,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;YAAnB,IAAI,CAAC;YAEN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,wEAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACnH;IACL,CAAC;IAtCQ,YAAY;QADxB,yEAAU,EAAE;yCAMiB,+DAAO;OALxB,YAAY,CAuCxB;IAAD,mBAAC;CAAA;AAvCwB;;;;;;;;;;;;;;;;;;;;;;ACTzB,mEAAmE;AACzB;AACqB;AAGY;AAM3E;IAEI,sBACW,OAAsB,EACnB,SAA0B,EAC3B,cAA8B;QAFhC,YAAO,GAAP,OAAO,CAAe;QACnB,cAAS,GAAT,SAAS,CAAiB;QAC3B,mBAAc,GAAd,cAAc,CAAgB;IACxC,CAAC;IAEJ,sCAAe,GAAf;QAEI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,2BAAI,GAAJ;QAEI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC9B,CAAC;IAED,4BAAK,GAAL;QAEI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC/B,CAAC;IAED,iCAAU,GAAV,UAAW,IAAe;QAA1B,iBAwBC;QAtBG,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ;YAC7D,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;wBAEL,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAClC,CAAC;iBACJ;gBACD;oBACI,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE;wBAEL,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACzC,CAAC;iBACJ;aACJ;SACJ,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAhDQ,YAAY;QAJxB,wEAAS,CAAC;YACP,QAAQ,EAAE,UAAU;WACQ;SAC/B,CAAC;mFAImC;YACR,kFAAe;YACX,SAAc;OALlC,YAAY,CAiDxB;IAAD,CAAC;AAAA;SAjDY,YAAY,e;;;;;;;;;;;;;;;;;;;ACXiB;AAM1C;IAEI;IAEA,CAAC;IAJQ,QAAQ;QAJpB,wEAAS,CAAC;YACP,QAAQ,EAAE,MAAM;WACQ;SAC3B,CAAC;;OACW,QAAQ,CAMpB;IAAD,CAAC;AAAA;SANY,QAAQ,e;;;;;;;;;;;;;;;;;;;;;ACNmD;AACJ;AACb;AAMvD;IAQI,0BACW,QAAkB,EAClB,MAAiB,EACjB,QAAwB;QAHnC,iBAaC;QAZU,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAW;QACjB,aAAQ,GAAR,QAAQ,CAAgB;QARnC,kBAAa,GAAG,IAAI,mEAAY,EAAU,CAAC;QAE3C,YAAO,GAAG,KAAK,CAAC;QASZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,kEAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAI;YAE7B,IAAI,EAAE,GAAG,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC1C,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kCAAO,GAAP;QAEI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,kCAAO,GAAP;QAEI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IACD,kCAAO,GAAP,UAAQ,IAAU;QAEd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,qCAAU,GAAV,UAAW,OAAe;QAEtB,gDAAgD;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAxCD;QADC,qEAAM,EAAE;;2DACkC;IAHlC,gBAAgB;QAJ5B,wEAAS,CAAC;YACP,QAAQ,EAAE,cAAc;WACQ;SACnC,CAAC;6EAU+B;YACV,qEAAS;YACP,aAAc;OAX1B,gBAAgB,CA4C5B;IAAD,CAAC;AAAA;SA5CY,gBAAgB,e;;;;;;;;;;;;ACR8C;AAElC;AACI;AAE7C,+EAAc,EAAE,CAAC;AAEjB,yGAAsB,EAAE,CAAC,eAAe,CAAC,8DAAS,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPW;AACR;AACG;AACf;AAE8B;AACrB;AAEC;AACM;AAEnB;AAEY;AACM;AACZ;AAEoC;AAC1B;AACA;AACN;AACA;AACuB;AACA;AACE;AAE1B;AACS;AACQ;AAE3D,IAAM,cAAc,GAAG;IAC1B,MAAM,EAAE,yCAAyC;IACjD,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,2CAA2C;IACxD,SAAS,EAAE,oBAAoB;IAC/B,yCAAyC;IACzC,aAAa,EAAE,EAAE;IACjB,iBAAiB,EAAE,cAAc;CACpC,CAAC;AA+CF;IAAA;IAAyB,CAAC;IAAb,SAAS;QA7CrB,uEAAQ,CAAC;YACN,YAAY,EAAE;gBACV,6DAAK;gBACL,wEAAU;gBACV,+EAAY;gBACZ,mEAAQ;gBACR,uGAAe;gBACf,6EAAO;gBACP,6EAAO;gBACP,8FAAY;gBACZ,gGAAgB;gBAChB,uEAAK;gBACL,uEAAK;gBACL,8FAAY;aACf;YACD,OAAO,EAAE;gBACL,kEAAW,CAAC,OAAO,CAAC,6DAAK,EAAE,EAAE,EACrC;oBACE,KAAK,EAAE,EAEN;iBACF,CAAC;gBACM,0EAAkB,CAAC,OAAO,EAAE;gBAC5B,gFAAa;gBACb,iEAAU;gBACV,wEAAiB,CAAC,aAAa,CAAC,cAAc,CAAC;gBAC/C,iFAAqB;gBACrB,yFAAyB;aAC5B;YACD,SAAS,EAAE,CAAC,+DAAQ,CAAC;YACrB,eAAe,EAAE;gBACb,6DAAK;gBACL,wEAAU;gBACV,+EAAY;gBACZ,mEAAQ;gBACR,6EAAO;gBACP,6EAAO;gBACP,8FAAY;gBACZ,gGAAgB;gBAChB,uEAAK;gBACL,uEAAK;gBACL,8FAAY;aACf;YACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mEAAY,EAAE,QAAQ,EAAE,wEAAiB,EAAE,EAAE,2EAAS,EAAE,iFAAY,EAAE,iFAAc,CAAC;SAC/G,CAAC;OACW,SAAS,CAAI;IAAD,gBAAC;CAAA;AAAJ;;;;;;;;;ACrFtB;AAAA,kDAAkD;AAClD,0EAA0E;AAC1E,qCAAqC;AACrC,2DAA2D;AAE3D;IAAA;IAgBA,CAAC;IAdiB,gBAAI,GAAlB,UAAmB,GAAW;QAE1B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEa,iBAAK,GAAnB,UAAoB,GAAW;QAE3B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAEa,iBAAK,GAAnB,UAAoB,GAAW;QAE3B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IACL,kBAAC;AAAD,CAAC;AAED;IAMI,mBAAY,SAAiB;QAEzB,IAAI,CAAC,OAAO,GAAG;YACX,KAAK,EAAE;gBACH,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;aACZ;YACD,GAAG,EAAE;gBACD,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;aACZ;SACJ,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CACnC,CAAC;YACG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACpD,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3F,EAAE,CAAC,CACC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;YACvD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAC3D,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACpD,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACpE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IACpE,CAAC;IAEO,kCAAc,GAAtB;QAEI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAA,CAAC;IAEM,6BAAS,GAAjB,UAAkB,KAAe;QAE7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAEzC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACP,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,EAAE,CAAC,CAAC,KAAK,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI;YAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEO,iCAAa,GAArB,UAAsB,KAAc;QAEhC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,EAAE,CAAC,CAAC,KAAK,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAEpC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EACzC,CAAC;YACG,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,4CAA4C;YAC5C,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACG,KAAK,GAAG,IAAI,CAAC;gBACb,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,uDAAuD;gBACvD,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7B,CAAC;oBACG,IAAI,CAAC,MAAM,GAAG,mBAAmB,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;oBACzD,MAAM,CAAC;gBACX,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAChB,CAAC;oBACG,IAAI,CAAC,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC;YACX,CAAC;QACL,CAAC;IACL,CAAC;IAEO,kCAAc,GAAtB,UAAuB,SAAmB,EAAE,KAAe;QAEvD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,EAAE,CAAC,CAAC,KAAK,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAEpC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CACf,CAAC;YACG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CACxB,CAAC;gBACG,MAAM,CAAC;YACX,CAAC;YACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CACxB,CAAC;YACG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC;QACX,CAAC;QACD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EACzC,CAAC;YACG,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAC3B,CAAC;oBACG,IAAI,CAAC,MAAM,GAAG,kBAAkB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;oBACtD,MAAM,CAAC;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC;YACX,CAAC;QACL,CAAC;IACL,CAAC;IAEO,kCAAc,GAAtB,UAAuB,KAAc;QAArC,iBAaC;QAXG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAEhB,EAAE,CAAC,CAAC,KAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CACvC,CAAC;gBACG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACpD,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IAEM,uCAAmB,GAA3B,UAA4B,KAAe;QAA3C,iBAMC;QAJG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAEhB,KAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IAEM,6CAAyB,GAAjC,UAAkC,eAAwB,EAAE,eAAwB,EAAE,KAAc;QAEhG,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAEhB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE,CAAC;gBACG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,CACvE,CAAC;oBACG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IAEM,sCAAkB,GAA1B;QAEI,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAEhB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CACxB,CAAC;gBACG,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAAA,CAAC;IAEM,2BAAO,GAAf,UAAgB,CAAC;QAEb,IAAM,IAAI,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CACpB,CAAC;YACG,IAAI,EAAE,CAAC;QACX,CAAC;IACL,CAAC;IAAA,CAAC;IAEK,4BAAQ,GAAf;QAEI,wCAAwC;QACxC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAA,CAAC;IAEY,mBAAS,GAAvB,UAAwB,KAAa;QAEjC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,CACpD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAClD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,KAAK,CAAC,CAAC,CAAC,CACtE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,KAAK,CAAC,CAAC,CAAC,CACjF,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,KAAK,CAAC,CAAC,CAAC,CAClF,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CACrD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,KAAK,CAAC,CAAC,CAAC,CAClF,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mEAAmE,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7F,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC,CAAC,CAChE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CACvD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAChD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CACrD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CACvD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CACjD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CACrD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,sCAAsC;QACtC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,KAAK,CAAC,CAAC,CAAC,CACrE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC,CACjE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,+FAA+F;QAC/F,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CACzD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gFAAgF,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1G,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,sFAAsF,CAAC,KAAK,CAAC,CAAC,CAAC,CAChH,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gEAAgE,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1F,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC,CACjE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,8EAA8E,CAAC,KAAK,CAAC,CAAC,CAAC,CACxG,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oFAAoF,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9G,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,KAAK,CAAC,CAAC,CAAC,CAChF,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,KAAK,CAAC,CAAC,CAAC,CACtE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,CACxD,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/D,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,KAAK,CAAC,CAAC,CAAC,CACjF,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1C,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;YACG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEa,kBAAQ,GAAtB,UAAuB,OAAgB;QAEnC,wCAAwC;QACxC,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO;YAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK;YACzC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,GAAG,CAAC;QACf,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO;YAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK;YACzC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,CAAC;YACG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,CAAC;YACG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CACJ,CAAC;YACG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IA6hBa,kBAAQ,GAAtB,UAAuB,OAAe;QAElC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IA9hBa,eAAK,GAAgB;QAC/B;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,CAAC;SAChB;QACD;YACI,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,iBAAiB;YAC5B,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxN;QACD;YACI,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChL;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,WAAW;YACtB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC3H;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChK;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,qBAAqB;YAChC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxJ;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC/G;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpG;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChC;QACD;YACI,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5I;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChH;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,qBAAqB;YAChC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxG;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpH;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,0BAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACnI;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,2BAA2B;YACtC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC/J;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxD;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACvD;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACvL;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,GAAG;YACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SACvjB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5I;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChD;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACjR;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC9N;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC/M;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACtE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,cAAc;YACzB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpD;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACpB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5C;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,mBAAmB;YAC9B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;SACxB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,mBAAmB;YAC9B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;SACvE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAC/B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,mBAAmB;YAC9B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChI;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChF;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChH;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpG;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,sBAAsB;YACjC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChI;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChF;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,kCAAkC;YAC7C,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChF;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,mCAAmC;YAC9C,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,0BAA0B;YACrC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,0BAA0B;YACrC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,4BAA4B;YACvC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,2BAA2B;YACtC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,oCAAoC;YAC/C,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,qCAAqC;YAChD,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,0BAA0B;YACrC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACxC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,2BAA2B;YACtC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAChC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,qBAAqB;YAChC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACpB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,wBAAwB;YACnC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpE;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,kBAAkB;YAC7B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,wBAAwB;YACnC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,yBAAyB;YACpC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5B;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,wBAAwB;YACnC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACpB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,uBAAuB;YAClC,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACpB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACpB;QACD;YACI,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,qBAAqB;YAChC,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACvG;KACJ,CAAC;IAMN,gBAAC;CAAA;AAhiCqB;;;;;;;;;;;;;;;;;;;;;;;;;ACvB+B;AACS;AACT;AACM;AACP;AAEK;AAMzD;IAMI,eACW,QAAkB,EAClB,IAAoB,EACnB,SAAoB,EACpB,MAAoB,EACpB,QAAsB;QAJvB,aAAQ,GAAR,QAAQ,CAAU;QAClB,SAAI,GAAJ,IAAI,CAAgB;QACnB,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAc;QACpB,aAAQ,GAAR,QAAQ,CAAc;QAPlC,aAAQ,GAAQ,wEAAU,CAAC;QAUvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,6BAAa,GAAb;QAAA,iBASC;QAPG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;YAEvB,gEAAgE;YAChE,iEAAiE;YACjE,KAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC9B,KAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wBAAQ,GAAR,UAAS,IAAI;QAET,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEzB,oFAAoF;QACpF,6FAA6F;QAC7F,kGAAkG;QAClG,yFAAyF;QACzF,MAAM;QACN,mGAAmG;QACnG,kGAAkG;QAClG,gGAAgG;QAChG,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,yDAAyD;QACzD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IA5Ce;QAAf,yEAAS,CAAC,0DAAG,CAAC;kCAAM,0DAAG;sCAAC;IAFhB,KAAK;QAJjB,wEAAS,CAAC;YACP,WAAW,8EAAY;WACE;SAC5B,CAAC;kFAQ+B;YACZ,4EAAc;YACR,iFAAS;YACZ,6EAAY;YACV,EAAY;OAXzB,KAAK,CA+CjB;IAAD,CAAC;AAAA;SA/CY,KAAK,2B;;;;;;;;;;;;;;;;;;;ACZlB,yBAAyB;AACuH;AAEhJ,6CAA6C;AAK7C;IAOI,yBAAoB,wBAAkD,EAAU,QAAkB,EACtF,KAAwB;QADhB,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,aAAQ,GAAR,QAAQ,CAAU;QACtF,UAAK,GAAL,KAAK,CAAmB;QAH5B,sBAAiB,GAAG,KAAK,CAAC;IAGM,CAAC;IAEzC,yCAAe,GAAf;QACI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC;QACX,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACnD,qCAAqC;QACrC,oDAAoD;QACpD,oEAAoE;QAEpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,yCAAe,GAAf;QACI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,qCAAW,GAAX;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAzCgD;QAAhD,yEAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,yEAAgB,EAAE,CAAC;;mDAAQ;IAC/C;QAAR,oEAAK,EAAE;;iDAAM;IACL;QAAR,oEAAK,EAAE;;iDAAM;IAHL,eAAe;QAJ3B,wEAAS,CAAC;YACP,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,qBAAqB;SAClC,CAAC;yCAQgD,+EAAwB,EAAoB,+DAAQ;YAC/E,wEAAiB;OAR3B,eAAe,CA2C3B;IAAD,sBAAC;CAAA;AA3C2B;;;;;;;;;;;;;;;;;;;;;;ACR+D;AAEqC;AAC/E;AAOjD;IAmBI,iBAAoB,YAA0B,EAAU,UAAsB;QAA1D,iBAAY,GAAZ,YAAY,CAAc;QAAU,eAAU,GAAV,UAAU,CAAY;QAhB9E,kBAAa,GAAG,IAAI,mEAAY,EAAY,CAAC;QAE7C,YAAO,GAAG,IAAI,mEAAY,EAAY,CAAC;IAgBvC,CAAC;IAED,0BAAQ,GAAR;QAAA,iBAIC;QAFG,IAAI,CAAC,GAAG,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAI,IAAI,YAAI,CAAC,IAAI,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAC;IAC1F,CAAC;IAED,uBAAK,GAAL;QAAA,iBAeC;QAbG,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;YAChD,SAAS,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC;SACjD,EAAE;YACK,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;QACP,UAAU,CAAC;YAEP,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,sBAAI,GAAJ;QAAA,iBAmBC;QAjBG,IAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEjH,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,kBAAkB,CAAC;YACxF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAChE,IAAI;YACA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE3F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;QAEjC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAI;YAE5D,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,KAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,KAAI,CAAC,GAAG,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sBAAI,GAAJ;QAAA,iBAiBC;QAfG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QACpE,IAAI;YACA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE/F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;QAEjC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAI;YAE5D,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,KAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,KAAI,CAAC,GAAG,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wBAAM,GAAN;QAAA,iBA6CC;QA3CG,IAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtG,uFAAuF;QACvF,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;YACG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAC3C,CAAC;gBACG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;gBACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACvC,CAAC;QACL,CAAC;QACD,IAAI;YACA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE3F,sDAAsD;QACtD,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CACxG,CAAC;YACG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvF,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;YACrC,IAAI;gBACA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE5G,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC7F,CAAC;gBACG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACjF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YAC/D,CAAC;QACL,CAAC;QACD,IAAI;YACA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEvF,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QAEvC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAI;YAE5D,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,KAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,KAAI,CAAC,GAAG,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,6BAAW,GAAX,UAAY,OAAe;QAEvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,0BAAQ,GAAR,UAAS,OAAe;IAExB,CAAC;IAED,yBAAO,GAAP,UAAQ,CAAS;QAEb,MAAM,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,2BAAS,GAAT,UAAU,CAAY;QAElB,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC;QAEjB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,wBAAM,GAAN,UAAO,EAAc;QAEjB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,6EAAY,CAAC,UAAU,CAAC;IACzD,CAAC;IAED,2BAAS,GAAT,UAAU,EAAc;QAEpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,0BAAQ,GAAR,UAAS,EAAgB;QAErB,oCAAoC;QAEpC,iFAAiF;QACjF,IAAI,IAAI,GAAc,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACtD,IAAI,KAAK,GAAgB,EAAE,CAAC;QAE5B,6DAA6D;QAC7D,GAAG,CAAC,CAAU,UAAM,EAAN,OAAE,CAAC,GAAG,EAAN,cAAM,EAAN,IAAM;YAAf,IAAI,CAAC;YAEN,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACnB,CAAC;gBACG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,IAAI,GAAG,EAAE,CAAC,EAAE,6EAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC;oBACrB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2CAA2C;YAC7E,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;SACJ;QAED,4CAA4C;QAC5C,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IA/LD;QADC,qEAAM,EAAE;;kDACoC;IAE7C;QADC,qEAAM,EAAE;;4CAC8B;IAGvC;QADC,oEAAK,EAAE;;6CACW;IAGnB;QADC,oEAAK,EAAE;;oDACiB;IAGzB;QADC,oEAAK,EAAE;;qDACkB;IAdjB,OAAO;QALnB,wEAAS,CAAC;YACP,QAAQ,EAAE,SAAS;YACnB,WAAW,8EAAE,CAAc;WACF;SAC5B,CAAC;gBAoBgF;OAnBrE,OAAO,CAmMnB;IAAD,CAAC;AAAA;SAnMY,OAAO,mB;;;;;;;;;;;;;;;;;;;;;ACVpB,gEAAgE;AAChE,gEAAgE;AACrB;AACN;AACkB;AAGvD;IAQI,sBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAH9B,UAAK,GAAG,CAAC,CAAC;QAKN,IAAI,CAAC,4BAA4B,EAAE;IACvC,CAAC;qBAXQ,YAAY;IAarB,mDAA4B,GAA5B;QAAA,iBAGC;QADG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO,IAAO,OAAO,CAAC,KAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,0CAAmB,GAAnB;QAEI,IACA,CAAC;YACG,EAAE,CAAC,CAAC,cAAY,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,cAAY,CAAC,UAAU,CAAC;gBAC5E,MAAM,CAAC,cAAY,CAAC,UAAU,CAAC;YAEnC,IAAM,MAAI,GAAG,IAAI,CAAC;YAElB,IAAM,GAAG,GAAG,wBAAwB,CAAC;YAErC,CAAC,CAAC,IAAI,CAAC;gBACH,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,GAAG;gBACR,QAAQ,EAAE,MAAM;gBAChB,OAAO,YAAC,CAAuB;oBAE3B,cAAY,CAAC,UAAU,GAAG,CAAC,CAAC;gBAChC,CAAC;gBACD,KAAK;oBAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAClD,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,CAAC,cAAY,CAAC,UAAU,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,CAAC;YACG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,yCAAkB,GAAlB,UAAmB,OAAgB;QAAnC,iBAGC;QADG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO,IAAO,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,gCAAS,GAAT,UAAU,OAAgB;QAEtB,IACA,CAAC;YACG,IAAM,MAAI,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,+BAA+B;YACnD,IAAI,CAAC,MAAM,GAAG;gBACV,EAAE,EAAE,EAAE;gBACN,SAAS,EAAE,EAAE;gBACb,GAAG,EAAE,kEAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAChC,MAAM,EAAE,CAAC;gBACT,GAAG,EAAE,IAAI;aACZ,CAAC;YAEF,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CACpE,CAAC;gBACG,MAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,MAAI,CAAC,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,yDAAyD,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;gBAC7K,MAAM,CAAC,MAAI,CAAC,MAAM,CAAC;YACvB,CAAC;YAED,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAChE,CAAC;gBACG,MAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxB,MAAI,CAAC,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,yDAAyD,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;gBACzK,MAAM,CAAC,MAAI,CAAC,MAAM,CAAC;YACvB,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE7E,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EACjF,CAAC;gBACG,IAAM,GAAG,GAAG,0BAA0B,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC;gBAE5F,CAAC,CAAC,IAAI,CAAC;oBACH,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,MAAM;oBAChB,OAAO,YAAC,CAAe;wBAEnB,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,CAAC;oBACD,KAAK;wBAED,MAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACxB,MAAI,CAAC,MAAM,CAAC,GAAG,GAAG,mCAAmC,GAAG,MAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;oBAClF,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC;YAED,EAAE,CAAC,CAAC,MAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,MAAI,CAAC,MAAM,CAAC;YAEvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAC7C,CAAC;gBACG,IAAM,GAAG,GAAiB,EAAE,CAAC;gBAC7B,IAAI,KAAK,SAAQ,CAAC;gBAClB,IAAI,GAAG,UAAC;gBAER,8BAA8B;gBAC9B,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACZ,CAAC;oBACG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;wBACG,+DAA+D;wBAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAEjG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAEvC,kCAAkC;wBAClC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACvC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,kEAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAClD,CAAC;oBACD,IAAI;wBACA,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI;oBACA,KAAK,GAAG,CAAC,CAAC;gBAEd,2BAA2B;gBAC3B,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACjC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC5B,IAAI;oBACA,GAAG,GAAG,GAAG,CAAC;gBAEd,4BAA4B;gBAC5B,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBACxC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBACnC,GAAG,GAAG,GAAG,CAAC;gBAEd,6EAA6E;gBAC7E,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE;oBAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE1C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;oBAChB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;oBACvB,GAAG,EAAE,GAAG;iBACX,CAAC,CAAC;YACP,CAAC;YAGD,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YAClC,IAAI;gBACA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YAElC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,CAAC;YACG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IA5KQ,YAAY;QADxB,yEAAU,EAAE;yCASiB,2DAAI;OARrB,YAAY,CA6KxB;IAAD,mBAAC;;CAAA;AA7KwB;;;;;;;;;;;;;;;;;;;;;;ACPkG;AAC1E;AAE8B;AAO/E;IAaI,iBAAoB,cAA8B,EAAU,UAAsB;QAA9D,mBAAc,GAAd,cAAc,CAAgB;QAAU,eAAU,GAAV,UAAU,CAAY;QAVlF,YAAO,GAAG,IAAI,mEAAY,EAAY,CAAC;QAGvC,kBAAa,GAAG,IAAI,mEAAY,EAAY,CAAC;IAS7C,CAAC;IAGD,0BAAQ,GAAR,UAAS,GAAG;QAER,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,EAAE;YAE/B,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,MAAM,CAAC;YAC5E,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,MAAM,CAAC;YAEvE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;gBACT,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oCAAkB,GAAlB;QAEI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,0BAAQ,GAAR;QAAA,iBAMC;QAJG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;aAClF,IAAI,CAAC,cAAI;YACN,YAAI,CAAC,IAAI,GAAG,IAAI;QAAhB,CAAgB,CACnB,CAAC;IACV,CAAC;IAED,uBAAK,GAAL;QAAA,iBAeC;QAbG,IAAM,CAAC,GAAG,GAAG,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;YAChD,SAAS,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC;SACjD,EAAE;YACK,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;QACP,UAAU,CAAC;YAEP,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,0BAAQ,GAAR,UAAS,CAAS;QAEd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,6BAAW,GAAX,UAAY,CAAS;QAEjB,MAAM,CAAC,kEAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,6BAAW,GAAX,UAAY,CAAS;QAEjB,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IAvED;QADC,qEAAM,EAAE;;4CAC8B;IAGvC;QADC,qEAAM,EAAE;;kDACoC;IAG7C;QADC,oEAAK,EAAE;;6CACW;IASnB;QADC,2EAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;2CAWzC;IA5BQ,OAAO;QALnB,wEAAS,CAAC;YACP,QAAQ,EAAE,SAAS;YACnB,WAAW,kFAAE,CAAc;WACA;SAC9B,CAAC;gBAcoF;OAbzE,OAAO,CA2EnB;IAAD,CAAC;AAAA;SA3EY,OAAO,mB;;;;;;;;;;;;;;;;;;;;;ACVpB,mEAAmE;AACwD;AAC1E;AAE2B;AAO5E;IAeI,eAAoB,WAAwB,EAAU,UAAsB;QAAxD,gBAAW,GAAX,WAAW,CAAa;QAAU,eAAU,GAAV,UAAU,CAAY;QAZ5E,YAAO,GAAG,IAAI,mEAAY,EAAY,CAAC;QAGvC,kBAAa,GAAG,IAAI,mEAAY,EAAY,CAAC;IAW7C,CAAC;IAGD,wBAAQ,GAAR,UAAS,GAAG;QAER,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,EAAE;YAE7B,IAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,IAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC;YAExD,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CACzB,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAC9B,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAC9B,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAC9B,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAC/B,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,SAAS;gBACT,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACM,kCAAkB,GAAzB;QAEI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,wBAAQ,GAAR;QAAA,iBAKC;QAHG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAI;YAC5D,YAAI,CAAC,IAAI,GAAG,IAAI;QAAhB,CAAgB,CACnB,CAAC;IACN,CAAC;IAED,qBAAK,GAAL;QAAA,iBAeC;QAbG,IAAM,CAAC,GAAG,GAAG,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;YAChD,SAAS,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC;SACjD,EAAE;YACK,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;QACP,UAAU,CAAC;YAEP,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,2BAAW,GAAX,UAAY,CAAS;QAEjB,MAAM,CAAC,kEAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,2BAAW,GAAX,UAAY,CAAS;QAEjB,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IA9FD;QADC,qEAAM,EAAE;;0CAC8B;IAGvC;QADC,qEAAM,EAAE;;gDACoC;IAG7C;QADC,oEAAK,EAAE;;2CACW;IAWnB;QADC,2EAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;yCAuCzC;IA1DQ,KAAK;QALjB,wEAAS,CAAC;YACP,QAAQ,EAAE,OAAO;YACjB,WAAW,4EAAE,CAAY;WACD;SAC3B,CAAC;cAgB8E;OAfnE,KAAK,CAkGjB;IAAD,CAAC;AAAA;SAlGY,KAAK,mB;;;;;;;;;;;;;;;;;;;;ACTyB;AACN;AAGrC;IAKI,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAF9B,eAAU,GAAgB,EAAE,CAAC;QAIzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,0CAAoB,GAApB,UAAqB,GAAW;QAE5B,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,wCAAkB,GAAlB,UAAmB,GAAW;QAA9B,iBAGC;QADG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO,IAAO,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,+BAAS,GAAT,UAAU,GAAW;QAEjB,IAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAM,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAE5B,gCAAgC;QAChC,GAAG,CAAC,CAAU,UAAE,EAAF,SAAE,EAAF,gBAAE,EAAF,IAAE;YAAX,IAAI,CAAC;YAEN,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAEhC,uEAAuE;YACvE,kDAAkD;YAClD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EACrC,CAAC;gBACG,sEAAsE;gBACtE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACZ,CAAC;oBACG,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;wBACG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;wBACvF,KAAK,CAAC;oBACV,CAAC;gBACL,CAAC;gBACD,IAAI,CACJ,CAAC;oBACG,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAC5C,CAAC;wBACG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;wBACvF,KAAK,CAAC;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC,kCAAkC;QAEpC,qGAAqG;QACrG,0EAA0E;QAC1E,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,+BAA+B,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QAEjG,IAAI,MAAgB,CAAC;QACrB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CACzB,CAAC;YACG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CACJ,CAAC;YACG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,+BAA+B,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QAEjG,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED;;;;;KAKC;IACO,sCAAgB,GAAxB;QAEI,yGAAyG;QACzG,IAAI,CAAe,CAAC;QAEpB,CAAC,CAAC,IAAI,CAAC;YACH,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,kCAAkC;YACvC,QAAQ,EAAE,MAAM;YAChB,OAAO,YAAC,CAAe,EAAE,CAAC,EAAE,CAAC;gBAEzB,CAAC,GAAG,CAAC,CAAC;YACV,CAAC;YACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;gBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;SACJ,CAAC,CAAC;QAEH,sBAAsB;QACtB,GAAG,CAAC,CAAU,UAAC,EAAD,OAAC,EAAD,eAAC,EAAD,IAAC;YAAV,IAAI,CAAC;YAEN,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9B;IACL,CAAC;IAED;;;;;MAKE;IACM,yCAAmB,GAA3B,UAA4B,GAAG,EAAE,KAAK;QAElC,yGAAyG;QACzG,IAAI,CAAgB,CAAC;QAErB,CAAC,CAAC,IAAI,CAAC;YACH,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,MAAM;YAChB,OAAO,YAAC,CAAgB,EAAE,CAAC,EAAE,CAAC;gBAE1B,CAAC,GAAG,CAAC,CAAC;YACV,CAAC;YACD,KAAK,YAAC,OAAO,EAAE,MAAM,EAAE,KAAK;gBAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;SACJ,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,KAAK,KAAK,EAAb,CAAa,CAAC,CAAC;QAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI;YACA,MAAM,CAAC,EAAE,CAAC;IAClB,CAAC;IAEO,qCAAe,GAAvB;QAEI,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAED;;;MAGE;IACM,mCAAa,GAArB,UAAsB,OAAO;QAEzB,oEAAoE;QACpE,wEAAwE;QACxE,uBAAuB;QACvB,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CACtB,CAAC;YACG,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;gBACG,IAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CACjB,CAAC;oBACG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EACpC,CAAC;wBACG,IAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC7B,yCAAyC;wBACzC,4EAA4E;wBAC5E,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;wBAC3B,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;wBAC3B,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBACxB,CAAC;gBACL,CAAC;gBAAC,IAAI;oBACF,MAAM,CAAC,IAAI,CAAC;YACpB,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAExB,iDAAiD;QACjD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YACnC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtD,4DAA4D;QAC5D,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EACtC,CAAC;YACG,IAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC;QACxI,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC;IAEO,qCAAe,GAAvB,UAAwB,CAAC,EAAE,CAAC;QAExB,aAAa;QACb,qDAAqD;QACrD,iDAAiD;QACjD,cAAc;QACd,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACpD,kBAAkB;QAClB,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAC;QACxB,+CAA+C;QAC/C,2CAA2C;QAC3C,OAAO,CAAC,GAAG,CAAC,EACZ,CAAC;YACG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,EAAE,CAAC;YAER,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEnB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEnB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YAChD,kDAAkD;YAClD,kDAAkD;YAClD,aAAa;YACb,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACxB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE9B,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACxB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,uDAAuD;QACvD,iBAAiB;QACjB,MAAM,CAAC,CAAC,CAAC;IACb,CAAC;IAnaQ,WAAW;QADvB,yEAAU,EAAE;yCAMiB,2DAAI;OALrB,WAAW,CAoavB;IAAD,kBAAC;CAAA;AApauB;;;;;;;;;;;;;;;;;;;;ACN2D;AAOnF;IAQI,eAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAL1C,YAAO,GAAG,IAAI,mEAAY,EAAY,CAAC;IAOvC,CAAC;IAED,qBAAK,GAAL;QAAA,iBAeC;QAbG,IAAM,CAAC,GAAG,GAAG,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;YAChD,SAAS,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC;SACjD,EAAE;YACK,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,aAAa;SACxB,CAAC,CAAC;QACP,UAAU,CAAC;YAEP,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAxBD;QADC,qEAAM,EAAE;;0CAC8B;IAGvC;QADC,oEAAK,EAAE;;2CACW;IANV,KAAK;QAJjB,wEAAS,CAAC;YACP,QAAQ,EAAE,OAAO;WACQ;SAC5B,CAAC;cAS4C;OARjC,KAAK,CA4BjB;IAAD,CAAC;AAAA;SA5BY,KAAK,mB;;;;;;;;;;;;;;;;;;;ACP8B;AAMhD;IAKI;QAEI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IALD;QADC,oEAAK,EAAE;;6CACI;IAHH,YAAY;QAJxB,wEAAS,CAAC;YACP,QAAQ,EAAE,eAAe;WACQ;SACpC,CAAC;;OACW,YAAY,CASxB;IAAD,CAAC;AAAA;SATY,YAAY,oB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNzB,gEAAgE;AACrB;AACoC;AAC3B;AACX;AACI;AAEJ;AAIL;AAO7B,IAAM,iBAAiB,GAAG,UAAU,CAAC;AAqB5C;IAQI,wBAAoB,KAAc,EAAU,EAAuB,EAAS,YAA6B;QAAzG,iBAsCC;QAtCmB,UAAK,GAAL,KAAK,CAAS;QAAU,OAAE,GAAF,EAAE,CAAqB;QAAS,iBAAY,GAAZ,YAAY,CAAiB;QAFzG,cAAS,GAAG,KAAK,CAAC;QAId,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAEpG,kFAAkF;QAClF,8BAA8B;QAC9B,CAAC,cAAc,IAAI;YAEf,0DAAU,CAAC;gBAEP,kCAAkC;gBAClC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACnB,CAAC;oBACG,oBAAoB;oBACpB,sDAAsD;oBACtD,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAChD,CAAC;wBACG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;wBAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;wBACjE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC9C,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACxF,CAAC;oBACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAET,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAC7C,cAAI;YAEA,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC,EACD,eAAK,IAAI,cAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAC9B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,eAAK,IAAI,YAAI,CAAC,wBAAwB,CAAC,KAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAA7C,CAA6C,CAAC,CAAC;IAElG,CAAC;uBA9CQ,cAAc;IAgDvB,qCAAY,GAAZ;QAAA,iBASC;QAPG,MAAM,CAAC,2DAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAY;YAErE,IAAI,CAAC,GAAG,KAAI,CAAC,OAAO,EAAE,CAAC;YAEvB,EAAE,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;gBAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxD,MAAM,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAO,GAAP;QAEI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CACvB,CAAC;YACG,IAAI,CAAC,YAAY,GAAG,gBAAc,CAAC,iBAAiB,EAAE,CAAC;QAC3D,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,YAAY;IAC5B,CAAC;IAED,iDAAwB,GAAxB,UAAyB,EAAuB,EAAE,IAAmB;QAArE,iBAgBC;QAdG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAAC,MAAM,CAAC;QAElB,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG;YACjB,GAAG,EAAE,GAA8B;YACnC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAsB;SACjD,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAC/B,cAAI,IAAI,YAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAvC,CAAuC,EAC/C,eAAK,IAAI,cAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAC;IACrC,CAAC;IAED,qDAA4B,GAA5B,UAA6B,IAAU;QAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,CACT,CAAC;YACG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YAC7C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAEjC,+CAA+C;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAE/C,wDAAwD;YACxD,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE3D,2CAA2C;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAExC,sFAAsF;YACtF,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,CACJ,CAAC;YACG,8DAA8D;YAE9D,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;IACL,CAAC;IAED,oCAAW,GAAX;QAEI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;IAC9C,CAAC;IAED,qCAAY,GAAZ;QAAA,iBAsBC;QApBG,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,QAAQ,GAAG,IAAI,kDAAa,CAAC,kBAAkB,EAAE,CAAC;QACtD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CACf,CAAC;YACG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CACJ,CAAC;YACG,kDAAa,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBAE9C,MAAM,CAAC,kDAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC/C,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK;gBAEpB,sBAAsB;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,eAAK,IAAI,YAAI,CAAC,wBAAwB,CAAC,KAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAA7C,CAA6C,CAAC,CAAC;QAC9F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAE/B,CAAC;IAED,gCAAO,GAAP;QAEI,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,+BAAM,GAAN;QAEI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,2CAA2C;QACtE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,6BAAI,GAAJ;QAEI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,kCAAS,GAAjB;QAEI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAGO,gCAAO,GAAf,UAAgB,KAAW,EAAE,MAAY;QAErC,IAAI,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;IAED,mFAAmF;IACnF,mBAAmB;IACnB,+BAAM,GAAN,UAAO,CAAO;QAEV,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,CAAC;QACN,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CACf,CAAC;YACG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3B,CAAC;gBACG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACvB,CAAC;oBACG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACf,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;YACL,CAAC;QACL,CAAC;QAED,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAEO,kCAAS,GAAjB;QAEI,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC7C,CAAC;IAED,8BAAK,GAAL;QAEI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,mCAAU,GAAV,UAAW,IAAe;QAEtB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1C,mBAAmB;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,4CAA4C;IAC5C,wCAAe,GAAf;QAEI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAEM,gCAAiB,GAAxB;QAEI,MAAM,CAAC;YACH,QAAQ,EAAE,iBAAiB;YAC3B,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,KAAK;YAC/B,KAAK,EAAE,EAAE;YACT,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,KAAK;YAC1B,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;SAC3B,CAAC;IACN,CAAC;IA/PQ,cAAc;QAD1B,yEAAU,EAAE;yCASkB,+DAAO,EAAc,kFAAmB,EAAuB,0EAAe;OARhG,cAAc,CAiQ1B;IAAD,qBAAC;;CAAA;AAjQ0B","file":"main.js","sourcesContent":["import { Type, Component, OnInit } from '@angular/core';\nimport { Loading, LoadingController, ModalController, NavParams, AlertController, MenuController } from 'ionic-angular';\nimport { Storage } from '@ionic/storage';\n\nimport { StrongsModal } from '../../components/strongs-modal/strongs-modal';\nimport { PagesService } from '../../services/pages-service';\n\nimport { ProfileService, User } from './../../services/profile-service';\nimport { Reference } from '../../libs/Reference';\nimport { VersePickerModal } from '../../components/verse-picker/verse-picker';\n\n@Component({\n templateUrl: 'search.html'\n})\nexport class SearchPage implements OnInit\n{\n searchQuery = '';\n last: CardItem;\n loader: Loading;\n title: string;\n\n constructor(\n private pagesService: PagesService\n , private alertCtrl: AlertController\n , private menu: MenuController\n , public loadingCtrl: LoadingController\n , public modalCtrl: ModalController\n , public profileService: ProfileService\n , public params: NavParams\n )\n {\n }\n\n ngOnInit(): void\n {\n let t = this.profileService.profile();\n // Check if there is a profile saved in local storage\n this.loader = this.loadingCtrl.create({ content: 'Loading Page...' });\n this.loader.present().then(() =>\n {\n this.initializeItems(t);\n\n this.loader.dismiss();\n });\n }\n \n initializeItems(u: User)\n {\n // migrate old way of storing card items to the new.\n let has_migrated = false;\n for (let i in u.items)\n {\n if (u.items.hasOwnProperty(i))\n {\n let ci = u.items[i];\n if (ci['data'] !== undefined)\n {\n if (ci['data'].qry !== undefined)\n u.items[i] = { qry: ci['data'].qry, dict: ci.dict, type: ci.type };\n else if (ci['data'].ref !== undefined)\n u.items[i] = { qry: ci['data'].ref, dict: ci.dict, type: ci.type };\n else if (ci['data'].word !== undefined)\n u.items[i] = { qry: ci['data'].word, dict: ci.dict, type: ci.type };\n else if (ci['data'].sn !== undefined)\n u.items[i] = {\n qry: ci['data'].sn,\n dict: ci['prefix'] === 'G' ? 'grk' : 'heb',\n type: ci.type\n };\n\n has_migrated = true;\n }\n }\n }\n\n for (let pg of u.saved_pages)\n {\n for (let i in pg.queries)\n {\n if (pg.queries.hasOwnProperty(i))\n {\n let ci = pg.queries[i];\n if (ci['data'] !== undefined)\n {\n if (ci['data'].qry !== undefined)\n pg.queries[i] = { qry: ci['data'].qry, dict: ci.dict, type: ci.type };\n else if (ci['data'].ref !== undefined)\n pg.queries[i] = { qry: ci['data'].ref, dict: ci.dict, type: ci.type };\n else if (ci['data'].word !== undefined)\n pg.queries[i] = { qry: ci['data'].word, dict: ci.dict, type: ci.type };\n else if (ci['data'].sn !== undefined)\n pg.queries[i] = {\n qry: ci['data'].sn,\n dict: ci['prefix'] === 'G' ? 'grk' : 'heb',\n type: ci.type\n };\n\n has_migrated = true;\n }\n }\n }\n }\n\n // initialize the pages.\n this.pagesService.initializePages(u.saved_pages);\n\n if (this.params.data.queries !== undefined)\n this.profileService.profile().items = this.params.data.queries.slice();\n\n if (this.params.data.title === undefined)\n this.title = 'Search';\n else\n this.title = this.params.data.title;\n\n if (has_migrated)\n this.profileService.save();\n }\n\n save()\n {\n this.profileService.save();\n }\n textSizeChanged()\n {\n this.profileService.textSizeChanged();\n this.save();\n }\n\n actionsMenu()\n {\n this.menu.open('actions');\n }\n\n addPage()\n {\n const alert = this.alertCtrl.create({\n title: 'Save Search as Page',\n inputs: [\n {\n name: 'title',\n placeholder: 'Page Title'\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n handler: (): void =>\n {\n console.log('Cancel clicked');\n }\n },\n {\n text: 'Save',\n handler: data =>\n {\n const p = { queries: this.profileService.profile().items.slice(), title: data.title };\n this.profileService.profile().saved_pages.push(p);\n this.profileService.save();\n this.pagesService.addPage(p);\n }\n }\n ]\n });\n alert.present();\n }\n\n updatePage()\n {\n const page = this.profileService.profile().saved_pages.find(\n i =>\n i.title === this.params.data.title\n );\n page.queries = this.profileService.profile().items.slice();\n this.profileService.save();\n }\n\n setQuery(searchbar)\n {\n this.searchQuery = searchbar.target.value;\n }\n getQuery(searchbar)\n {\n this.updateUIwithItems(this.searchQuery, true);\n }\n\n isError(t: string)\n {\n return t === 'Error';\n }\n isPassage(t: string)\n {\n return t === 'Passage';\n }\n isStrongs(t: string)\n {\n return t === 'Strongs';\n }\n isWords(t: string)\n {\n return t === 'Words';\n }\n\n versePicker()\n {\n const modal = this.modalCtrl.create(VersePickerModal, { onItemClicked: this });\n modal.present();\n }\n\n removeItem(item)\n {\n const idx = this.profileService.profile().items.indexOf(item);\n this.profileService.profile().items.splice(idx, 1);\n\n // save the users settings.\n this.profileService.save();\n }\n addItemToList(item: CardItem)\n {\n if (this.profileService.profile().append_to_bottom)\n {\n if (this.last != null && this.profileService.profile().insert_next_to_item)\n {\n const idx = this.profileService.profile().items.indexOf(this.last);\n this.profileService.profile().items.splice(idx + 1, 0, item);\n } else\n this.profileService.profile().items.push(item);\n }\n else\n {\n if (this.last != null && this.profileService.profile().insert_next_to_item)\n {\n const idx = this.profileService.profile().items.indexOf(this.last);\n this.profileService.profile().items.splice(idx, 0, item);\n } else\n this.profileService.profile().items.unshift(item);\n }\n this.last = null;\n }\n getItemsNextToCard(data: OpenData)\n {\n this.last = data.card;\n this.updateUIwithItems(data.qry, data.from_search_bar);\n }\n \n getItemList(search: string): Promise\n {\n return new Promise((resolve) =>\n {\n const list: CardItem[] = [];\n\n try\n {\n const qs = search.split(';');\n for (let x in qs)\n {\n if (qs.hasOwnProperty(x))\n {\n let q = qs[x].trim();\n if (q !== '')\n {\n // its a search term.\n if (q.search(/[0-9]/i) === -1)\n list.push({ qry: q, dict: 'na', type: 'Words' });\n else if (q.search(/(H|G)[0-9]/i) !== -1)\n {\n // its a strongs lookup\n let dict = q.substring(0, 1);\n\n if (dict.search(/h/i) !== -1)\n dict = 'heb';\n else\n dict = 'grk';\n\n q = q.substring(1, q.length);\n list.push({ qry: q, dict: dict, type: 'Strongs' });\n }\n else\n {\n // its a verse reference.\n if (q.trim() !== '')\n {\n const myref = new Reference(q.trim());\n list.push({ qry: myref.toString(), dict: myref.Section.start.book.book_number > 39 ? 'G' : 'H', type: 'Passage' });\n }\n }\n }\n }\n }\n if (this.profileService.profile().clear_search_after_query)\n $('.searchbar-input').val('');\n\n this.profileService.save();\n }\n catch (error)\n {\n list.push({ qry: error, type: 'Error', dict: 'na' });\n console.log(error);\n }\n\n resolve(list);\n });\n }\n\n updateUIwithItems(search: string, from_search_bar: boolean)\n {\n this.getItemList(search).then(lst =>\n {\n this.loader = this.loadingCtrl.create({ content: 'Looking up Query...' });\n this.loader.present().then(\n () =>\n {\n for (let item of lst)\n {\n if (item.type === 'Strongs' && this.profileService.profile().strongs_modal && !from_search_bar)\n {\n const modal = this.modalCtrl.create(StrongsModal, { sn: parseInt(item.qry), dict: item.dict, onItemClicked: this });\n modal.present();\n } else\n this.addItemToList(item);\n }\n this.loader.dismiss();\n }\n );\n });\n }\n}\n\nexport type OpenData = { card: CardItem, qry: string, from_search_bar: boolean }\n\nexport type CardItem = { qry: string, type: string, dict: string }\n\nclass Item\n{\n id: number;\n data: any;\n type: Type;\n dict: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/search/search.ts","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 148;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/core/esm5 lazy\n// module id = 148\n// module chunks = 0","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 245;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src lazy\n// module id = 245\n// module chunks = 0","import { EventEmitter, Component, Output, OnInit } from '@angular/core';\nimport { Platform, NavParams, ViewController } from 'ionic-angular';\nimport { Reference } from '../../libs/Reference';\nimport { StrongsResult, StrongsService } from '../../services/strongs-service';\n\n@Component({\n selector: 'strongs-modal',\n templateUrl: 'strongs-modal.html',\n providers: [StrongsService]\n})\nexport class StrongsModal implements OnInit\r\n{\n sn: number;\n dict: string;\n item: StrongsResult;\n\n @Output()\n onItemClicked = new EventEmitter();\n\n constructor(private strongsService: StrongsService,\n public platform: Platform,\n public params: NavParams,\n public viewCtrl: ViewController\n )\r\n {\n this.sn = this.params.get('sn') as number;\n this.dict = this.params.get('dict') as string;\n this.onItemClicked.subscribe(item =>\r\n {\n let pg = this.params.get('onItemClicked');\n pg.updateUIwithItems(item, false);\n });\n }\n\n ngOnInit(): void\r\n {\r\n this.strongsService.getResultAsPromise(this.sn, this.dict).then(data => this.item = data);\r\n }\n\r\n dismiss()\r\n {\n this.viewCtrl.dismiss();\n }\n\r\n openItem(p: string)\r\n {\n this.onItemClicked.emit(p);\n this.dismiss();\n }\n\n makePassage(p: string)\r\n {\n return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];\n }\n\n openPassage(p: string)\r\n {\n let ref = this.makePassage(p);\n this.onItemClicked.emit(ref);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/strongs-modal/strongs-modal.ts","/// \r\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\n\r\n@Injectable()\r\nexport class StrongsService\r\n{\r\n result: StrongsResult;\r\n count = 0;\r\n\r\n constructor(private http: Http)\r\n {\r\n }\r\n\r\n getResultAsPromise(sn: number, dict: string): Promise\r\n {\r\n return new Promise((resolve, reject) => { resolve(this.getResult(sn, dict)); });\r\n }\r\n\r\n getResult(sn: number, dict: string): StrongsResult\r\n {\r\n const self = this;\r\n this.result = {\r\n prefix: '',\r\n sn: -1,\r\n strongs: [],\r\n def: null,\r\n rmac: null,\r\n crossrefs: null,\r\n rmaccode: '',\r\n status: 0,\r\n msg: ':)'\r\n };\r\n let url = dict + Math.ceil(sn / 100) + '.json';\r\n if (dict === 'grk')\r\n {\r\n self.result.prefix = 'G';\r\n if (sn > 5624 || sn < 1)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Strong\\'s Number G' + sn + ' is out of range. Strong\\'s numbers range from 1 - 5624 in the New Testament.';\r\n }\r\n }\r\n else\r\n {\r\n self.result.prefix = 'H';\r\n if (sn > 8674 || sn < 1)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Strong\\'s Number H' + sn + ' is out of range. Strong\\'s numbers range from 1 - 8674 in the Old Testament.';\r\n }\r\n }\r\n this.result.sn = sn;\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/strongs/' + url,\r\n dataType: 'json',\r\n success(d: StrongsDefinition[], t, x)\r\n {\r\n self.result.strongs = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve Strong\\'s Data for ' + self.result.prefix + self.result.sn;\r\n }\r\n });\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n self.result.def = self.result.strongs.find(el => (el.i === this.result.prefix + this.result.sn));\r\n self.result.strongs = [];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/strongscr/cr' + url,\r\n dataType: 'json',\r\n success(d: StrongsCrossReference[], t, x)\r\n {\r\n for (let cr of d)\r\n {\r\n if (cr.id.toUpperCase() === self.result.prefix + self.result.sn)\r\n {\r\n self.result.crossrefs = cr;\r\n break;\r\n }\r\n }\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve Strong\\'s Cross References for ' + self.result.prefix + self.result.sn;\r\n }\r\n });\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n if (dict === 'grk')\r\n {\r\n url = 'data/rmac/rs' + (Math.ceil(sn / 1000)) + '.json';\r\n let rmac_cross_references: RMACCrossReference[];\r\n\r\n // rmac is a two get process.\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: RMACCrossReference[], t, x)\r\n {\r\n rmac_cross_references = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // deal with RMAC\r\n let tmp = $.grep(rmac_cross_references, (el, i) => { return el.i === sn + ''; });\r\n if (tmp.length === 0)\r\n return this.result;\r\n\r\n this.result.rmaccode = tmp[0].r;\r\n if (this.result.rmaccode !== undefined)\r\n {\r\n url = `data/rmac/r-${this.result.rmaccode.substring(0, 1)}.json`;\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: RMACDefinition[], t, x)\r\n {\r\n for (let rmac of d)\r\n {\r\n if (rmac.id.toLowerCase() === self.result.rmaccode)\r\n {\r\n self.result.rmac = rmac;\r\n break;\r\n }\r\n }\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n }\r\n }\r\n return this.result;\r\n }\r\n}\r\nexport type StrongsResult =\r\n {\r\n prefix: string,\r\n sn: number,\r\n strongs: StrongsDefinition[],\r\n def: StrongsDefinition,\r\n rmac: RMACDefinition,\r\n crossrefs: StrongsCrossReference,\r\n rmaccode: string,\r\n status: number,\r\n msg: string,\r\n };\r\n\r\ntype StrongsDefinition = { n: number, i: string, tr: string, de: StrongsDefinitionPart[], lemma: string, p: string }\r\ntype StrongsDefinitionPart = { sn: string, w: string }\r\ntype StrongsCrossReference =\r\n {\r\n id: string, // strongs id H1|G1\r\n t: string, // strongs testament grk|heb\r\n d: string, // strongs word/data Aaron {ah-ar-ohn'}\r\n ss: [\r\n {\r\n w: string,\r\n rs: [\r\n { r: string }\r\n ],\r\n }\r\n ],\r\n }\r\n\r\ntype RMACDefinition = { id: string, d: string[] }\r\n\r\ntype RMACCrossReference = { i: string, r: string }\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/strongs-service.ts","import { Injectable } from '@angular/core';\r\nimport { Storage } from '@ionic/storage';\r\nimport { SearchPage } from '../pages/search/search';\r\nimport { SettingsPage } from '../pages/settings/settings';\r\nimport { HelpPage } from '../pages/help/help';\r\n\r\nimport { SavedPage } from './profile-service';\r\n\r\n@Injectable()\r\nexport class PagesService\r\n{\r\n pages: Array<{ title: string, component: any, params: any, icon: string }>;\r\n savedPages: Array<{ title: string, component: any, params: any }>;\r\n\r\n constructor(public local: Storage)\r\n {\r\n this.pages = [\r\n { title: 'Search', component: SearchPage, params: { queries: [], title: 'Search' }, icon: 'search' },\r\n { title: 'Settings', component: SettingsPage, params: {}, icon: 'settings' },\r\n { title: 'Help', component: HelpPage, params: {}, icon: 'help-circle' }\r\n ];\r\n this.savedPages = [];\r\n }\r\n\r\n getMainPages(): Array<{ title: string, component: any }>\r\n {\r\n return this.pages;\r\n }\r\n\r\n getSavedPages(): Array<{ title: string, component: any }>\r\n {\r\n return this.savedPages;\r\n }\r\n\r\n addPage(page: SavedPage)\r\n {\r\n this.savedPages.push({ title: page.title, component: SearchPage, params: { queries: page.queries, title: page.title } });\r\n }\r\n\r\n initializePages(page_array: SavedPage[])\r\n {\r\n this.savedPages = [];\r\n\r\n for (let p of page_array)\r\n {\r\n this.savedPages.push({ title: p.title, component: SearchPage, params: { queries: p.queries, title: p.title } });\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/pages-service.ts","/// \r\nimport { Component } from '@angular/core';\r\nimport { NavController, AlertController } from 'ionic-angular';\r\nimport { Storage } from '@ionic/storage';\r\n\r\nimport { ProfileService, SavedPage } from '../../services/profile-service';\r\n\r\n@Component({\r\n selector: 'settings',\r\n templateUrl: 'settings.html',\r\n})\r\nexport class SettingsPage\r\n{\r\n constructor(\r\n public navCtrl: NavController\r\n , private alertCtrl: AlertController\r\n , public profileService: ProfileService\r\n ) {}\r\n\r\n textSizeChanged()\r\n {\r\n this.profileService.textSizeChanged();\r\n this.save();\r\n }\r\n\r\n save()\r\n {\r\n this.profileService.save()\r\n }\r\n\r\n reset()\r\n {\r\n this.profileService.reset()\r\n }\r\n\r\n removePage(page: SavedPage)\r\n {\r\n let alert = this.alertCtrl.create({\r\n title: 'Confirm Delete',\r\n message: 'Do you want to delete the ' + page.title + ' page?',\r\n buttons: [\r\n {\r\n text: 'Cancel',\r\n role: 'cancel',\r\n handler: () =>\r\n {\r\n console.log('Cancel clicked');\r\n }\r\n },\r\n {\r\n text: 'Ok',\r\n handler: () =>\r\n {\r\n this.profileService.removePage(page);\r\n }\r\n }\r\n ]\r\n });\r\n alert.present();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/settings/settings.ts","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'help',\r\n templateUrl: 'help.html'\r\n})\r\nexport class HelpPage\r\n{\r\n constructor()\r\n {\r\n }\r\n \r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/help/help.ts","import { EventEmitter, Component, Output, OnInit } from '@angular/core';\nimport { Platform, NavParams, ViewController } from 'ionic-angular';\nimport { Book, Reference } from '../../libs/Reference';\n\n@Component({\n selector: 'verse-picker',\n templateUrl: 'verse-picker.html'\n})\nexport class VersePickerModal\n{\n @Output()\n onItemClicked = new EventEmitter();\n books: Array;\n hasBook = false;\n book: Book;\n\n constructor(\n public platform: Platform,\n public params: NavParams,\n public viewCtrl: ViewController\n )\n {\n this.hasBook = false;\n this.books = Reference.Books;\n this.onItemClicked.subscribe(item =>\r\n {\n let pg = this.params.get('onItemClicked');\n pg.updateUIwithItems(item, false);\n });\n }\n\n toBooks()\n {\n this.hasBook = false;\n this.book = null;\n }\n\n dismiss()\n {\n this.viewCtrl.dismiss();\n }\n setBook(book: Book)\n {\n this.hasBook = true;\n this.book = book;\n }\n setChapter(chapter: number)\n {\n // close the control, trigger the passage event.\n this.onItemClicked.emit(this.book.name + ' ' + chapter);\n this.dismiss();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/verse-picker/verse-picker.ts","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\nimport {enableProdMode} from '@angular/core';\n\nenableProdMode();\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/main.ts","import { ProfileService } from './../services/profile-service';\nimport { NgModule, ErrorHandler } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { HttpModule } from '@angular/http';\n\nimport { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';\nimport { IonicStorageModule } from '@ionic/storage';\n\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\n\nimport { MyApp } from './app.component';\n\nimport { SearchPage } from '../pages/search/search';\nimport { SettingsPage } from '../pages/settings/settings';\nimport { HelpPage } from '../pages/help/help';\n\nimport { ComponentLoader } from '../components/component-loader/component-loader';\nimport { Passage } from '../components/passage/passage';\nimport { Strongs } from '../components/strongs/strongs';\nimport { Words } from '../components/words/words';\nimport { Error } from '../components/error/error';\nimport { StrongsModal } from '../components/strongs-modal/strongs-modal';\nimport { ErrorMessage } from '../components/error-message/error-message';\nimport { VersePickerModal } from '../components/verse-picker/verse-picker';\n\nimport { AngularFireModule } from 'angularfire2';\nimport { AngularFireAuthModule } from 'angularfire2/auth';\nimport { AngularFireDatabaseModule } from 'angularfire2/database';\n\nexport const firebaseConfig = {\n apiKey: 'AIzaSyA3UV4s56CV2EumgvZmyJBTyU-vhv0xhc8',\n authDomain: 'dynamicbible-7c6cf.firebaseapp.com',\n databaseURL: 'https://dynamicbible-7c6cf.firebaseio.com',\n projectId: 'dynamicbible-7c6cf',\n // TODO(jwall): What is a storage bucket?\n storageBucket: '',\n messagingSenderId: '200739882604'\n};\n\n@NgModule({\n declarations: [\n MyApp,\n SearchPage,\n SettingsPage,\n HelpPage,\n ComponentLoader,\n Passage,\n Strongs,\n StrongsModal,\n VersePickerModal,\n Words,\n Error,\n ErrorMessage\n ],\n imports: [\n IonicModule.forRoot(MyApp),\n IonicStorageModule.forRoot(),\n BrowserModule,\n HttpModule,\n AngularFireModule.initializeApp(firebaseConfig),\n AngularFireAuthModule,\n AngularFireDatabaseModule,\n ],\n bootstrap: [IonicApp],\n entryComponents: [\n MyApp,\n SearchPage,\n SettingsPage,\n HelpPage,\n Passage,\n Strongs,\n StrongsModal,\n VersePickerModal,\n Words,\n Error,\n ErrorMessage\n ],\n providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }, StatusBar, SplashScreen, ProfileService]\n})\nexport class AppModule { }\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","// This code was written by Jeremy and Jason Wall.\r\n// Feel free to use, and if you can, include a link back to www.walljm.com\r\n// Jason@walljm.com // www.walljm.com\r\n// Jeremy@marzhillstudios.com // jeremy.marzhillstudios.com\r\n\r\nclass StringUtils\r\n{\r\n public static trim(str: string): string\r\n {\r\n return str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n public static ltrim(str: string): string\r\n {\r\n return str.replace(/^\\s+/, '');\r\n }\r\n\r\n public static rtrim(str: string): string\r\n {\r\n return str.replace(/\\s+$/, '');\r\n }\r\n}\r\n\r\nexport class Reference\r\n{\r\n private ref: string;\r\n Section: Section;\r\n errAcc: string;\r\n\r\n constructor(reference: string)\r\n {\r\n this.Section = {\r\n start: {\r\n book: null,\r\n chapter: '',\r\n verse: ''\r\n },\r\n end: {\r\n book: null,\r\n chapter: '',\r\n verse: ''\r\n }\r\n };\r\n this.ref = reference.toLowerCase().trim();\r\n this.parseReference();\r\n\r\n if (this.Section.end.book === null)\r\n {\r\n this.Section.end.book = this.Section.start.book;\r\n }\r\n\r\n if (this.Section.end.chapter === '') this.Section.end.chapter = this.Section.start.chapter;\r\n if (\r\n Number(this.Section.start.verse) > Number(this.Section.end.verse) &&\r\n this.Section.start.chapter === this.Section.end.chapter &&\r\n this.Section.start.book.name === this.Section.end.book.name\r\n ) this.Section.end.verse = this.Section.start.verse;\r\n if (this.Section.start.verse === '') this.Section.start.verse = '1';\r\n if (this.Section.end.verse === '') this.Section.end.verse = '*';\r\n }\r\n\r\n private parseReference()\r\n {\r\n this.parseBook(false);\r\n this.parseFirstNum(false);\r\n const foundFirstVerse = this.ref.search(/:.*-/) !== -1;\r\n this.maybeParseSecondNum(false);\r\n this.maybeParseRangeSep();\r\n const foundSecondBook = this.ref.search(/\\w\\s+\\d/i) !== -1;\r\n\r\n this.maybeParseBook(true);\r\n this.maybeParseFirstNumOrVerse(foundSecondBook, foundFirstVerse, true);\r\n this.maybeParseSecondNum(true);\r\n };\r\n\r\n private parseBook(isEnd?: boolean)\r\n {\r\n this.ref = this.ref.toLowerCase().trim();\r\n\r\n let fbook = this.ref.substring(0, this.ref.search(/\\w\\s+\\d/i) + 1);\r\n if (!fbook)\r\n fbook = this.ref;\r\n this.ref = this.ref.slice(this.ref.search(/\\w\\s+\\d/i) + 1);\r\n if (isEnd) this.Section.end.book = Reference.parseBook(fbook);\r\n else this.Section.start.book = Reference.parseBook(fbook);\r\n }\r\n\r\n private parseFirstNum(isEnd: boolean)\r\n {\r\n let thing = this.Section.start;\r\n if (isEnd) thing = this.Section.end;\r\n\r\n this.ref = StringUtils.ltrim(this.ref);\r\n let found = false;\r\n for (let i = 0; i <= this.ref.length; i++)\r\n {\r\n const c = this.ref.charAt(i);\r\n // Grab characters until we hit a non digit.\r\n if ('0'.charAt(0) <= c && c <= '9'.charAt(0))\r\n {\r\n found = true;\r\n thing.chapter = thing.chapter.concat(c);\r\n }\r\n else\r\n {\r\n // if the chapter is longer than 3 digits it's an error\r\n if (thing.chapter.length > 3)\r\n {\r\n this.errAcc = 'Chapter too long\"' + thing.chapter + '\".';\r\n return;\r\n }\r\n else if (!found)\r\n {\r\n this.errAcc = 'No chapter found' + this.ref;\r\n }\r\n this.ref = this.ref.slice(i);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private parseSecondNum(skipColon?: boolean, isEnd?: boolean)\r\n {\r\n let thing = this.Section.start;\r\n if (isEnd) thing = this.Section.end;\r\n\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (!skipColon)\r\n {\r\n if (this.ref[0] !== ':')\r\n {\r\n return;\r\n }\r\n this.ref = this.ref.slice(1);\r\n }\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (this.ref[0] === '*')\r\n {\r\n thing.verse = '*';\r\n this.ref = this.ref.slice(1);\r\n return;\r\n }\r\n for (let i = 0; i <= this.ref.length; i++)\r\n {\r\n const c = this.ref.charAt(i);\r\n if ('0'.charAt(0) <= c && c <= '9'.charAt(0))\r\n {\r\n thing.verse = thing.verse.concat(c);\r\n }\r\n else\r\n {\r\n if (thing.verse.length > 3)\r\n {\r\n this.errAcc = 'Verse too long \"' + thing.verse + '\".';\r\n return;\r\n }\r\n this.ref = this.ref.slice(i);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private maybeParseBook(isEnd: boolean)\r\n {\r\n return this.maybeDo(() =>\r\n {\r\n if (this.ref.search(/\\w\\s+\\d/i) === -1)\r\n {\r\n this.Section.end.book = this.Section.start.book;\r\n }\r\n else\r\n {\r\n this.parseBook(isEnd);\r\n }\r\n });\r\n };\r\n\r\n private maybeParseSecondNum(isEnd?: boolean)\r\n {\r\n return this.maybeDo(() =>\r\n {\r\n this.parseSecondNum(false, isEnd);\r\n });\r\n };\r\n\r\n private maybeParseFirstNumOrVerse(foundSecondBook: boolean, foundFirstVerse: boolean, isEnd: boolean)\r\n {\r\n const self = this;\r\n return this.maybeDo(() =>\r\n {\r\n if (self.Section.end.book.name === self.Section.start.book.name)\r\n {\r\n if (self.ref.search(/:/) !== -1 || foundSecondBook || !foundFirstVerse)\r\n {\r\n self.parseFirstNum(isEnd);\r\n }\r\n self.parseSecondNum(true, isEnd);\r\n }\r\n });\r\n };\r\n\r\n private maybeParseRangeSep()\r\n {\r\n const self = this;\r\n return this.maybeDo(() =>\r\n {\r\n if (self.ref[0] === '-')\r\n {\r\n self.ref = StringUtils.ltrim(self.ref.slice(1));\r\n }\r\n });\r\n };\r\n\r\n private maybeDo(f)\r\n {\r\n const func = f;\r\n this.ref = StringUtils.ltrim(this.ref.toLowerCase());\r\n if (this.ref !== '')\r\n {\r\n func();\r\n }\r\n };\r\n\r\n public toString()\r\n {\r\n // get the starting book, chapter, verse\r\n return Reference.toString(this.Section);\r\n };\r\n\r\n public static parseBook(fbook: string): Book\r\n {\r\n if (fbook.search(/\\b(genesis|gen|ge|gn)\\b/i) !== -1)\r\n {\r\n return this.bookName(1);\r\n }\r\n if (fbook.search(/\\b(exodus|ex|exo|exod|exd)\\b/i) !== -1)\r\n {\r\n return this.bookName(2);\r\n }\r\n if (fbook.search(/\\b(leviticus|lev|le|levi|lv)\\b/i) !== -1)\r\n {\r\n return this.bookName(3);\r\n }\r\n if (fbook.search(/\\b(numbers|num|nu|numb|number)\\b/i) !== -1)\r\n {\r\n return this.bookName(4);\r\n }\r\n if (fbook.search(/\\b(deuteronomy|deut|de|dt|deu)\\b/i) !== -1)\r\n {\r\n return this.bookName(5);\r\n }\r\n if (fbook.search(/\\b(joshua|josh|jos)\\b/i) !== -1)\r\n {\r\n return this.bookName(6);\r\n }\r\n if (fbook.search(/\\b(judges|jud|jdg|judg)\\b/i) !== -1)\r\n {\r\n return this.bookName(7);\r\n }\r\n if (fbook.search(/\\b(ruth|ru)\\b/i) !== -1)\r\n {\r\n return this.bookName(8);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(samuel|sa|sam|sml)\\b/i) !== -1)\r\n {\r\n return this.bookName(9);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(samuel|sa|sam|sml)\\b/i) !== -1)\r\n {\r\n return this.bookName(10);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(kings|king|kgs|kn|k|ki)\\b/i) !== -1)\r\n {\r\n return this.bookName(11);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(kings|king|kgs|kn|k|ki)\\b/i) !== -1)\r\n {\r\n return this.bookName(12);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(chronicles|chron|ch|chr)\\b/i) !== -1)\r\n {\r\n return this.bookName(13);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(chronicles|chron|ch|chr)\\b/i) !== -1)\r\n {\r\n return this.bookName(14);\r\n }\r\n if (fbook.search(/\\b(ezra|ezr)\\b/i) !== -1)\r\n {\r\n return this.bookName(15);\r\n }\r\n if (fbook.search(/\\b(nehemiah|neh|ne|nehamiah)\\b/i) !== -1)\r\n {\r\n return this.bookName(16);\r\n }\r\n if (fbook.search(/\\b(esther|est|es|esth)\\b/i) !== -1)\r\n {\r\n return this.bookName(17);\r\n }\r\n if (fbook.search(/\\b(job|jo|jb)\\b/i) !== -1)\r\n {\r\n return this.bookName(18);\r\n }\r\n if (fbook.search(/\\b(psalms|ps|psa|psalm|psm)\\b/i) !== -1)\r\n {\r\n return this.bookName(19);\r\n }\r\n if (fbook.search(/\\b(proverbs|prov|pr|pro|proverb|prv|prvbs)\\b/i) !== -1)\r\n {\r\n return this.bookName(20);\r\n }\r\n if (fbook.search(/\\b(ecclesiastes|eccl|ecc|eccles|ec|ecl|ecclesiaste)\\b/i) !== -1)\r\n {\r\n return this.bookName(21);\r\n }\r\n if (fbook.search(/\\b(song\\sof\\ssolomon|song\\sof\\ssongs|sos|ss|son|so|song|songs)\\b/i) !== -1)\r\n {\r\n return this.bookName(22);\r\n }\r\n if (fbook.search(/\\b(isaiah|is|isah|isai|ia)\\b/i) !== -1)\r\n {\r\n return this.bookName(23);\r\n }\r\n if (fbook.search(/\\b(jerimiah|jeremiah|jer|je|jere)\\b/i) !== -1)\r\n {\r\n return this.bookName(24);\r\n }\r\n if (fbook.search(/\\b(lamentations|lam|la|lamentation)\\b/i) !== -1)\r\n {\r\n return this.bookName(25);\r\n }\r\n if (fbook.search(/\\b(ezekiel|eze|ezk|ezek)\\b/i) !== -1)\r\n {\r\n return this.bookName(26);\r\n }\r\n if (fbook.search(/\\b(daniel|dan|dn|dl|da)\\b/i) !== -1)\r\n {\r\n return this.bookName(27);\r\n }\r\n if (fbook.search(/\\b(hosea|hos|ho)\\b/i) !== -1)\r\n {\r\n return this.bookName(28);\r\n }\r\n if (fbook.search(/\\b(joel|joe|jl)\\b/i) !== -1)\r\n {\r\n return this.bookName(29);\r\n }\r\n if (fbook.search(/\\b(amos|am|amo)\\b/i) !== -1)\r\n {\r\n return this.bookName(30);\r\n }\r\n if (fbook.search(/\\b(obadiah|oba|ob|obad)\\b/i) !== -1)\r\n {\r\n return this.bookName(31);\r\n }\r\n if (fbook.search(/\\b(jonah|jnh|jon)\\b/i) !== -1)\r\n {\r\n return this.bookName(32);\r\n }\r\n if (fbook.search(/\\b(micah|mic|mi)\\b/i) !== -1)\r\n {\r\n return this.bookName(33);\r\n }\r\n if (fbook.search(/\\b(nahum|nah|na)\\b/i) !== -1)\r\n {\r\n return this.bookName(34);\r\n }\r\n if (fbook.search(/\\b(habakkuk|hab|ha|habakuk)\\b/i) !== -1)\r\n {\r\n return this.bookName(35);\r\n }\r\n if (fbook.search(/\\b(zephaniah|zeph|zep)\\b/i) !== -1)\r\n {\r\n return this.bookName(36);\r\n }\r\n if (fbook.search(/\\b(haggia|hag|hg|haggai)\\b/i) !== -1)\r\n {\r\n return this.bookName(37);\r\n }\r\n if (fbook.search(/\\b(zechariah|zech|zch|zec)\\b/i) !== -1)\r\n {\r\n return this.bookName(38);\r\n }\r\n if (fbook.search(/\\b(malachi|mal)\\b/i) !== -1)\r\n {\r\n return this.bookName(39);\r\n }\r\n if (fbook.search(/\\b(matthew|mt|matt|mat)\\b/i) !== -1)\r\n {\r\n return this.bookName(40);\r\n }\r\n if (fbook.search(/\\b(mark|mrk|mk|mr)\\b/i) !== -1)\r\n {\r\n return this.bookName(41);\r\n }\r\n if (fbook.search(/\\b(luke|lu|lke|luk|lk)\\b/i) !== -1)\r\n {\r\n return this.bookName(42);\r\n }\r\n // must come before the Gospel of John\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(62);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(63);\r\n }\r\n if (fbook.search(/\\b(3|iii|3rd|third)\\s*(john|jn|jo)\\b/i) !== -1)\r\n {\r\n return this.bookName(64);\r\n }\r\n // 1, 2, and 3rd John need to come before this one, else this will catch those book references.\r\n if (fbook.search(/\\b(john|jn|jhn)\\b/i) !== -1)\r\n {\r\n return this.bookName(43);\r\n }\r\n if (fbook.search(/\\b(acts|ac|act)\\b/i) !== -1)\r\n {\r\n return this.bookName(44);\r\n }\r\n if (fbook.search(/\\b(romans|rom|ro|rm|roman)\\b/i) !== -1)\r\n {\r\n return this.bookName(45);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\\b/i) !== -1)\r\n {\r\n return this.bookName(46);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(corinthian|cor|corinthians|corinth|corin|corth|corint)\\b/i) !== -1)\r\n {\r\n return this.bookName(47);\r\n }\r\n if (fbook.search(/\\b(galatians|galatian|galations|gal|ga|gala|galation|galat)\\b/i) !== -1)\r\n {\r\n return this.bookName(48);\r\n }\r\n if (fbook.search(/\\b(ephesians|eph|ep|ephes|ephe|ephs)\\b/i) !== -1)\r\n {\r\n return this.bookName(49);\r\n }\r\n if (fbook.search(/\\b(philippians|phi|phil|ph|philip)\\b/i) !== -1)\r\n {\r\n return this.bookName(50);\r\n }\r\n if (fbook.search(/\\b(colossians|col|co|colossian|colos|coloss)\\b/i) !== -1)\r\n {\r\n return this.bookName(51);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\\b/i) !== -1)\r\n {\r\n return this.bookName(52);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(thessalonians|the|thessa|thessalonian|thes|thess|th)\\b/i) !== -1)\r\n {\r\n return this.bookName(53);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(timothy|tim|ti|timoth|tm)\\b/i) !== -1)\r\n {\r\n return this.bookName(54);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(timothy|tim|timoth|tm)\\b/i) !== -1)\r\n {\r\n return this.bookName(55);\r\n }\r\n if (fbook.search(/\\b(titus|tit)\\b/i) !== -1)\r\n {\r\n return this.bookName(56);\r\n }\r\n if (fbook.search(/\\b(philemon|phlmn|phl|phm|phile|philem)\\b/i) !== -1)\r\n {\r\n return this.bookName(57);\r\n }\r\n if (fbook.search(/\\b(hebrews|heb|he|hebrew)\\b/i) !== -1)\r\n {\r\n return this.bookName(58);\r\n }\r\n if (fbook.search(/\\b(james|jam|ja|jas|jms|jame|jm)\\b/i) !== -1)\r\n {\r\n return this.bookName(59);\r\n }\r\n if (fbook.search(/\\b(1|i|1st|first)\\s*(peter|pe|pet|pete|pt|p)\\b/i) !== -1)\r\n {\r\n return this.bookName(60);\r\n }\r\n if (fbook.search(/\\b(2|ii|2nd|second|sec)\\s*(peter|pe|pet|pete|pt|p)\\b/i) !== -1)\r\n {\r\n return this.bookName(61);\r\n }\r\n if (fbook.search(/\\b(jude|ju)\\b/i) !== -1)\r\n {\r\n return this.bookName(65);\r\n }\r\n if (fbook.search(/\\b(revelation|rev|re|revelations|rv)\\b/i) !== -1)\r\n {\r\n return this.bookName(66);\r\n }\r\n\r\n return this.bookName(0);\r\n }\r\n\r\n public static toString(section: Section)\r\n {\r\n // get the starting book, chapter, verse\r\n let ref = section.start.book.name.concat(' ').\r\n concat(section.start.chapter).concat(':').\r\n concat(section.start.verse);\r\n\r\n if (section.start.chapter === section.end.chapter &&\r\n section.start.verse === section.end.verse &&\r\n section.start.book.name === section.end.book.name)\r\n {\r\n return ref;\r\n }\r\n\r\n if (section.start.chapter === section.end.chapter &&\r\n section.start.verse !== section.end.verse &&\r\n section.start.book.name === section.end.book.name)\r\n {\r\n return ref.concat(' - ').concat(section.end.verse);\r\n }\r\n\r\n if (section.start.book.name !== section.end.book.name)\r\n {\r\n ref = ref.concat(' - ').concat(section.end.book.name).concat(' ');\r\n }\r\n else\r\n {\r\n ref = ref.concat(' - ');\r\n }\r\n\r\n ref = ref.concat(section.end.chapter).concat(':');\r\n\r\n return ref.concat(section.end.verse);\r\n }\r\n\r\n public static Books: Array = [\r\n {\r\n name: 'Unkown',\r\n short_name: 'Unk',\r\n long_name: 'Unknown',\r\n book_number: 0,\r\n last_chapter: 0,\r\n chapters: [0]\r\n },\r\n {\r\n name: 'Genesis',\r\n short_name: 'Gen',\r\n long_name: 'Book of Genesis',\r\n book_number: 1,\r\n last_chapter: 66,\r\n chapters: [0, 31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26]\r\n },\r\n {\r\n book_number: 2,\r\n short_name: 'Exo',\r\n name: 'Exodus',\r\n long_name: 'Book of Exodus',\r\n last_chapter: 40,\r\n chapters: [0, 22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38]\r\n },\r\n {\r\n book_number: 3,\r\n name: 'Leviticus',\r\n short_name: 'Lev',\r\n long_name: 'Leviticus',\r\n last_chapter: 27,\r\n chapters: [0, 17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46, 34]\r\n },\r\n {\r\n book_number: 4,\r\n name: 'Numbers',\r\n short_name: 'Num',\r\n long_name: 'Book of Numbers',\r\n last_chapter: 36,\r\n chapters: [0, 54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13]\r\n },\r\n {\r\n book_number: 5,\r\n name: 'Deuteronomy',\r\n short_name: 'Deut',\r\n long_name: 'Book of Deuteronomy',\r\n last_chapter: 34,\r\n chapters: [0, 46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12]\r\n },\r\n {\r\n book_number: 6,\r\n name: 'Joshua',\r\n short_name: 'Josh',\r\n long_name: 'Book of Joshua',\r\n last_chapter: 24,\r\n chapters: [0, 18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33]\r\n },\r\n {\r\n book_number: 7,\r\n name: 'Judges',\r\n short_name: 'Jud',\r\n long_name: 'Book of Judges',\r\n last_chapter: 21,\r\n chapters: [0, 36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25]\r\n },\r\n {\r\n book_number: 8,\r\n name: 'Ruth',\r\n short_name: 'Ruth',\r\n long_name: 'Book of Ruth',\r\n last_chapter: 4,\r\n chapters: [0, 22, 23, 18, 22]\r\n },\r\n {\r\n book_number: 9,\r\n name: '1 Samuel',\r\n short_name: '1 Sam',\r\n long_name: 'First Book of Samuel',\r\n last_chapter: 31,\r\n chapters: [0, 28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, 13]\r\n },\r\n {\r\n book_number: 10,\r\n name: '2 Samuel',\r\n short_name: '2 Sam',\r\n long_name: 'Second Book of Samuel',\r\n last_chapter: 24,\r\n chapters: [0, 27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25]\r\n },\r\n {\r\n book_number: 11,\r\n name: '1 Kings',\r\n short_name: '1 Kng',\r\n long_name: 'First Book of Kings',\r\n last_chapter: 22,\r\n chapters: [0, 53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 53]\r\n },\r\n {\r\n book_number: 12,\r\n name: '2 Kings',\r\n short_name: '2 Kng',\r\n long_name: 'Second Book of Kings',\r\n last_chapter: 25,\r\n chapters: [0, 18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30]\r\n },\r\n {\r\n book_number: 13,\r\n name: '1 Chronicles',\r\n short_name: '1 Chr',\r\n long_name: 'First Book of Chronicles',\r\n last_chapter: 29,\r\n chapters: [0, 54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31, 32, 34, 21, 30]\r\n },\r\n {\r\n book_number: 14,\r\n name: '2 Chronicles',\r\n short_name: '2 Chr',\r\n long_name: 'Second Book of Chronicles',\r\n last_chapter: 36,\r\n chapters: [0, 17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23]\r\n },\r\n {\r\n book_number: 15,\r\n name: 'Ezra',\r\n short_name: 'Ezra',\r\n long_name: 'Book of Ezra',\r\n last_chapter: 10,\r\n chapters: [0, 11, 70, 13, 24, 17, 22, 28, 36, 15, 44]\r\n },\r\n {\r\n book_number: 16,\r\n name: 'Nehemiah',\r\n short_name: 'Neh',\r\n long_name: 'Book of Nehemiah',\r\n last_chapter: 13,\r\n chapters: [0, 11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31]\r\n },\r\n {\r\n book_number: 17,\r\n name: 'Esther',\r\n short_name: 'Esther',\r\n long_name: 'Book of Esther',\r\n last_chapter: 10,\r\n chapters: [0, 22, 23, 15, 17, 14, 14, 10, 17, 32, 3]\r\n },\r\n {\r\n book_number: 18,\r\n name: 'Job',\r\n short_name: 'Job',\r\n long_name: 'Book of Job',\r\n last_chapter: 42,\r\n chapters: [0, 22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, 34, 17]\r\n },\r\n {\r\n book_number: 19,\r\n name: 'Psalms',\r\n short_name: 'Psalm',\r\n long_name: 'Book of Psalms',\r\n last_chapter: 150,\r\n chapters: [0, 6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12, 14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 5, 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6]\r\n },\r\n {\r\n book_number: 20,\r\n name: 'Proverbs',\r\n short_name: 'Prov',\r\n long_name: 'Book of Proverbs',\r\n last_chapter: 31,\r\n chapters: [0, 33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31]\r\n },\r\n {\r\n book_number: 21,\r\n name: 'Ecclesiastes',\r\n short_name: 'Eccl',\r\n long_name: 'Book of Ecclesiastes',\r\n last_chapter: 12,\r\n chapters: [0, 18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14]\r\n },\r\n {\r\n book_number: 22,\r\n name: 'Song of Solomon',\r\n short_name: 'Song',\r\n long_name: 'Song of Solomon',\r\n last_chapter: 8,\r\n chapters: [0, 17, 17, 11, 16, 16, 13, 13, 14]\r\n },\r\n {\r\n book_number: 23,\r\n name: 'Isaiah',\r\n short_name: 'Isa',\r\n long_name: 'Book of Isaiah',\r\n last_chapter: 66,\r\n chapters: [0, 31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24]\r\n },\r\n {\r\n book_number: 24,\r\n name: 'Jeremiah',\r\n short_name: 'Jer',\r\n long_name: 'Book of Jeremiah',\r\n last_chapter: 52,\r\n chapters: [0, 19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34]\r\n },\r\n {\r\n book_number: 25,\r\n name: 'Lamentations',\r\n short_name: 'Lam',\r\n long_name: 'Book of Lamentations',\r\n last_chapter: 5,\r\n chapters: [0, 22, 22, 66, 22, 22]\r\n },\r\n {\r\n book_number: 26,\r\n name: 'Ezekiel',\r\n short_name: 'Eze',\r\n long_name: 'Book of Ezekiel',\r\n last_chapter: 48,\r\n chapters: [0, 28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35]\r\n },\r\n {\r\n book_number: 27,\r\n name: 'Daniel',\r\n short_name: 'Dan',\r\n long_name: 'Book of Daniel',\r\n last_chapter: 12,\r\n chapters: [0, 21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13]\r\n },\r\n {\r\n book_number: 28,\r\n name: 'Hosea',\r\n short_name: 'Hosea',\r\n long_name: 'Book of Hosea',\r\n last_chapter: 14,\r\n chapters: [0, 11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9]\r\n },\r\n {\r\n book_number: 29,\r\n name: 'Joel',\r\n short_name: 'Joel',\r\n long_name: 'Book of Joel',\r\n last_chapter: 3,\r\n chapters: [0, 20, 32, 21]\r\n },\r\n {\r\n book_number: 30,\r\n name: 'Amos',\r\n short_name: 'Amos',\r\n long_name: 'Book of Amos',\r\n last_chapter: 9,\r\n chapters: [0, 15, 16, 15, 13, 27, 14, 17, 14, 15]\r\n },\r\n {\r\n book_number: 31,\r\n name: 'Obadiah',\r\n short_name: 'Oba',\r\n long_name: 'Book of Obadiah',\r\n last_chapter: 1,\r\n chapters: [0, 21]\r\n },\r\n {\r\n book_number: 32,\r\n name: 'Jonah',\r\n short_name: 'Jonah',\r\n long_name: 'Book of Jonah',\r\n last_chapter: 4,\r\n chapters: [0, 17, 10, 10, 11]\r\n },\r\n {\r\n book_number: 33,\r\n name: 'Micah',\r\n short_name: 'Micah',\r\n long_name: 'Book of Micah',\r\n last_chapter: 7,\r\n chapters: [0, 16, 13, 12, 13, 15, 16, 20]\r\n },\r\n {\r\n book_number: 34,\r\n name: 'Nahum',\r\n short_name: 'Nahum',\r\n long_name: 'Book of Nahum',\r\n last_chapter: 3,\r\n chapters: [0, 15, 13, 19]\r\n },\r\n {\r\n book_number: 35,\r\n name: 'Habakkuk',\r\n short_name: 'Hab',\r\n long_name: 'Book of Habakkuk',\r\n last_chapter: 3,\r\n chapters: [0, 17, 20, 19]\r\n },\r\n {\r\n book_number: 36,\r\n name: 'Zephaniah',\r\n short_name: 'Zeph',\r\n long_name: 'Book of Zephaniah',\r\n last_chapter: 3,\r\n chapters: [0, 18, 15, 20]\r\n },\r\n {\r\n book_number: 37,\r\n name: 'Haggai',\r\n short_name: 'Hag',\r\n long_name: 'Book of Haggai',\r\n last_chapter: 2,\r\n chapters: [0, 15, 23]\r\n },\r\n {\r\n book_number: 38,\r\n name: 'Zechariah',\r\n short_name: 'Zech',\r\n long_name: 'Book of Zechariah',\r\n last_chapter: 14,\r\n chapters: [0, 21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21]\r\n },\r\n {\r\n book_number: 39,\r\n name: 'Malachi',\r\n short_name: 'Mal',\r\n long_name: 'Book of Malachi',\r\n last_chapter: 4,\r\n chapters: [0, 14, 17, 18, 6]\r\n },\r\n {\r\n book_number: 40,\r\n name: 'Matthew',\r\n short_name: 'Matt',\r\n long_name: 'Gospel of Matthew',\r\n last_chapter: 28,\r\n chapters: [0, 25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20]\r\n },\r\n {\r\n book_number: 41,\r\n name: 'Mark',\r\n short_name: 'Mark',\r\n long_name: 'Gospel of Mark',\r\n last_chapter: 16,\r\n chapters: [0, 45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20]\r\n },\r\n {\r\n book_number: 42,\r\n name: 'Luke',\r\n short_name: 'Luke',\r\n long_name: 'Gospel of Luke',\r\n last_chapter: 24,\r\n chapters: [0, 80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53]\r\n },\r\n {\r\n book_number: 43,\r\n name: 'John',\r\n short_name: 'John',\r\n long_name: 'Gospel of John',\r\n last_chapter: 21,\r\n chapters: [0, 51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25]\r\n },\r\n {\r\n book_number: 44,\r\n name: 'Acts',\r\n short_name: 'Acts',\r\n long_name: 'Acts of the Apostles',\r\n last_chapter: 28,\r\n chapters: [0, 26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, 40, 30, 35, 27, 27, 32, 44, 31]\r\n },\r\n {\r\n book_number: 45,\r\n name: 'Romans',\r\n short_name: 'Rom',\r\n long_name: 'Epistle to the Romans',\r\n last_chapter: 16,\r\n chapters: [0, 32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27]\r\n },\r\n {\r\n book_number: 46,\r\n name: '1 Corinthians',\r\n short_name: '1 Cor',\r\n long_name: 'First Epistle to the Corinthians',\r\n last_chapter: 16,\r\n chapters: [0, 31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24]\r\n },\r\n {\r\n book_number: 47,\r\n name: '2 Corinthians',\r\n short_name: '2 Cor',\r\n long_name: 'Second Epistle to the Corinthians',\r\n last_chapter: 13,\r\n chapters: [0, 24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14]\r\n },\r\n {\r\n book_number: 48,\r\n name: 'Galatians',\r\n short_name: 'Gal',\r\n long_name: 'Epistle to the Galatians',\r\n last_chapter: 6,\r\n chapters: [0, 24, 21, 29, 31, 26, 18]\r\n },\r\n {\r\n book_number: 49,\r\n name: 'Ephesians',\r\n short_name: 'Eph',\r\n long_name: 'Epistle to the Ephesians',\r\n last_chapter: 6,\r\n chapters: [0, 23, 22, 21, 32, 33, 24]\r\n },\r\n {\r\n book_number: 50,\r\n name: 'Philippians',\r\n short_name: 'Phil',\r\n long_name: 'Epistle to the Philippians',\r\n last_chapter: 4,\r\n chapters: [0, 30, 30, 21, 23]\r\n },\r\n {\r\n book_number: 51,\r\n name: 'Colossians',\r\n short_name: 'Col',\r\n long_name: 'Epistle to the Colossians',\r\n last_chapter: 4,\r\n chapters: [0, 29, 23, 25, 18]\r\n },\r\n {\r\n book_number: 52,\r\n name: '1 Thessalonians',\r\n short_name: '1 Thes',\r\n long_name: 'First Epistle to the Thessalonians',\r\n last_chapter: 5,\r\n chapters: [0, 10, 20, 13, 18, 28]\r\n },\r\n {\r\n book_number: 53,\r\n name: '2 Thessalonians',\r\n short_name: '2 Thes',\r\n long_name: 'Second Epistle to the Thessalonians',\r\n last_chapter: 3,\r\n chapters: [0, 12, 17, 18]\r\n },\r\n {\r\n book_number: 54,\r\n name: '1 Timothy',\r\n short_name: '1 Tim',\r\n long_name: 'First Epistle to Timothy',\r\n last_chapter: 6,\r\n chapters: [0, 20, 15, 16, 16, 25, 21]\r\n },\r\n {\r\n book_number: 55,\r\n name: '2 Timothy',\r\n short_name: '2 Tim',\r\n long_name: 'Second Epistle to Timothy',\r\n last_chapter: 4,\r\n chapters: [0, 18, 26, 17, 22]\r\n },\r\n {\r\n book_number: 56,\r\n name: 'Titus',\r\n short_name: 'Titis',\r\n long_name: 'Epistle to Titus',\r\n last_chapter: 3,\r\n chapters: [0, 16, 15, 15]\r\n },\r\n {\r\n book_number: 57,\r\n name: 'Philemon',\r\n short_name: 'Phi',\r\n long_name: 'Epistle to Philemon',\r\n last_chapter: 1,\r\n chapters: [0, 25]\r\n },\r\n {\r\n book_number: 58,\r\n name: 'Hebrews',\r\n short_name: 'Heb',\r\n long_name: 'Epistle to the Hebrews',\r\n last_chapter: 13,\r\n chapters: [0, 14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25]\r\n },\r\n {\r\n book_number: 59,\r\n name: 'James',\r\n short_name: 'James',\r\n long_name: 'Epistle of James',\r\n last_chapter: 5,\r\n chapters: [0, 27, 26, 18, 17, 20]\r\n },\r\n {\r\n book_number: 60,\r\n name: '1 Peter',\r\n short_name: '1 Pe',\r\n long_name: 'First Epistle of Peter',\r\n last_chapter: 5,\r\n chapters: [0, 25, 25, 22, 19, 14]\r\n },\r\n {\r\n book_number: 61,\r\n name: '2 Peter',\r\n short_name: '2 Pe',\r\n long_name: 'Second Epistle of Peter',\r\n last_chapter: 3,\r\n chapters: [0, 21, 22, 18]\r\n },\r\n {\r\n book_number: 62,\r\n name: '1 John',\r\n short_name: '1 Jn',\r\n long_name: 'First Epistle of John',\r\n last_chapter: 5,\r\n chapters: [0, 10, 29, 24, 21, 21]\r\n },\r\n {\r\n book_number: 63,\r\n name: '2 John',\r\n short_name: '2 Jn',\r\n long_name: 'Second Epistle of John',\r\n last_chapter: 1,\r\n chapters: [0, 13]\r\n },\r\n {\r\n book_number: 64,\r\n name: '3 John',\r\n short_name: '3 Jn',\r\n long_name: 'Third Epistle of John',\r\n last_chapter: 1,\r\n chapters: [0, 14]\r\n },\r\n {\r\n book_number: 65,\r\n name: 'Jude',\r\n short_name: 'Jude',\r\n long_name: 'Epistle to Jude',\r\n last_chapter: 1,\r\n chapters: [0, 25]\r\n },\r\n {\r\n book_number: 66,\r\n name: 'Revelation',\r\n short_name: 'Rev',\r\n long_name: 'Book of Revelations',\r\n last_chapter: 22,\r\n chapters: [0, 20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21]\r\n }\r\n ];\r\n\r\n public static bookName(booknum: number): Book\r\n {\r\n return this.Books[booknum];\r\n }\r\n}\r\n\r\nexport type Book = {\r\n name: string,\r\n short_name: string,\r\n long_name: string,\r\n book_number: number,\r\n last_chapter: number,\r\n chapters: [number],\r\n};\r\n\r\nexport type Section = {\r\n start: Location,\r\n end: Location,\r\n};\r\n\r\nexport type Location = {\r\n book: Book,\r\n chapter: string,\r\n verse: string,\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/libs/Reference.ts","import { Component, ViewChild } from '@angular/core';\nimport { Platform, MenuController, Nav } from 'ionic-angular';\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\nimport { SearchPage } from '../pages/search/search';\n\nimport { PagesService } from '../services/pages-service';\n\n@Component({\n templateUrl: 'app.html',\n providers: [PagesService]\n})\nexport class MyApp\n{\n @ViewChild(Nav) nav: Nav;\n\n rootPage: any = SearchPage;\n\n constructor(\n public platform: Platform,\n public menu: MenuController,\n private statusBar: StatusBar,\n private splash: SplashScreen,\n private pagesSvc: PagesService\n )\n {\n this.initializeApp();\n }\n\n initializeApp()\n {\n this.platform.ready().then(() =>\n {\n // Okay, so the platform is ready and our plugins are available.\n // Here you can do any higher level native things you might need.\n this.statusBar.styleDefault();\n this.splash.hide();\n });\n }\n\n openPage(page)\n {\n // close the menu when clicking a link from the menu\n this.menu.close('pages');\n \n // because the actions menu is on a Page component, and you swap the SearchPage out,\n // the menu get registered multiple times. to avoid some pages not opening the menu because\n // multiple menus with the same id exist and the first one in the list is returned (which happens\n // be disabled when another of the same id is added) it won't show. because not enabled.\n // ---\n // unregistering the actions menu whenever a new page is opened fixes the problem, because the menu\n // will get reregistered when SearchPage loads. Also, if you go to a non SearchPage, the actions\n // menu won't be there, but the unregister function doesn't fail if a non existent id is given,\n // so thats ok.\n this.menu._unregister(this.menu.get('actions'));\n\n // navigate to the new page if it is not the current page\n this.nav.setRoot(page.component, page.params);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","// our root app component\r\nimport {Component, Compiler, ViewContainerRef, ViewChild, Input, ComponentRef, ComponentFactoryResolver, ChangeDetectorRef} from '@angular/core'\r\n\r\n// Helper component to add dynamic components\r\n@Component({\r\n selector: 'component-loader',\r\n template: `
`\r\n})\r\nexport class ComponentLoader {\r\n @ViewChild('target', { read: ViewContainerRef }) target;\r\n @Input() type;\r\n @Input() data;\r\n cmpRef: ComponentRef;\r\n private isViewInitialized = false;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private compiler: Compiler,\r\n private cdRef: ChangeDetectorRef) { }\r\n\r\n updateComponent() {\r\n if (!this.isViewInitialized) {\r\n return;\r\n }\r\n if (this.cmpRef) {\r\n this.cmpRef.destroy();\r\n }\r\n\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.type);\r\n this.cmpRef = this.target.createComponent(factory);\r\n // to access the created instance use\r\n // this.compRef.instance.someProperty = 'someValue';\r\n // this.compRef.instance.someOutput.subscribe(val => doSomething());\r\n \r\n this.cmpRef.instance.item = this.data;\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateComponent();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.isViewInitialized = true;\r\n this.updateComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.cmpRef) {\r\n this.cmpRef.destroy();\r\n }\r\n }\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/component-loader/component-loader.ts","import { Component, EventEmitter, Output, Input, OnInit, ElementRef } from '@angular/core';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { BiblePassageResult, BibleService, BiblePassage, BibleVerse, HashTable, Paragraph } from '../../services/bible-service';\nimport { Reference } from '../../libs/Reference';\n\n@Component({\n selector: 'passage',\n templateUrl: 'passage.html',\n providers: [BibleService]\n})\nexport class Passage implements OnInit\n{\n @Output()\n onItemClicked = new EventEmitter();\n @Output()\n onClose = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n @Input()\n versesOnNewLine: boolean;\n\n @Input()\n showVerseNumbers: boolean;\n\n data: BiblePassageResult;\n ref: Reference;\n\n constructor(private bibleService: BibleService, private elementRef: ElementRef)\n {\n }\n\n ngOnInit(): void\n {\n this.ref = new Reference(this.cardItem.qry);\n this.bibleService.getResultAsPromise(this.ref.Section).then(data => this.data = data);\n }\n\n close()\n {\n let d = 250;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\n next()\n {\n const last_verse_for_end = this.ref.Section.end.book.chapters[parseInt(this.ref.Section.end.chapter)].toString();\n\n if (this.ref.Section.end.verse !== '*' && this.ref.Section.end.verse !== last_verse_for_end)\n this.ref.Section.end.chapter = this.ref.Section.end.chapter;\n else\n this.ref.Section.end.chapter = (parseInt(this.ref.Section.end.chapter) + 1).toString();\n\n this.ref.Section.start.chapter = this.ref.Section.end.chapter;\n this.ref.Section.start.verse = '1';\n this.ref.Section.end.verse = '*';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n prev()\n {\n if (this.ref.Section.start.verse !== '1')\n this.ref.Section.start.chapter = this.ref.Section.start.chapter;\n else\n this.ref.Section.start.chapter = (parseInt(this.ref.Section.start.chapter) - 1).toString();\n\n this.ref.Section.end.chapter = this.ref.Section.start.chapter;\n this.ref.Section.start.verse = '1';\n this.ref.Section.end.verse = '*';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n expand()\n {\n const last_verse_for_end = this.ref.Section.end.book.chapters[parseInt(this.ref.Section.end.chapter)];\n\n // if your verse is at the beginning, to go the prev chapter and add 3 verses from that\n if (parseInt(this.ref.Section.start.verse) < 4)\n {\n this.ref.Section.start.chapter = (parseInt(this.ref.Section.start.chapter) - 1).toString();\n this.ref.Section.start.verse = '*-' + (3 - parseInt(this.ref.Section.start.verse));\n if (this.ref.Section.start.chapter === '0')\n {\n this.ref.Section.start.chapter = '1';\n this.ref.Section.start.verse = '1';\n }\n }\n else // or go back 3 verses\n this.ref.Section.start.verse = (parseInt(this.ref.Section.start.verse) - 3).toString();\n\n // if your verse is at the end, go to the next chapter\n if (this.ref.Section.end.verse === '*' || parseInt(this.ref.Section.end.verse) + 3 > last_verse_for_end)\n {\n this.ref.Section.end.chapter = (parseInt(this.ref.Section.end.chapter) + 1).toString();\n if (this.ref.Section.end.verse === '*')\n this.ref.Section.end.verse = '3';\n else\n this.ref.Section.end.verse = (parseInt(this.ref.Section.end.verse) + 3 - last_verse_for_end).toString();\n\n if (this.ref.Section.end.chapter === (this.ref.Section.end.book.last_chapter + 1).toString())\n {\n this.ref.Section.end.chapter = this.ref.Section.end.book.last_chapter.toString();\n this.ref.Section.end.verse = last_verse_for_end.toString();\n }\n }\n else // or add 3 verses\n this.ref.Section.end.verse = (parseInt(this.ref.Section.end.verse) + 3).toString();\n\n if (this.ref.Section.start.verse === '0')\n this.ref.Section.start.verse = '1';\n\n this.bibleService.getResultAsPromise(this.ref.Section).then(data =>\n {\n this.data = data;\n this.cardItem.qry = data.ref;\n this.ref = new Reference(data.ref);\n });\n }\n\n openStrongs(strongs: string)\n {\n this.onItemClicked.emit({ card: this.cardItem, qry: this.cardItem.dict + strongs, from_search_bar: false });\n }\n\n openMenu(strongs: string)\n {\n }\n\n isPunct(c: string)\n {\n return new RegExp('^[\\.\\,\\;\\:\\?\\!]$').test(c);\n }\n\n hasHeader(p: Paragraph)\n {\n if (p === undefined)\n return false;\n\n return p.h.length > 0;\n }\n\n isPara(vs: BibleVerse)\n {\n return this.getRefKey(vs) in BibleService.paragraphs;\n }\n\n getRefKey(vs: BibleVerse)\n {\n return this.ref.Section.start.book.book_number + ';' + this.ref.Section.start.chapter + ';' + vs.v;\n }\n\n getParas(ch: BiblePassage)\n {\n // group the verses into paragraphs.\n\n // create an initial paragraph to hold verses that might come before a paragraph.\n let para: BiblePara = { p: { h: '', p: 0 }, vss: [] };\n let paras: BiblePara[] = [];\n\n // for each verse in the chapter, break them into paragraphs.\n for (let v of ch.vss)\n {\n if (this.isPara(v))\n {\n paras.push(para);\n para = { p: BibleService.paragraphs[this.getRefKey(v)], vss: [v] };\n if (para.p === undefined)\n para.p = { h: '', p: 0 }; // just in case you can't find a paragraph.\n }\n else\n {\n para.vss.push(v);\n }\n }\n\n // add the final paragraph if it has verses.\n if (para.vss.length > 0)\n paras.push(para);\n\n return paras;\n }\n}\n\ntype BiblePara = {\n p: Paragraph,\n vss: BibleVerse[],\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/passage/passage.ts","/// \r\n/// \r\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\nimport { Section, Reference } from '../libs/Reference';\r\n\r\n@Injectable()\r\nexport class BibleService\r\n{\r\n chapters: BiblePassage[];\r\n result: BiblePassageResult;\r\n static paragraphs: HashTable;\r\n count = 0;\r\n $: any;\r\n\r\n constructor(private http: Http)\r\n {\r\n this.getParagraphMarkersAsPromise()\r\n }\r\n\r\n getParagraphMarkersAsPromise(): Promise>\r\n {\r\n return new Promise((resolve) => { resolve(this.getParagraphMarkers()); });\r\n }\r\n\r\n getParagraphMarkers() : HashTable\r\n {\r\n try\r\n {\r\n if (BibleService.paragraphs !== undefined && '1;1;1' in BibleService.paragraphs)\r\n return BibleService.paragraphs;\r\n\r\n const self = this;\r\n\r\n const url = 'data/bibles/paras.json';\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: HashTable)\r\n {\r\n BibleService.paragraphs = d;\r\n },\r\n error()\r\n {\r\n console.log('Unable to retrieve paragraphs.');\r\n }\r\n });\r\n\r\n return BibleService.paragraphs;\r\n }\r\n catch (error)\r\n {\r\n console.log(error);\r\n }\r\n return null;\r\n }\r\n\r\n getResultAsPromise(section: Section): Promise\r\n {\r\n return new Promise((resolve) => { resolve(this.getResult(section)); });\r\n }\r\n\r\n getResult(section: Section): BiblePassageResult\r\n {\r\n try\r\n {\r\n const self = this;\r\n this.chapters = []; // the verses from the chapter.\r\n this.result = {\r\n cs: [],\r\n testament: '',\r\n ref: Reference.toString(section),\r\n status: 0,\r\n msg: ':)'\r\n };\r\n\r\n if (Number(section.start.chapter) > section.start.book.last_chapter)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'The requested chapter for ' + section.start.book.name + ' is out of range. Please pick a chapter between 1 and ' + section.start.book.last_chapter + '.';\r\n return self.result;\r\n }\r\n\r\n if (Number(section.end.chapter) > section.end.book.last_chapter)\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'The requested chapter for ' + section.end.book.name + ' is out of range. Please pick a chapter between 1 and ' + section.end.book.last_chapter + '.';\r\n return self.result;\r\n }\r\n\r\n this.count = Number(section.end.chapter) - Number(section.start.chapter) + 1;\r\n\r\n for (let i = Number(section.start.chapter); i <= Number(section.end.chapter); i++)\r\n {\r\n const url = 'data/bibles/kjv_strongs/' + section.start.book.book_number + '-' + i + '.json';\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: BiblePassage)\r\n {\r\n self.chapters.push(d);\r\n },\r\n error()\r\n {\r\n self.result.status = -1;\r\n self.result.msg = 'Unable to retrieve bible passage ' + self.result.ref + '.';\r\n }\r\n });\r\n }\r\n\r\n if (self.result.status === -1)\r\n return self.result;\r\n\r\n for (let j = 0; j < this.chapters.length; j++)\r\n {\r\n const vss: BibleVerse[] = [];\r\n let start: number;\r\n let end;\r\n\r\n // figure out the start verse.\r\n if (j === 0)\r\n {\r\n if (section.start.verse.indexOf('*') !== -1) // you sometimes use this as a shortcut to the last verse\r\n {\r\n // replace the * with the last verse, then eval the expression.\r\n section.start.verse = section.start.verse.replace('*', (this.chapters[j].vss.length).toString());\r\n\r\n start = math.eval(section.start.verse);\r\n\r\n // update the section and the ref.\r\n section.start.verse = start.toString();\r\n this.result.ref = Reference.toString(section);\r\n }\r\n else\r\n start = parseInt(section.start.verse);\r\n }\r\n else\r\n start = 1;\r\n\r\n // figure out the end verse\r\n if ((j + 1) === this.chapters.length)\r\n end = section.end.verse;\r\n else\r\n end = '*';\r\n\r\n // get the verses requested.\r\n const tvs = this.chapters[j].vss.length;\r\n if (end === '*' || parseInt(end) > tvs)\r\n end = tvs;\r\n\r\n // we're using c based indexes here, so the index is 1 less than the verse #.\r\n for (let i = start; i <= end; i++)\r\n vss.push(this.chapters[j].vss[i - 1]);\r\n\r\n this.result.cs.push({\r\n ch: this.chapters[j].ch,\r\n vss: vss\r\n });\r\n }\r\n\r\n\r\n if (section.start.book.book_number >= 40)\r\n this.result.testament = 'new';\r\n else\r\n this.result.testament = 'old';\r\n\r\n return this.result;\r\n }\r\n catch (error)\r\n {\r\n console.log(error);\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport type BiblePassageResult = {\r\n cs: BiblePassage[],\r\n testament: string,\r\n ref: string,\r\n status: number,\r\n msg: string,\r\n}\r\n\r\nexport type BiblePassage = {\r\n ch: number,\r\n vss: BibleVerse[],\r\n}\r\n\r\nexport type BibleVerse = {\r\n v: number,\r\n w: [\r\n {\r\n t: string, s: string,\r\n }\r\n ],\r\n}\r\n\r\nexport type Paragraph = {\r\n h: string,\r\n p: number\r\n}\r\n\r\nexport interface HashTable\r\n{\r\n [key: string]: T;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/bible-service.ts","import { HostListener, EventEmitter, Component, Input, Output, OnInit, AfterViewChecked, ElementRef } from '@angular/core';\nimport { Reference } from '../../libs/Reference';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { StrongsResult, StrongsService } from '../../services/strongs-service';\n\n@Component({\n selector: 'strongs',\n templateUrl: 'strongs.html',\n providers: [StrongsService]\n})\nexport class Strongs implements AfterViewChecked, OnInit\n{\n @Output()\n onClose = new EventEmitter();\n\n @Output()\n onItemClicked = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n data: StrongsResult;\n\n constructor(private strongsService: StrongsService, private elementRef: ElementRef)\r\n {\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(evt)\r\n {\n $('strongs ion-scroll').each((i, el) =>\r\n {\r\n let len = $(el).find('.scroll-content .scroll-zoom-wrapper dl span').length;\r\n len += $(el).find('.scroll-content .scroll-zoom-wrapper dl dd').length;\r\n\r\n if (len < 20)\r\n $(el).css('height', Math.ceil(len / 3) * 30 + 30);\r\n });\r\n }\n\n ngAfterViewChecked(): void\n {\r\n this.onResize(null);\r\n }\n\r\n ngOnInit(): void\r\n {\r\n this.strongsService.getResultAsPromise(parseInt(this.cardItem.qry), this.cardItem.dict)\r\n .then(data =>\r\n this.data = data\r\n );\r\n }\n\n close()\n {\r\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\r\n openItem(p: string)\r\n {\n this.onItemClicked.emit({ card: this.cardItem, qry: p, from_search_bar: false });\n }\n\n makePassage(p: string)\r\n {\n return Reference.bookName(parseInt(p.split(';')[0])).name + ' ' + p.split(';')[1] + ':' + p.split(';')[2];\n }\n\n openPassage(p: string)\n {\n const ref = this.makePassage(p);\n this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/strongs/strongs.ts","/// \nimport { HostListener, EventEmitter, Component, Input, Output, AfterViewChecked, OnInit, ElementRef } from '@angular/core';\nimport { Reference } from '../../libs/Reference';\nimport { OpenData, CardItem } from '../../pages/search/search';\nimport { WordLookupResult, WordService } from '../../services/word-service';\n\n@Component({\n selector: 'words',\n templateUrl: 'words.html',\n providers: [WordService]\n})\nexport class Words implements AfterViewChecked, OnInit\n{\n @Output()\n onClose = new EventEmitter();\n\n @Output()\n onItemClicked = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n $: any;\n\n data: WordLookupResult;\n\n constructor(private wordService: WordService, private elementRef: ElementRef)\r\n {\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(evt)\r\n {\n $('words ion-scroll').each((i, el) =>\r\n {\r\n const wr = $(el).find('.scroll-content .scroll-zoom-wrapper')[0];\r\n const len = $(el).find('.scroll-zoom-wrapper a').length;\r\n\r\n if (wr.scrollWidth < 500) // 1 col\r\n {\r\n // 5 rows\r\n len < 6 ? $(el).css('height', len * 44.4 + 25) : $(el).css('height', 250);\n }\r\n else if (wr.scrollWidth < 699) // 2 col\r\n {\r\n // 6 rows\r\n len < 13 ? $(el).css('height', Math.ceil(len / 2) * 44.4 + 25) : $(el).css('height', 300);\r\n }\r\n else if (wr.scrollWidth < 799) // 3 col\r\n {\r\n // 7 rows\r\n len < 22 ? $(el).css('height', Math.ceil(len / 3) * 44.4 + 25) : $(el).css('height', 350);\r\n }\r\n else if (wr.scrollWidth < 899) // 4 col\r\n {\r\n // 7 rows\r\n len < 29 ? $(el).css('height', Math.ceil(len / 4) * 44.4 + 25) : $(el).css('height', 375);\r\n }\r\n else if (wr.scrollWidth < 1199) // 5 col\r\n {\r\n // 8 rows\r\n len < 41 ? $(el).css('height', Math.ceil(len / 5) * 44.4 + 25) : $(el).css('height', 400);\r\n }\r\n else // 6 col\r\n {\r\n // 8 rows\r\n len < 49 ? $(el).css('height', Math.ceil(len / 6) * 44.4 + 25) : $(el).css('height', 425);\r\n }\r\n });\r\n }\n public ngAfterViewChecked(): void\n {\r\n this.onResize(null);\r\n }\n\n ngOnInit(): void\r\n {\r\n this.wordService.getResultAsPromise(this.cardItem.qry).then(data =>\r\n this.data = data\r\n );\r\n }\r\n\r\n close()\r\n {\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out'\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n\n makePassage(p: string)\n {\n return Reference.bookName(parseInt(p.split(':')[0])).name + ' ' + p.split(':')[1] + ':' + p.split(':')[2];\n }\n\n openPassage(p: string)\n {\n const ref = this.makePassage(p);\n this.onItemClicked.emit({ card: this.cardItem, qry: ref, from_search_bar: false });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/words/words.ts","/// \r\nimport { stemmer } from '../libs/Stemmer';\nimport { Injectable } from '@angular/core';\r\nimport { Http } from '@angular/http';\r\n\r\n@Injectable()\r\nexport class WordService\r\n{\r\n\r\n wordToStem: Map = {};\n\r\n constructor(private http: Http)\r\n {\r\n this.getStemWordIndex();\r\n }\r\n\r\n normalizeQueryString(qry: string): string[]\r\n {\r\n qry = qry.toLowerCase();\r\n return qry.replace(/'/g, '').replace(/\\s+/g, ' ').split(' ');\r\n }\r\n\r\n getResultAsPromise(qry: string): Promise\r\n {\r\n return new Promise((resolve) => { resolve(this.getResult(qry)); });\r\n }\r\n\r\n getResult(qry: string): WordLookupResult\r\n {\r\n const qs = this.normalizeQueryString(qry);\r\n const words = this.buildIndexArray().sort();\r\n const results = new Array();\r\n\r\n // Loop through each query term.\r\n for (let q of qs)\r\n {\r\n const stem = this.wordToStem[q];\r\n\r\n // For each query term, figure out which xml file it is in, and get it.\r\n // getSearchRefs returns an array of references.\r\n for (let w = 0; w < words.length; w++)\r\n {\r\n // If we are at the end of the array, we want to use a different test.\r\n if (w === 0)\r\n {\r\n if (stem <= words[w])\r\n {\r\n results.unshift(this.getSearchReferences('data/index/' + words[w] + 'idx.json', stem));\r\n break;\r\n }\r\n }\r\n else\r\n {\r\n if (stem <= words[w] && stem > words[w - 1])\r\n {\r\n results.unshift(this.getSearchReferences('data/index/' + words[w] + 'idx.json', stem));\r\n break;\r\n }\r\n }\r\n }\r\n } // End of loop through query terms\r\n\r\n // Now we need to test results. If there is more than one item in the array, we need to find the set\r\n // that is shared by all of them. IF not, we can just return those refs.\r\n if (results.length === 0)\r\n return { word: qry, refs: [], status: -1, msg: 'No passages found for query: ' + qry + '.' };\r\n\r\n let shared: string[];\r\n if (results.length === 1)\r\n {\r\n shared = results[0];\r\n }\r\n else\r\n {\r\n shared = this.findSharedSet(results);\r\n }\r\n\r\n if (shared == null || shared.length === 0)\r\n return { word: qry, refs: [], status: -1, msg: 'No passages found for query: ' + qry + '.' };\r\n\r\n return { word: qry, refs: shared, status: 0, msg: ':)' };\r\n }\r\n \r\n /**\r\n * Gets the references a given word is found in.\r\n * Returns a string[].\r\n * @param {string} url - The url of the word index\r\n * @param {string} query - The word to lookup.\r\n */\r\n private getStemWordIndex()\r\n {\r\n // getSearchRefs takes a url and uses ajax to retrieve the references and returns an array of references.\r\n let r: WordToStem[];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: 'data/index/word_to_stem_idx.json',\r\n dataType: 'json',\r\n success(d: WordToStem[], t, x)\r\n {\r\n r = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // find the right word\n for (let i of r)\r\n {\r\n this.wordToStem[i.w] = i.s;\r\n }\r\n }\n\r\n /**\r\n * Gets the references a given word is found in.\r\n * Returns a string[].\r\n * @param {string} url - The url of the word index\r\n * @param {string} query - The word to lookup.\r\n */\r\n private getSearchReferences(url, query): string[]\r\n {\r\n // getSearchRefs takes a url and uses ajax to retrieve the references and returns an array of references.\r\n let r: IndexResult[];\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n success(d: IndexResult[], t, x)\r\n {\r\n r = d;\r\n },\r\n error(request, status, error)\r\n {\r\n console.log(error);\r\n }\r\n });\r\n\r\n // find the right word\r\n const refs = $.grep(r, (o) => o.w === query);\r\n\r\n if (refs.length > 0)\r\n return refs[0].r;\r\n else\r\n return [];\r\n }\r\n\r\n private buildIndexArray()\r\n {\r\n const words = new Array();\r\n words.unshift('abishur');\r\n words.unshift('achor');\r\n words.unshift('adoni');\r\n words.unshift('afterward');\r\n words.unshift('ahishahar');\r\n words.unshift('alleg');\r\n words.unshift('ambush');\r\n words.unshift('ancestor');\r\n words.unshift('aphik');\r\n words.unshift('arbah');\r\n words.unshift('arodi');\r\n words.unshift('ashkenaz');\r\n words.unshift('ate');\r\n words.unshift('azaniah');\r\n words.unshift('backbiteth');\r\n words.unshift('barbarian');\r\n words.unshift('beard');\r\n words.unshift('begettest');\r\n words.unshift('benefactor');\r\n words.unshift('bethel');\r\n words.unshift('bilshan');\r\n words.unshift('blindeth');\r\n words.unshift('booti');\r\n words.unshift('breaketh');\r\n words.unshift('bucket');\r\n words.unshift('cabbon');\r\n words.unshift('caphtor');\r\n words.unshift('causeless');\r\n words.unshift('chapmen');\r\n words.unshift('chese');\r\n words.unshift('chrysoprasus');\r\n words.unshift('cloth');\r\n words.unshift('common');\r\n words.unshift('confess');\r\n words.unshift('contendeth');\r\n words.unshift('coucheth');\r\n words.unshift('crept');\r\n words.unshift('curseth');\r\n words.unshift('darius');\r\n words.unshift('decketh');\r\n words.unshift('dema');\r\n words.unshift('devil');\r\n words.unshift('directeth');\r\n words.unshift('disposit');\r\n words.unshift('doth');\r\n words.unshift('drowsi');\r\n words.unshift('ebe');\r\n words.unshift('elead');\r\n words.unshift('elkoshit');\r\n words.unshift('encourag');\r\n words.unshift('entreat');\r\n words.unshift('eschew');\r\n words.unshift('ever');\r\n words.unshift('expert');\r\n words.unshift('fallest');\r\n words.unshift('feedeth');\r\n words.unshift('filthi');\r\n words.unshift('fleeth');\r\n words.unshift('forborn');\r\n words.unshift('forsookest');\r\n words.unshift('fretteth');\r\n words.unshift('gahar');\r\n words.unshift('gazzam');\r\n words.unshift('gibea');\r\n words.unshift('glister');\r\n words.unshift('got');\r\n words.unshift('grope');\r\n words.unshift('hadlai');\r\n words.unshift('hammon');\r\n words.unshift('harbona');\r\n words.unshift('hasrah');\r\n words.unshift('hazezon');\r\n words.unshift('heinous');\r\n words.unshift('herebi');\r\n words.unshift('highest');\r\n words.unshift('holdeth');\r\n words.unshift('hosanna');\r\n words.unshift('huri');\r\n words.unshift('ill');\r\n words.unshift('inexcus');\r\n words.unshift('intend');\r\n words.unshift('ishui');\r\n words.unshift('jaazaniah');\r\n words.unshift('jaminit');\r\n words.unshift('jecoliah');\r\n words.unshift('jeopard');\r\n words.unshift('jethro');\r\n words.unshift('joiarib');\r\n words.unshift('juda');\r\n words.unshift('kelaiah');\r\n words.unshift('kishion');\r\n words.unshift('laden');\r\n words.unshift('laughter');\r\n words.unshift('lehi');\r\n words.unshift('lift');\r\n words.unshift('loatheth');\r\n words.unshift('lucius');\r\n words.unshift('madmen');\r\n words.unshift('malachi');\r\n words.unshift('march');\r\n words.unshift('maul');\r\n words.unshift('melchizedek');\r\n words.unshift('merrili');\r\n words.unshift('midianit');\r\n words.unshift('miri');\r\n words.unshift('modest');\r\n words.unshift('move');\r\n words.unshift('naashon');\r\n words.unshift('nazareth');\r\n words.unshift('nephishesim');\r\n words.unshift('nisan');\r\n words.unshift('obadiah');\r\n words.unshift('oliveyard');\r\n words.unshift('oren');\r\n words.unshift('overrun');\r\n words.unshift('pallu');\r\n words.unshift('pas');\r\n words.unshift('peel');\r\n words.unshift('pernici');\r\n words.unshift('philip');\r\n words.unshift('pison');\r\n words.unshift('plucketh');\r\n words.unshift('pour');\r\n words.unshift('price');\r\n words.unshift('proport');\r\n words.unshift('purg');\r\n words.unshift('rabboni');\r\n words.unshift('ravish');\r\n words.unshift('redeemedst');\r\n words.unshift('remainest');\r\n words.unshift('reput');\r\n words.unshift('revers');\r\n words.unshift('rissah');\r\n words.unshift('ruddi');\r\n words.unshift('said');\r\n words.unshift('sapphir');\r\n words.unshift('scepter');\r\n words.unshift('secundus');\r\n words.unshift('separ');\r\n words.unshift('shachia');\r\n words.unshift('sharar');\r\n words.unshift('sheepshear');\r\n words.unshift('sheva');\r\n words.unshift('shishak');\r\n words.unshift('shroud');\r\n words.unshift('signifi');\r\n words.unshift('sittest');\r\n words.unshift('slow');\r\n words.unshift('soft');\r\n words.unshift('sowedst');\r\n words.unshift('spoil');\r\n words.unshift('station');\r\n words.unshift('stoop');\r\n words.unshift('strongest');\r\n words.unshift('sum');\r\n words.unshift('sweep');\r\n words.unshift('tahapan');\r\n words.unshift('tast');\r\n words.unshift('ten');\r\n words.unshift('thereat');\r\n words.unshift('threaten');\r\n words.unshift('timbrel');\r\n words.unshift('tongu');\r\n words.unshift('travailest');\r\n words.unshift('trust');\r\n words.unshift('uncircumcis');\r\n words.unshift('unprepar');\r\n words.unshift('urg');\r\n words.unshift('vat');\r\n words.unshift('visiteth');\r\n words.unshift('wash');\r\n words.unshift('wed');\r\n words.unshift('wherewith');\r\n words.unshift('winepress');\r\n words.unshift('won');\r\n words.unshift('written');\r\n words.unshift('zalmonah');\r\n words.unshift('zenan');\r\n words.unshift('ziphim');\r\n words.unshift('zuzim');\n\r\n return words;\r\n }\r\n\r\n /*\r\n * Returns a list of references in string form as a string[] that are shared\r\n * given a list of lists of references in string form.\r\n */\r\n private findSharedSet(results)\r\n {\r\n // FindSharedSet takes an array of reference arrays, and figures out\r\n // which references are shared by all arrays/sets, then returns a single\r\n // array of references.\r\n for (let j in results)\r\n {\r\n if (results.hasOwnProperty(j))\r\n {\r\n const refs = results[j];\r\n if (refs != null)\r\n {\r\n for (let i = 0; i < refs.length; i++)\r\n {\r\n const r = refs[i].split(':');\r\n // convert references to single integers.\r\n // Book * 100000000, Chapter * 10000, Verse remains same, add all together.\r\n let ref = r[0] * 100000000;\r\n ref = ref + (r[1] * 10000);\r\n ref = ref + r[2] * 1;\r\n results[j][i] = ref;\r\n }\r\n } else\r\n return null;\r\n }\r\n }\r\n\r\n // get the first result\r\n let result = results[0];\r\n\r\n // for each additional result, get the shared set\r\n for (let i = 1; i < results.length; i++)\r\n result = this.returnSharedSet(results[i], result);\r\n\r\n // convert the references back into book, chapter and verse.\r\n for (let i = 0; i < result.length; i++)\r\n {\r\n const ref = result[i];\r\n result[i] = Math.floor(ref / 100000000) + ':' + Math.floor((ref % 100000000) / 10000) + ':' + Math.floor((ref % 100000000) % 10000);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private returnSharedSet(x, y)\r\n {\r\n /// \r\n /// Takes two javascript arrays and returns an array\r\n /// containing a set of values shared by arrays.\r\n /// \r\n // declare iterator\r\n let i = 0;\r\n // declare terminator\r\n let t = (x.length < y.length) ? x.length : y.length;\r\n // sort the arrays\r\n x.sort((a, b) => a - b);\r\n y.sort((a, b) => a - b);\r\n // in this loop, we remove from the arrays, the\r\n // values that aren't shared between them.\r\n while (i < t)\r\n {\r\n if (x[i] === y[i])\r\n i++;\r\n\r\n if (x[i] < y[i])\r\n x.splice(i, 1);\r\n\r\n if (x[i] > y[i])\r\n y.splice(i, 1);\r\n\r\n t = (x.length < y.length) ? x.length : y.length;\r\n // we have to make sure to remove any extra values\r\n // at the end of an array when we reach the end of\r\n // the other.\r\n if (t === i && t < x.length)\r\n x.splice(i, x.length - i);\r\n\r\n if (t === i && t < y.length)\r\n y.splice(i, x.length - i);\r\n }\r\n // we could return y, because at this time, both arrays\r\n // are identical.\r\n return x;\r\n }\r\n}\r\n\r\nexport type WordLookupResult = {\r\n refs: string[],\r\n word: string,\r\n status: number,\r\n msg: string,\r\n}\r\n\r\ntype IndexResult = {\r\n r: string[];\r\n w: string;\r\n}\n\ntype WordToStem = { w:string, s: string}\r\ninterface Map\r\n{\r\n [K: string]: T;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/word-service.ts","import { EventEmitter, Component, Input, Output, ElementRef } from '@angular/core';\nimport { CardItem } from '../../pages/search/search';\n\n@Component({\n selector: 'error',\n templateUrl: 'error.html'\n})\nexport class Error\r\n{\n @Output()\n onClose = new EventEmitter();\n\n @Input()\n cardItem: CardItem;\n\n constructor(private elementRef: ElementRef)\r\n {\n }\n\n close()\r\n {\n const d = 275;\n this.elementRef.nativeElement.parentElement.animate({\n transform: ['none', 'translate3d(110%, 0, 0)']\n }, {\n fill: 'forwards',\n duration: d,\n iterations: 1,\n easing: 'ease-in-out',\n });\n setTimeout(() =>\r\n {\n this.onClose.emit(this.cardItem);\n }, d);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error/error.ts","import { Component, Input} from '@angular/core';\n\n@Component({\n selector: 'error-message',\n templateUrl: 'error-message.html'\n})\nexport class ErrorMessage\r\n{\n @Input()\n msg: string;\n\n constructor()\r\n {\n this.msg = '';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error-message/error-message.ts","/// \nimport { Injectable } from '@angular/core';\nimport { AngularFireDatabase, AngularFireObject } from 'angularfire2/database';\nimport { AngularFireAuth } from 'angularfire2/auth';\nimport * as firebase from 'firebase/app';\nimport { Observable } from 'rxjs/Observable';\nimport { Catch } from 'rxjs/add/operator';\nimport { Storage } from '@ionic/storage';\n\nimport { CardItem } from '../pages/search/search';\nimport { Promise } from 'q';\nimport { setTimeout } from 'timers';\n\ntype fbObject = {\n ref: AngularFireObject,\n stream: Observable,\n};\n\nexport const DEFAULT_USER_NAME = 'john_doe';\n\nexport type User = {\n username: string,\n uid: string | null,\n strongs_modal: boolean,\n clear_search_after_query: boolean,\n items: CardItem[],\n append_to_bottom: boolean,\n insert_next_to_item: boolean,\n font_size: number,\n saved_pages: SavedPage[],\n verses_on_new_line: boolean,\n show_verse_numbers: boolean,\n}\n\nexport type SavedPage = {\n queries: CardItem[],\n title: string,\n}\n@Injectable()\nexport class ProfileService\n{\n localProfile: User;\n remoteProfile: fbObject | null;\n remoteLoggedIn: boolean;\n isWeb: boolean;\n needsSync = false;\n\n constructor(private local: Storage, private db: AngularFireDatabase, public firebaseAuth: AngularFireAuth)\n {\n this.isWeb = (document.URL.startsWith('http') || !document.URL.startsWith('http://localhost:8080'));\n\n // asyncrounosly kick off a poller that does the work of syncing remotely when the\n // profile needs to be synced.\n (function poll(self)\n {\n setTimeout(function ()\n {\n // Setup the next poll recursively\n if (self.needsSync)\n {\n // do the sync here.\n // If we have a remote profile then save it there too \n if (self.remoteProfile && self.localProfile.uid)\n {\n let st = new Date(); console.log('Saving the remote profile...');\n self.remoteProfile.ref.set(self.localProfile);\n console.log('Finished saving remote profile. ' + self.elapsed(st, new Date) + 'ms');\n }\n self.needsSync = false;\n }\n poll(self);\n }, 3000);\n })(this);\n\n let localObserver = this.userObserver().subscribe(\n user =>\n {\n this.update(user);\n this.localProfile = user;\n },\n error => console.log(error)\n );\n\n this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));\n\n }\n\n userObserver(): Observable\n {\n return Observable.fromPromise(this.local.get('profile')).map(json_profile =>\n {\n let t = this.profile();\n\n if (json_profile !== null) t = JSON.parse(json_profile);\n return t;\n });\n }\n\n profile(): User\n {\n if (!this.localProfile)\n {\n this.localProfile = ProfileService.createDefaultUser();\n }\n\n return this.localProfile\n }\n\n subscribeToRemoteProfile(db: AngularFireDatabase, user: firebase.User)\n {\n if (!user) return;\n\n let obj = db.object('/settings/' + user.uid);\n this.remoteProfile = {\n ref: obj as AngularFireObject,\n stream: obj.valueChanges() as Observable,\n };\n this.profile().username = user.displayName;\n this.profile().uid = user.uid;\n\n this.save();\n this.remoteProfile.stream.subscribe(\n user => this.handleRemotePreferenceChange(user),\n error => console.log(error));\n }\n\n handleRemotePreferenceChange(user: User)\n {\n if (user)\n {\n if (!user.saved_pages) user.saved_pages = [];\n if (!user.items) user.items = [];\n\n // merge the items so you don't loose anything.\n if (this.profile().items.length > 0)\n user.items.concat(this.localProfile.items);\n\n // merge the saved pages so you don't loose those either\n if (this.profile().saved_pages.length > 0)\n user.saved_pages.concat(this.localProfile.saved_pages);\n\n // don't sync things that don't make sense.\n this.profile().uid = user.uid;\n this.profile().username = user.username;\n\n // We only save the local change here since this is an update from our remote profile.\n this.localSave();\n }\n else\n {\n // No user is there so we should save our local to the remote.\n\n this.save();\n }\n }\n\n currentUser(): firebase.User\n {\n return this.firebaseAuth.auth.currentUser;\n }\n\n authenticate()\n {\n let self = this;\n let provider = new firebase.auth.GoogleAuthProvider();\n if (this.isWeb)\n {\n this.firebaseAuth.auth.signInWithPopup(provider);\n }\n else\n {\n firebase.auth().signInWithRedirect(provider).then(function ()\n {\n return firebase.auth().getRedirectResult();\n }).catch(function (error)\n {\n // Handle Errors here.\n console.log(error);\n });\n }\n this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));\n this.remoteLoggedIn = true;\n\n }\n\n refresh()\n {\n this.logout();\n this.authenticate();\n }\n\n logout()\n {\n this.firebaseAuth.auth.signOut(); // sign out\n this.remoteProfile = null; // inform the profile service not to bother\n this.remoteLoggedIn = false;\n }\n\n save()\n {\n this.localSave();\n this.needsSync = true;\n }\n\n private localSave()\n {\n this.local.set('profile', JSON.stringify(this.profile()));\n }\n\n\n private elapsed(start: Date, finish: Date)\n {\n let difference = new Date();\n difference.setTime(finish.getTime() - start.getTime());\n return difference.getMilliseconds();\n }\n\n // this function updates a user object, in case new properties have been introduced\n // in a release. \n update(t: User): boolean\n {\n let updated = false;\n let k;\n const user = this.profile();\n for (k in user)\n {\n if (user.hasOwnProperty(k))\n {\n if (t[k] === undefined)\n {\n t[k] = user[k];\n updated = true;\n }\n }\n }\n\n for (k in user)\n if (user.hasOwnProperty(k))\n user[k] = t[k];\n\n this.textSizeChanged();\n return updated;\n }\n\n private resetUser()\n {\n this.profile().strongs_modal = true;\n this.profile().clear_search_after_query = false;\n this.profile().items = [];\n this.profile().append_to_bottom = false;\n this.profile().insert_next_to_item = false;\n this.profile().font_size = 10;\n this.profile().saved_pages = [];\n this.profile().verses_on_new_line = true;\n this.profile().show_verse_numbers = true;\n }\n\n reset()\n {\n this.resetUser();\n this.remoteProfile.ref.set(this.profile())\n this.save();\n }\n\n removePage(page: SavedPage)\n {\n let idx = this.profile().saved_pages.indexOf(page);\n this.profile().saved_pages.splice(idx, 1);\n\n // Sync with remote\n this.save();\n }\n\n // TODO(jwall): This belongs somewhere else.\n textSizeChanged()\n {\n $('html').css('font-size', this.profile().font_size + 'px');\n }\n\n static createDefaultUser(): User\n {\n return {\n username: DEFAULT_USER_NAME,\n uid: null,\n strongs_modal: true,\n clear_search_after_query: false,\n items: [],\n append_to_bottom: false,\n insert_next_to_item: false,\n font_size: 10,\n saved_pages: [],\n verses_on_new_line: true,\n show_verse_numbers: true,\n };\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// ./src/services/profile-service.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/DynamicBibleIonic/config.xml b/DynamicBibleIonic/config.xml index 9c0c57fa..0c6d5e59 100644 --- a/DynamicBibleIonic/config.xml +++ b/DynamicBibleIonic/config.xml @@ -97,5 +97,5 @@ - + diff --git a/DynamicBibleIonic/package-lock.json b/DynamicBibleIonic/package-lock.json index df9c2735..c786079b 100644 --- a/DynamicBibleIonic/package-lock.json +++ b/DynamicBibleIonic/package-lock.json @@ -2255,25 +2255,20 @@ } }, "cordova-android": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-7.0.0.tgz", - "integrity": "sha1-yVvt/PvDhjsYDE0p7/7E95Nh0Z0=", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-6.2.3.tgz", + "integrity": "sha1-JJ8hts5fHxyEenq4OxaQnb7Vqig=", "requires": { - "android-versions": "1.2.1", - "cordova-common": "2.2.0", + "cordova-common": "2.0.2", "elementtree": "0.1.6", "nopt": "3.0.6", "properties-parser": "0.2.3", - "q": "1.5.1", + "q": "1.5.0", "shelljs": "0.5.3" }, "dependencies": { "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "android-versions": { - "version": "1.2.1", + "version": "1.1.0", "bundled": true }, "ansi": { @@ -2281,7 +2276,7 @@ "bundled": true }, "balanced-match": { - "version": "1.0.0", + "version": "0.4.2", "bundled": true }, "base64-js": { @@ -2289,21 +2284,21 @@ "bundled": true }, "big-integer": { - "version": "1.6.26", + "version": "1.6.22", "bundled": true }, "bplist-parser": { "version": "0.1.1", "bundled": true, "requires": { - "big-integer": "1.6.26" + "big-integer": "1.6.22" } }, "brace-expansion": { - "version": "1.1.8", + "version": "1.1.7", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "0.4.2", "concat-map": "0.0.1" } }, @@ -2312,7 +2307,7 @@ "bundled": true }, "cordova-common": { - "version": "2.2.0", + "version": "2.0.2", "bundled": true, "requires": { "ansi": "0.3.1", @@ -2320,11 +2315,11 @@ "cordova-registry-mapper": "1.1.15", "elementtree": "0.1.6", "glob": "5.0.15", - "minimatch": "3.0.4", + "minimatch": "3.0.3", "osenv": "0.1.4", "plist": "1.2.0", - "q": "1.5.1", - "semver": "5.4.1", + "q": "1.5.0", + "semver": "5.3.0", "shelljs": "0.5.3", "underscore": "1.8.3", "unorm": "1.4.1" @@ -2347,7 +2342,7 @@ "requires": { "inflight": "1.0.6", "inherits": "2.0.3", - "minimatch": "3.0.4", + "minimatch": "3.0.3", "once": "1.4.0", "path-is-absolute": "1.0.1" } @@ -2369,17 +2364,17 @@ "bundled": true }, "minimatch": { - "version": "3.0.4", + "version": "3.0.3", "bundled": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.7" } }, "nopt": { "version": "3.0.6", "bundled": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1.1.0" } }, "once": { @@ -2424,7 +2419,7 @@ "bundled": true }, "q": { - "version": "1.5.1", + "version": "1.5.0", "bundled": true }, "sax": { @@ -2432,7 +2427,7 @@ "bundled": true }, "semver": { - "version": "5.4.1", + "version": "5.3.0", "bundled": true }, "shelljs": { diff --git a/DynamicBibleIonic/package.json b/DynamicBibleIonic/package.json index 15cc22b8..12c8582e 100644 --- a/DynamicBibleIonic/package.json +++ b/DynamicBibleIonic/package.json @@ -33,7 +33,7 @@ "@ionic-native/status-bar": "4.3.1", "@ionic/storage": "2.1.3", "angularfire2": "^5.0.0-rc.4", - "cordova-android": "7.0.0", + "cordova-android": "6.2.3", "cordova-plugin-browsertab": "^0.2.0", "cordova-plugin-buildinfo": "^2.0.1", "cordova-plugin-compat": "^1.2.0", diff --git a/DynamicBibleIonic/platforms/android/AndroidManifest.xml b/DynamicBibleIonic/platforms/android/AndroidManifest.xml new file mode 100644 index 00000000..ed1c9067 --- /dev/null +++ b/DynamicBibleIonic/platforms/android/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/AndroidManifest.xml b/DynamicBibleIonic/platforms/android/CordovaLib/AndroidManifest.xml index 26a0aed0..3feb903c 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/AndroidManifest.xml +++ b/DynamicBibleIonic/platforms/android/CordovaLib/AndroidManifest.xml @@ -19,5 +19,5 @@ --> - + diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/build.gradle b/DynamicBibleIonic/platforms/android/CordovaLib/build.gradle index e63330a3..da3b45bf 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/build.gradle +++ b/DynamicBibleIonic/platforms/android/CordovaLib/build.gradle @@ -24,14 +24,12 @@ ext { buildscript { repositories { + mavenCentral() jcenter() - maven { - url "https://maven.google.com" - } } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' } @@ -42,7 +40,7 @@ apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' group = 'org.apache.cordova' -version = '7.0.0' +version = '6.2.3' android { compileSdkVersion cdvCompileSdkVersion @@ -50,8 +48,8 @@ android { publishNonDefault true compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_1_6 + targetCompatibility JavaVersion.VERSION_1_6 } sourceSets { @@ -129,9 +127,9 @@ bintray { licenses = ['Apache-2.0'] labels = ['android', 'cordova', 'phonegap'] version { - name = '7.0.0' + name = '6.2.3' released = new Date() - vcsTag = '7.0.0' + vcsTag = '6.2.3' } } } diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/cordova.gradle b/DynamicBibleIonic/platforms/android/CordovaLib/cordova.gradle index 0131a265..21a01bb5 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/cordova.gradle +++ b/DynamicBibleIonic/platforms/android/CordovaLib/cordova.gradle @@ -29,11 +29,7 @@ String doEnsureValueExists(filePath, props, key) { String doGetProjectTarget() { def props = new Properties() - def propertiesFile = 'project.properties'; - if(!(file(propertiesFile).exists())) { - propertiesFile = '../project.properties'; - } - file(propertiesFile).withReader { reader -> + file('project.properties').withReader { reader -> props.load(reader) } return doEnsureValueExists('project.properties', props, 'target') diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/project.properties b/DynamicBibleIonic/platforms/android/CordovaLib/project.properties index c48b00b8..df3c73c4 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/project.properties +++ b/DynamicBibleIonic/platforms/android/CordovaLib/project.properties @@ -10,7 +10,7 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=android-26 +target=android-25 apk-configurations= renderscript.opt.level=O0 android.library=true diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java index e2ed1cb8..85eeb53a 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java @@ -319,7 +319,6 @@ public class CordovaActivity extends Activity { /** * Called when view focus is changed */ - @SuppressLint("InlinedApi") @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java index 28c407f3..9459a113 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java @@ -18,8 +18,6 @@ */ package org.apache.cordova; -import android.annotation.SuppressLint; - import java.security.SecureRandom; import org.json.JSONArray; @@ -112,9 +110,6 @@ public class CordovaBridge { } /** Called by cordova.js to initialize the bridge. */ - //On old Androids SecureRandom isn't really secure, this is the least of your problems if - //you're running Android 4.3 and below in 2017 - @SuppressLint("TrulyRandom") int generateBridgeSecret() { SecureRandom randGen = new SecureRandom(); expectedBridgeSecret = randGen.nextInt(Integer.MAX_VALUE); diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java index ccda0272..5dd0ecae 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java @@ -22,12 +22,10 @@ import java.security.Principal; import java.security.PrivateKey; import java.security.cert.X509Certificate; -import android.annotation.SuppressLint; import android.webkit.ClientCertRequest; /** * Implementation of the ICordovaClientCertRequest for Android WebView. - * */ public class CordovaClientCertRequest implements ICordovaClientCertRequest { @@ -40,7 +38,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /** * Cancel this request */ - @SuppressLint("NewApi") public void cancel() { request.cancel(); @@ -49,7 +46,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /* * Returns the host name of the server requesting the certificate. */ - @SuppressLint("NewApi") public String getHost() { return request.getHost(); @@ -58,7 +54,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /* * Returns the acceptable types of asymmetric keys (can be null). */ - @SuppressLint("NewApi") public String[] getKeyTypes() { return request.getKeyTypes(); @@ -67,7 +62,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /* * Returns the port number of the server requesting the certificate. */ - @SuppressLint("NewApi") public int getPort() { return request.getPort(); @@ -76,7 +70,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /* * Returns the acceptable certificate issuers for the certificate matching the private key (can be null). */ - @SuppressLint("NewApi") public Principal[] getPrincipals() { return request.getPrincipals(); @@ -85,7 +78,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { /* * Ignore the request for now. Do not remember user's choice. */ - @SuppressLint("NewApi") public void ignore() { request.ignore(); @@ -97,7 +89,6 @@ public class CordovaClientCertRequest implements ICordovaClientCertRequest { * @param privateKey The privateKey * @param chain The certificate chain */ - @SuppressLint("NewApi") public void proceed(PrivateKey privateKey, X509Certificate[] chain) { request.proceed(privateKey, chain); diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java index ff906834..3b8468f3 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java @@ -19,7 +19,6 @@ package org.apache.cordova; import android.app.Activity; -import android.content.Context; import android.content.Intent; import org.apache.cordova.CordovaPlugin; @@ -52,18 +51,10 @@ public interface CordovaInterface { /** * Get the Android activity. * - * If a custom engine lives outside of the Activity's lifecycle the return value may be null. - * * @return the Activity */ public abstract Activity getActivity(); - - /** - * Get the Android context. - * - * @return the Context - */ - public Context getContext(); + /** * Called when a message is sent to plugin. diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java index 9a6e9245..71dcb782 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java @@ -19,9 +19,7 @@ package org.apache.cordova; -import android.annotation.SuppressLint; import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; @@ -86,11 +84,6 @@ public class CordovaInterfaceImpl implements CordovaInterface { return activity; } - @Override - public Context getContext() { - return activity; - } - @Override public Object onMessage(String id, Object data) { if ("exit".equals(id)) { @@ -228,7 +221,6 @@ public class CordovaInterfaceImpl implements CordovaInterface { requestPermissions(plugin, requestCode, permissions); } - @SuppressLint("NewApi") public void requestPermissions(CordovaPlugin plugin, int requestCode, String [] permissions) { int mappedRequestCode = permissionResultCallbacks.registerCallback(plugin, requestCode); getActivity().requestPermissions(permissions, mappedRequestCode); diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java index 0e249387..713884b9 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java @@ -31,7 +31,7 @@ import android.webkit.WebChromeClient.CustomViewCallback; * are not expected to implement it. */ public interface CordovaWebView { - public static final String CORDOVA_VERSION = "7.0.0"; + public static final String CORDOVA_VERSION = "6.2.3"; void init(CordovaInterface cordova, List pluginEntries, CordovaPreferences preferences); diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java index fb99c344..85a0b5f5 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java @@ -18,7 +18,6 @@ */ package org.apache.cordova; -import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -92,7 +91,6 @@ public class CordovaWebViewImpl implements CordovaWebView { init(cordova, new ArrayList(), new CordovaPreferences()); } - @SuppressLint("Assert") @Override public void init(CordovaInterface cordova, List pluginEntries, CordovaPreferences preferences) { if (this.cordova != null) { diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/PermissionHelper.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/PermissionHelper.java deleted file mode 100644 index 52f6e140..00000000 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/PermissionHelper.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ -package org.apache.cordova; - -import java.util.Arrays; - -import org.json.JSONException; - -import android.content.pm.PackageManager; - -/** - * This class provides reflective methods for permission requesting and checking so that plugins - * written for cordova-android 5.0.0+ can still compile with earlier cordova-android versions. - */ -public class PermissionHelper { - private static final String LOG_TAG = "CordovaPermissionHelper"; - - /** - * Requests a "dangerous" permission for the application at runtime. This is a helper method - * alternative to cordovaInterface.requestPermission() that does not require the project to be - * built with cordova-android 5.0.0+ - * - * @param plugin The plugin the permission is being requested for - * @param requestCode A requestCode to be passed to the plugin's onRequestPermissionResult() - * along with the result of the permission request - * @param permission The permission to be requested - */ - public static void requestPermission(CordovaPlugin plugin, int requestCode, String permission) { - PermissionHelper.requestPermissions(plugin, requestCode, new String[] {permission}); - } - - /** - * Requests "dangerous" permissions for the application at runtime. This is a helper method - * alternative to cordovaInterface.requestPermissions() that does not require the project to be - * built with cordova-android 5.0.0+ - * - * @param plugin The plugin the permissions are being requested for - * @param requestCode A requestCode to be passed to the plugin's onRequestPermissionResult() - * along with the result of the permissions request - * @param permissions The permissions to be requested - */ - public static void requestPermissions(CordovaPlugin plugin, int requestCode, String[] permissions) { - plugin.cordova.requestPermissions(plugin, requestCode, permissions); - } - - /** - * Checks at runtime to see if the application has been granted a permission. This is a helper - * method alternative to cordovaInterface.hasPermission() that does not require the project to - * be built with cordova-android 5.0.0+ - * - * @param plugin The plugin the permission is being checked against - * @param permission The permission to be checked - * - * @return True if the permission has already been granted and false otherwise - */ - public static boolean hasPermission(CordovaPlugin plugin, String permission) { - return plugin.cordova.hasPermission(permission); - } - - private static void deliverPermissionResult(CordovaPlugin plugin, int requestCode, String[] permissions) { - // Generate the request results - int[] requestResults = new int[permissions.length]; - Arrays.fill(requestResults, PackageManager.PERMISSION_GRANTED); - - try { - plugin.onRequestPermissionResult(requestCode, permissions, requestResults); - } catch (JSONException e) { - LOG.e(LOG_TAG, "JSONException when delivering permissions results", e); - } - } -} \ No newline at end of file diff --git a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java index d15b0eee..3be7d940 100644 --- a/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java +++ b/DynamicBibleIonic/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java @@ -110,11 +110,7 @@ public class SystemWebViewEngine implements CordovaWebViewEngine { nativeToJsMessageQueue.addBridgeMode(new NativeToJsMessageQueue.OnlineEventsBridgeMode(new NativeToJsMessageQueue.OnlineEventsBridgeMode.OnlineEventsBridgeModeDelegate() { @Override public void setNetworkAvailable(boolean value) { - //sometimes this can be called after calling webview.destroy() on destroy() - //thus resulting in a NullPointerException - if(webView!=null) { - webView.setNetworkAvailable(value); - } + webView.setNetworkAvailable(value); } @Override public void runOnUiThread(Runnable r) { @@ -214,6 +210,11 @@ public class SystemWebViewEngine implements CordovaWebViewEngine { settings.setAppCachePath(databasePath); settings.setAppCacheEnabled(true); + // Enable scaling + // Fix for CB-12015 + settings.setUseWideViewPort(true); + settings.setLoadWithOverviewMode(true); + // Fix for CB-1405 // Google issue 4641 String defaultUserAgent = settings.getUserAgentString(); @@ -254,9 +255,6 @@ public class SystemWebViewEngine implements CordovaWebViewEngine { } } - // Yeah, we know, which is why we makes ure that we don't do this if the bridge is - // below JELLYBEAN_MR1. It'd be great if lint was just a little smarter. - @SuppressLint("AddJavascriptInterface") private static void exposeJsInterface(WebView webView, CordovaBridge bridge) { if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)) { LOG.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old."); diff --git a/DynamicBibleIonic/platforms/android/android.json b/DynamicBibleIonic/platforms/android/android.json index 5f643455..1519410c 100644 --- a/DynamicBibleIonic/platforms/android/android.json +++ b/DynamicBibleIonic/platforms/android/android.json @@ -8,6 +8,14 @@ "res/xml/config.xml": { "parents": { "/*": [ + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, { "xml": "", "count": 1 @@ -36,10 +44,18 @@ "xml": "", "count": 1 }, + { + "xml": "", + "count": 1 + }, { "xml": "", "count": 1 }, + { + "xml": "", + "count": 1 + }, { "xml": "", "count": 1 @@ -52,28 +68,12 @@ "xml": "", "count": 1 }, - { - "xml": "", - "count": 1 - }, - { - "xml": "", - "count": 1 - }, { "xml": "", "count": 1 }, { - "xml": "", - "count": 1 - }, - { - "xml": "", - "count": 1 - }, - { - "xml": "", + "xml": "", "count": 1 } ] @@ -106,6 +106,15 @@ } }, "installed_plugins": { + "cordova-plugin-compat": { + "PACKAGE_NAME": "walljm.dynamicbible" + }, + "cordova-plugin-browsertab": { + "PACKAGE_NAME": "walljm.dynamicbible" + }, + "cordova-plugin-buildinfo": { + "PACKAGE_NAME": "walljm.dynamicbible" + }, "cordova-plugin-console": { "PACKAGE_NAME": "walljm.dynamicbible" }, @@ -117,9 +126,19 @@ "XWALK_MULTIPLEAPK": "true", "PACKAGE_NAME": "walljm.dynamicbible" }, + "cordova-plugin-customurlscheme": { + "URL_SCHEME": "com.firebase.cordova", + "ANDROID_SCHEME": " ", + "ANDROID_HOST": " ", + "ANDROID_PATHPREFIX": "/", + "PACKAGE_NAME": "walljm.dynamicbible" + }, "cordova-plugin-device": { "PACKAGE_NAME": "walljm.dynamicbible" }, + "cordova-plugin-inappbrowser": { + "PACKAGE_NAME": "walljm.dynamicbible" + }, "cordova-plugin-splashscreen": { "PACKAGE_NAME": "walljm.dynamicbible" }, @@ -129,31 +148,39 @@ "cordova-plugin-whitelist": { "PACKAGE_NAME": "walljm.dynamicbible" }, - "ionic-plugin-keyboard": { - "PACKAGE_NAME": "walljm.dynamicbible" - }, - "cordova-plugin-buildinfo": { - "PACKAGE_NAME": "walljm.dynamicbible" - }, "cordova-universal-links-plugin": { "PACKAGE_NAME": "walljm.dynamicbible" }, - "cordova-plugin-browsertab": { - "PACKAGE_NAME": "walljm.dynamicbible" - }, - "cordova-plugin-inappbrowser": { - "PACKAGE_NAME": "walljm.dynamicbible" - }, - "cordova-plugin-customurlscheme": { - "URL_SCHEME": "com.firebase.cordova", - "ANDROID_SCHEME": " ", - "ANDROID_HOST": " ", - "ANDROID_PATHPREFIX": "/", + "ionic-plugin-keyboard": { "PACKAGE_NAME": "walljm.dynamicbible" } }, "dependent_plugins": {}, "modules": [ + { + "id": "cordova-plugin-browsertab.BrowserTab", + "file": "plugins/cordova-plugin-browsertab/www/browsertab.js", + "pluginId": "cordova-plugin-browsertab", + "clobbers": [ + "cordova.plugins.browsertab" + ] + }, + { + "id": "cordova-plugin-buildinfo.BuildInfo", + "file": "plugins/cordova-plugin-buildinfo/www/buildinfo.js", + "pluginId": "cordova-plugin-buildinfo", + "clobbers": [ + "BuildInfo" + ] + }, + { + "id": "cordova-plugin-customurlscheme.LaunchMyApp", + "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js", + "pluginId": "cordova-plugin-customurlscheme", + "clobbers": [ + "window.plugins.launchmyapp" + ] + }, { "id": "cordova-plugin-device.device", "file": "plugins/cordova-plugin-device/www/device.js", @@ -162,6 +189,15 @@ "device" ] }, + { + "id": "cordova-plugin-inappbrowser.inappbrowser", + "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js", + "pluginId": "cordova-plugin-inappbrowser", + "clobbers": [ + "cordova.InAppBrowser.open", + "window.open" + ] + }, { "id": "cordova-plugin-splashscreen.SplashScreen", "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js", @@ -178,23 +214,6 @@ "window.StatusBar" ] }, - { - "id": "ionic-plugin-keyboard.keyboard", - "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js", - "pluginId": "ionic-plugin-keyboard", - "clobbers": [ - "cordova.plugins.Keyboard" - ], - "runs": true - }, - { - "id": "cordova-plugin-buildinfo.BuildInfo", - "file": "plugins/cordova-plugin-buildinfo/www/buildinfo.js", - "pluginId": "cordova-plugin-buildinfo", - "clobbers": [ - "BuildInfo" - ] - }, { "id": "cordova-universal-links-plugin.universalLinks", "file": "plugins/cordova-universal-links-plugin/www/universal_links.js", @@ -204,43 +223,28 @@ ] }, { - "id": "cordova-plugin-browsertab.BrowserTab", - "file": "plugins/cordova-plugin-browsertab/www/browsertab.js", - "pluginId": "cordova-plugin-browsertab", + "id": "ionic-plugin-keyboard.keyboard", + "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js", + "pluginId": "ionic-plugin-keyboard", "clobbers": [ - "cordova.plugins.browsertab" - ] - }, - { - "id": "cordova-plugin-inappbrowser.inappbrowser", - "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js", - "pluginId": "cordova-plugin-inappbrowser", - "clobbers": [ - "cordova.InAppBrowser.open", - "window.open" - ] - }, - { - "id": "cordova-plugin-customurlscheme.LaunchMyApp", - "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js", - "pluginId": "cordova-plugin-customurlscheme", - "clobbers": [ - "window.plugins.launchmyapp" - ] + "cordova.plugins.Keyboard" + ], + "runs": true } ], "plugin_metadata": { + "cordova-plugin-compat": "1.2.0", + "cordova-plugin-browsertab": "0.2.0", + "cordova-plugin-buildinfo": "2.0.1", "cordova-plugin-console": "1.1.0", "cordova-plugin-crosswalk-webview": "2.3.0", + "cordova-plugin-customurlscheme": "4.3.0", "cordova-plugin-device": "1.1.7", + "cordova-plugin-inappbrowser": "2.0.1", "cordova-plugin-splashscreen": "4.1.0", "cordova-plugin-statusbar": "2.4.1", "cordova-plugin-whitelist": "1.3.3", - "ionic-plugin-keyboard": "2.2.1", - "cordova-plugin-buildinfo": "2.0.1", "cordova-universal-links-plugin": "1.2.1", - "cordova-plugin-browsertab": "0.2.0", - "cordova-plugin-inappbrowser": "2.0.1", - "cordova-plugin-customurlscheme": "4.3.0" + "ionic-plugin-keyboard": "2.2.1" } } \ No newline at end of file diff --git a/DynamicBibleIonic/platforms/android/build.gradle b/DynamicBibleIonic/platforms/android/build.gradle index fb8082da..e9d5fa13 100644 --- a/DynamicBibleIonic/platforms/android/build.gradle +++ b/DynamicBibleIonic/platforms/android/build.gradle @@ -1,54 +1,317 @@ -/* Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. */ -// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.android.application' buildscript { repositories { + mavenCentral() jcenter() - maven { - url "https://maven.google.com" - } } - dependencies { - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - classpath 'com.android.tools.build:gradle:3.0.0' + // Switch the Android Gradle plugin version requirement depending on the + // installed version of Gradle. This dependency is documented at + // http://tools.android.com/tech-docs/new-build-system/version-compatibility + // and https://issues.apache.org/jira/browse/CB-8143 + dependencies { + classpath 'com.android.tools.build:gradle:2.2.3' } } +// Allow plugins to declare Maven dependencies via build-extras.gradle. allprojects { repositories { + mavenCentral(); jcenter() - maven { - url "https://maven.google.com" - } - } - //This replaces project.properties w.r.t. build settings - project.ext { - defaultBuildToolsVersion="25.0.2" //String - defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4 - defaultTargetSdkVersion=26 //Integer - We ALWAYS target the latest by default - defaultCompileSdkVersion=26 //Integer - We ALWAYS compile with the latest by default } } -task clean(type: Delete) { - delete rootProject.buildDir +task wrapper(type: Wrapper) { + gradleVersion = '2.14.1' +} + +// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties. +// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html +ext { + apply from: 'CordovaLib/cordova.gradle' + // The value for android.compileSdkVersion. + if (!project.hasProperty('cdvCompileSdkVersion')) { + cdvCompileSdkVersion = null; + } + // The value for android.buildToolsVersion. + if (!project.hasProperty('cdvBuildToolsVersion')) { + cdvBuildToolsVersion = null; + } + // Sets the versionCode to the given value. + if (!project.hasProperty('cdvVersionCode')) { + cdvVersionCode = null + } + // Sets the minSdkVersion to the given value. + if (!project.hasProperty('cdvMinSdkVersion')) { + cdvMinSdkVersion = null + } + // Whether to build architecture-specific APKs. + if (!project.hasProperty('cdvBuildMultipleApks')) { + cdvBuildMultipleApks = null + } + // .properties files to use for release signing. + if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) { + cdvReleaseSigningPropertiesFile = null + } + // .properties files to use for debug signing. + if (!project.hasProperty('cdvDebugSigningPropertiesFile')) { + cdvDebugSigningPropertiesFile = null + } + // Set by build.js script. + if (!project.hasProperty('cdvBuildArch')) { + cdvBuildArch = null + } + + // Plugin gradle extensions can append to this to have code run at the end. + cdvPluginPostBuildExtras = [] +} + +// PLUGIN GRADLE EXTENSIONS START +apply from: "cordova-plugin-browsertab/dynamicbible-BrowserTab.gradle" +apply from: "cordova-plugin-buildinfo/dynamicbible-BuildInfo.gradle" +apply from: "cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle" +// PLUGIN GRADLE EXTENSIONS END + +def hasBuildExtras = file('build-extras.gradle').exists() +if (hasBuildExtras) { + apply from: 'build-extras.gradle' +} + +// Set property defaults after extension .gradle files. +if (ext.cdvCompileSdkVersion == null) { + ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget() +} +if (ext.cdvBuildToolsVersion == null) { + ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools() +} +if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) { + ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties' +} +if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) { + ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties' +} + +// Cast to appropriate types. +ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean(); +ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion) +ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode) + +def computeBuildTargetName(debugBuild) { + def ret = 'assemble' + if (cdvBuildMultipleApks && cdvBuildArch) { + def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch + ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1); + } + return ret + (debugBuild ? 'Debug' : 'Release') +} + +// Make cdvBuild a task that depends on the debug/arch-sepecific task. +task cdvBuildDebug +cdvBuildDebug.dependsOn { + return computeBuildTargetName(true) +} + +task cdvBuildRelease +cdvBuildRelease.dependsOn { + return computeBuildTargetName(false) +} + +task cdvPrintProps << { + println('cdvCompileSdkVersion=' + cdvCompileSdkVersion) + println('cdvBuildToolsVersion=' + cdvBuildToolsVersion) + println('cdvVersionCode=' + cdvVersionCode) + println('cdvMinSdkVersion=' + cdvMinSdkVersion) + println('cdvBuildMultipleApks=' + cdvBuildMultipleApks) + println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile) + println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile) + println('cdvBuildArch=' + cdvBuildArch) + println('computedVersionCode=' + android.defaultConfig.versionCode) + android.productFlavors.each { flavor -> + println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode) + } +} + +android { + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + resources.srcDirs = ['src'] + aidl.srcDirs = ['src'] + renderscript.srcDirs = ['src'] + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + } + } + + defaultConfig { + versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode")) + applicationId privateHelpers.extractStringFromManifest("package") + + if (cdvMinSdkVersion != null) { + minSdkVersion cdvMinSdkVersion + } + } + + lintOptions { + abortOnError false; + } + + compileSdkVersion cdvCompileSdkVersion + buildToolsVersion cdvBuildToolsVersion + + if (Boolean.valueOf(cdvBuildMultipleApks)) { + productFlavors { + armv7 { + versionCode defaultConfig.versionCode*10 + 2 + ndk { + abiFilters "armeabi-v7a", "" + } + } + x86 { + versionCode defaultConfig.versionCode*10 + 4 + ndk { + abiFilters "x86", "" + } + } + all { + ndk { + abiFilters "all", "" + } + } + } + } + /* + + ELSE NOTHING! DON'T MESS WITH THE VERSION CODE IF YOU DON'T HAVE TO! + + else if (!cdvVersionCode) { + def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion") + // Vary versionCode by the two most common API levels: + // 14 is ICS, which is the lowest API level for many apps. + // 20 is Lollipop, which is the lowest API level for the updatable system webview. + if (minSdkVersion >= 20) { + defaultConfig.versionCode += 9 + } else if (minSdkVersion >= 14) { + defaultConfig.versionCode += 8 + } + } + */ + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_6 + targetCompatibility JavaVersion.VERSION_1_6 + } + + if (cdvReleaseSigningPropertiesFile) { + signingConfigs { + release { + // These must be set or Gradle will complain (even if they are overridden). + keyAlias = "" + keyPassword = "__unset" // And these must be set to non-empty in order to have the signing step added to the task graph. + storeFile = null + storePassword = "__unset" + } + } + buildTypes { + release { + signingConfig signingConfigs.release + } + } + addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release) + } + if (cdvDebugSigningPropertiesFile) { + addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug) + } +} + +dependencies { + compile fileTree(dir: 'libs', include: '*.jar') + // SUB-PROJECT DEPENDENCIES START + debugCompile(project(path: "CordovaLib", configuration: "debug")) + releaseCompile(project(path: "CordovaLib", configuration: "release")) + compile "com.android.support:customtabs:23.3.0" + // SUB-PROJECT DEPENDENCIES END +} + +def promptForReleaseKeyPassword() { + if (!cdvReleaseSigningPropertiesFile) { + return; + } + if ('__unset'.equals(android.signingConfigs.release.storePassword)) { + android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ') + } + if ('__unset'.equals(android.signingConfigs.release.keyPassword)) { + android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: '); + } +} + +gradle.taskGraph.whenReady { taskGraph -> + taskGraph.getAllTasks().each() { task -> + if (task.name == 'validateReleaseSigning' || task.name == 'validateSigningRelease') { + promptForReleaseKeyPassword() + } + } +} + +def addSigningProps(propsFilePath, signingConfig) { + def propsFile = file(propsFilePath) + def props = new Properties() + propsFile.withReader { reader -> + props.load(reader) + } + + def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile')) + if (!storeFile.isAbsolute()) { + storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile()) + } + if (!storeFile.exists()) { + throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath()) + } + signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias') + signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword)) + signingConfig.storeFile = storeFile + signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword)) + def storeType = props.get('storeType', props.get('key.store.type', '')) + if (!storeType) { + def filename = storeFile.getName().toLowerCase(); + if (filename.endsWith('.p12') || filename.endsWith('.pfx')) { + storeType = 'pkcs12' + } else { + storeType = signingConfig.storeType // "jks" + } + } + signingConfig.storeType = storeType +} + +for (def func : cdvPluginPostBuildExtras) { + func() +} + +// This can be defined within build-extras.gradle as: +// ext.postBuildExtras = { ... code here ... } +if (hasProperty('postBuildExtras')) { + postBuildExtras() } diff --git a/DynamicBibleIonic/platforms/android/cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle b/DynamicBibleIonic/platforms/android/cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle index fa8b724f..635925ae 100644 --- a/DynamicBibleIonic/platforms/android/cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle +++ b/DynamicBibleIonic/platforms/android/cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle @@ -29,7 +29,7 @@ def DEFAULT_MIN_SDK_VERSION = 14 def getConfigPreference(name) { name = name.toLowerCase() - def xml = file("src/main/res/xml/config.xml").getText() + def xml = file("res/xml/config.xml").getText() // Disable namespace awareness since Cordova doesn't use them properly def root = new XmlParser(false, false).parseText(xml) diff --git a/DynamicBibleIonic/platforms/android/cordova/.jshintrc b/DynamicBibleIonic/platforms/android/cordova/.jshintrc new file mode 100644 index 00000000..89a121cf --- /dev/null +++ b/DynamicBibleIonic/platforms/android/cordova/.jshintrc @@ -0,0 +1,10 @@ +{ + "node": true + , "bitwise": true + , "undef": true + , "trailing": true + , "quotmark": true + , "indent": 4 + , "unused": "vars" + , "latedef": "nofunc" +} diff --git a/DynamicBibleIonic/platforms/android/cordova/Api.js b/DynamicBibleIonic/platforms/android/cordova/Api.js index e97f5380..8e4711cb 100644 --- a/DynamicBibleIonic/platforms/android/cordova/Api.js +++ b/DynamicBibleIonic/platforms/android/cordova/Api.js @@ -29,7 +29,8 @@ var selfEvents = require('cordova-common').events; var PLATFORM = 'android'; -function setupEvents (externalEventEmitter) { + +function setupEvents(externalEventEmitter) { if (externalEventEmitter) { // This will make the platform internal events visible outside selfEvents.forwardEventsTo(externalEventEmitter); @@ -42,6 +43,7 @@ function setupEvents (externalEventEmitter) { return selfEvents; } + /** * Class, that acts as abstraction over particular platform. Encapsulates the * platform's properties and methods. @@ -53,10 +55,9 @@ function setupEvents (externalEventEmitter) { * * * platform: String that defines a platform name. */ -function Api (platform, platformRootDir, events) { +function Api(platform, platformRootDir, events) { this.platform = PLATFORM; this.root = path.resolve(__dirname, '..'); - this.builder = 'gradle'; setupEvents(events); @@ -72,24 +73,20 @@ function Api (platform, platformRootDir, events) { strings: path.join(self.root, 'res/values/strings.xml'), manifest: path.join(self.root, 'AndroidManifest.xml'), build: path.join(self.root, 'build'), - javaSrc: path.join(self.root, 'src'), // NOTE: Due to platformApi spec we need to return relative paths here cordovaJs: 'bin/templates/project/assets/www/cordova.js', cordovaJsSrc: 'cordova-js-src' }; // XXX Override some locations for Android Studio projects - if (AndroidStudio.isAndroidStudioProject(self.root) === true) { - selfEvents.emit('log', 'Android Studio project detected'); - this.builder = 'studio'; - this.android_studio = true; - this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml'); - this.locations.strings = path.join(self.root, 'app/src/main/res/values/strings.xml'); - this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml'); - // We could have Java Source, we could have other languages - this.locations.javaSrc = path.join(self.root, 'app/src/main/java/'); - this.locations.www = path.join(self.root, 'app/src/main/assets/www'); - this.locations.res = path.join(self.root, 'app/src/main/res'); + if(AndroidStudio.isAndroidStudioProject(self.root) === true) { + selfEvents.emit('log', 'Android Studio project detected'); + this.android_studio = true; + this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml'); + this.locations.strings = path.join(self.root, 'app/src/main/res/xml/strings.xml'); + this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml'); + this.locations.www = path.join(self.root, 'app/src/main/assets/www'); + this.locations.res = path.join(self.root, 'app/src/main/res'); } } @@ -115,13 +112,16 @@ Api.createPlatform = function (destination, config, options, events) { events = setupEvents(events); var result; try { - result = require('../../lib/create').create(destination, config, options, events).then(function (destination) { + result = require('../../lib/create') + .create(destination, config, options, events) + .then(function (destination) { var PlatformApi = require(path.resolve(destination, 'cordova/Api')); return new PlatformApi(PLATFORM, destination, events); }); - } catch (e) { - events.emit('error', 'createPlatform is not callable from the android project API.'); - throw (e); + } + catch (e) { + events.emit('error','createPlatform is not callable from the android project API.'); + throw(e); } return result; }; @@ -146,13 +146,16 @@ Api.updatePlatform = function (destination, options, events) { events = setupEvents(events); var result; try { - result = require('../../lib/create').update(destination, options, events).then(function (destination) { + result = require('../../lib/create') + .update(destination, options, events) + .then(function (destination) { var PlatformApi = require(path.resolve(destination, 'cordova/Api')); return new PlatformApi('android', destination, events); }); - } catch (e) { - events.emit('error', 'updatePlatform is not callable from the android project API, you will need to do this manually.'); - throw (e); + } + catch (e) { + events.emit('error','updatePlatform is not callable from the android project API, you will need to do this manually.'); + throw(e); } return result; }; @@ -223,35 +226,40 @@ Api.prototype.addPlugin = function (plugin, installOptions) { installOptions.variables.PACKAGE_NAME = project.getPackageName(); } - if (this.android_studio === true) { - installOptions.android_studio = true; + if(this.android_studio === true) { + installOptions.android_studio = true; } - return Q().then(function () { - // CB-11964: Do a clean when installing the plugin code to get around - // the Gradle bug introduced by the Android Gradle Plugin Version 2.2 - // TODO: Delete when the next version of Android Gradle plugin comes out - // Since clean doesn't just clean the build, it also wipes out www, we need - // to pass additional options. + return Q() + .then(function () { + //CB-11964: Do a clean when installing the plugin code to get around + //the Gradle bug introduced by the Android Gradle Plugin Version 2.2 + //TODO: Delete when the next version of Android Gradle plugin comes out - // Do some basic argument parsing - var opts = {}; + // Since clean doesn't just clean the build, it also wipes out www, we need + // to pass additional options. - // Skip cleaning prepared files when not invoking via cordova CLI. - opts.noPrepare = true; + // Do some basic argument parsing + var opts = {}; - if (!AndroidStudio.isAndroidStudioProject(self.root) && !project.isClean()) { - return self.clean(opts); - } - }).then(function () { - return PluginManager.get(self.platform, self.locations, project).addPlugin(plugin, installOptions); - }).then(function () { - if (plugin.getFrameworks(this.platform).length === 0) return; - selfEvents.emit('verbose', 'Updating build files since android plugin contained '); - // This should pick the correct builder, not just get gradle - require('./lib/builders/builders').getBuilder(this.builder).prepBuildFiles(); - }.bind(this)) - // CB-11022 Return truthy value to prevent running prepare after + // Skip cleaning prepared files when not invoking via cordova CLI. + opts.noPrepare = true; + + if(!AndroidStudio.isAndroidStudioProject(self.root) && !project.isClean()) { + return self.clean(opts); + } + }) + .then(function () { + return PluginManager.get(self.platform, self.locations, project) + .addPlugin(plugin, installOptions); + }) + .then(function () { + if (plugin.getFrameworks(this.platform).length === 0) return; + + selfEvents.emit('verbose', 'Updating build files since android plugin contained '); + require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles(); + }.bind(this)) + // CB-11022 Return truthy value to prevent running prepare after .thenResolve(true); }; @@ -271,9 +279,9 @@ Api.prototype.addPlugin = function (plugin, installOptions) { Api.prototype.removePlugin = function (plugin, uninstallOptions) { var project = AndroidProject.getProjectFile(this.root); - if (uninstallOptions && uninstallOptions.usePlatformWww === true && this.android_studio === true) { - uninstallOptions.usePlatformWww = false; - uninstallOptions.android_studio = true; + if(uninstallOptions && uninstallOptions.usePlatformWww === true && this.android_studio === true) { + uninstallOptions.usePlatformWww = false; + uninstallOptions.android_studio = true; } return PluginManager.get(this.platform, this.locations, project) @@ -282,7 +290,7 @@ Api.prototype.removePlugin = function (plugin, uninstallOptions) { if (plugin.getFrameworks(this.platform).length === 0) return; selfEvents.emit('verbose', 'Updating build files since android plugin contained '); - require('./lib/builders/builders').getBuilder(this.builder).prepBuildFiles(); + require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles(); }.bind(this)) // CB-11022 Return truthy value to prevent running prepare after .thenResolve(true); @@ -335,12 +343,11 @@ Api.prototype.removePlugin = function (plugin, uninstallOptions) { */ Api.prototype.build = function (buildOptions) { var self = this; - if (this.android_studio) { - buildOptions.studio = true; - } - return require('./lib/check_reqs').run().then(function () { + return require('./lib/check_reqs').run() + .then(function () { return require('./lib/build').run.call(self, buildOptions); - }).then(function (buildResults) { + }) + .then(function (buildResults) { // Cast build result to array of build artifacts return buildResults.apkPaths.map(function (apkPath) { return { @@ -365,9 +372,10 @@ Api.prototype.build = function (buildOptions) { * @return {Promise} A promise either fulfilled if package was built and ran * successfully, or rejected with CordovaError. */ -Api.prototype.run = function (runOptions) { +Api.prototype.run = function(runOptions) { var self = this; - return require('./lib/check_reqs').run().then(function () { + return require('./lib/check_reqs').run() + .then(function () { return require('./lib/run').run.call(self, runOptions); }); }; @@ -379,23 +387,19 @@ Api.prototype.run = function (runOptions) { * @return {Promise} Return a promise either fulfilled, or rejected with * CordovaError. */ -Api.prototype.clean = function (cleanOptions) { +Api.prototype.clean = function(cleanOptions) { var self = this; - if (this.android_studio) { - // This will lint, checking for null won't - if (typeof cleanOptions === 'undefined') { - cleanOptions = {}; - } - cleanOptions.studio = true; - } - - return require('./lib/check_reqs').run().then(function () { - return require('./lib/build').runClean.call(self, cleanOptions); - }).then(function () { - return require('./lib/prepare').clean.call(self, cleanOptions); - }); + return require('./lib/check_reqs').run() + .then(function () { + return require('./lib/build').runClean.call(self, cleanOptions); + }) + .then(function () { + return require('./lib/prepare').clean.call(self, cleanOptions); + }); }; + + /** * Performs a requirements check for current platform. Each platform defines its * own set of requirements, which should be resolved before platform can be @@ -404,7 +408,7 @@ Api.prototype.clean = function (cleanOptions) { * @return {Promise} Promise, resolved with set of Requirement * objects for current platform. */ -Api.prototype.requirements = function () { +Api.prototype.requirements = function() { return require('./lib/check_reqs').check_all(); }; diff --git a/DynamicBibleIonic/platforms/android/cordova/android_sdk_version.bat b/DynamicBibleIonic/platforms/android/cordova/android_sdk_version.bat index a6bc1043..33a1fa25 100644 --- a/DynamicBibleIonic/platforms/android/cordova/android_sdk_version.bat +++ b/DynamicBibleIonic/platforms/android/cordova/android_sdk_version.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0android_sdk_version" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'android_sdk_version' script in 'bin' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/check_reqs.bat b/DynamicBibleIonic/platforms/android/cordova/check_reqs.bat index 846dfa1f..cb2c6f54 100644 --- a/DynamicBibleIonic/platforms/android/cordova/check_reqs.bat +++ b/DynamicBibleIonic/platforms/android/cordova/check_reqs.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0check_reqs" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'check_reqs' script in 'bin' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/Adb.js b/DynamicBibleIonic/platforms/android/cordova/lib/Adb.js index 038c67c0..84ae707e 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/Adb.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/Adb.js @@ -25,11 +25,11 @@ var CordovaError = require('cordova-common').CordovaError; var Adb = {}; -function isDevice (line) { +function isDevice(line) { return line.match(/\w+\tdevice/) && !line.match(/emulator/); } -function isEmulator (line) { +function isEmulator(line) { return line.match(/device/) && line.match(/emulator/); } @@ -44,7 +44,8 @@ function isEmulator (line) { * devices/emulators */ Adb.devices = function (opts) { - return spawn('adb', ['devices'], {cwd: os.tmpdir()}).then(function (output) { + return spawn('adb', ['devices'], {cwd: os.tmpdir()}) + .then(function(output) { return output.split('\n').filter(function (line) { // Filter out either real devices or emulators, depending on options return (line && opts && opts.emulators) ? isEmulator(line) : isDevice(line); @@ -58,7 +59,8 @@ Adb.install = function (target, packagePath, opts) { events.emit('verbose', 'Installing apk ' + packagePath + ' on target ' + target + '...'); var args = ['-s', target, 'install']; if (opts && opts.replace) args.push('-r'); - return spawn('adb', args.concat(packagePath), {cwd: os.tmpdir()}).then(function (output) { + return spawn('adb', args.concat(packagePath), {cwd: os.tmpdir()}) + .then(function(output) { // 'adb install' seems to always returns no error, even if installation fails // so we catching output to detect installation failure if (output.match(/Failure/)) { @@ -84,7 +86,8 @@ Adb.shell = function (target, shellCommand) { events.emit('verbose', 'Running adb shell command "' + shellCommand + '" on target ' + target + '...'); var args = ['-s', target, 'shell']; shellCommand = shellCommand.split(/\s+/); - return spawn('adb', args.concat(shellCommand), {cwd: os.tmpdir()}).catch(function (output) { + return spawn('adb', args.concat(shellCommand), {cwd: os.tmpdir()}) + .catch(function (output) { return Q.reject(new CordovaError('Failed to execute shell command "' + shellCommand + '"" on device: ' + output)); }); @@ -92,7 +95,8 @@ Adb.shell = function (target, shellCommand) { Adb.start = function (target, activityName) { events.emit('verbose', 'Starting application "' + activityName + '" on target ' + target + '...'); - return Adb.shell(target, 'am start -W -a android.intent.action.MAIN -n' + activityName).catch(function (output) { + return Adb.shell(target, 'am start -W -a android.intent.action.MAIN -n' + activityName) + .catch(function (output) { return Q.reject(new CordovaError('Failed to start application "' + activityName + '"" on device: ' + output)); }); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidManifest.js b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidManifest.js index 5b7077ae..8248f593 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidManifest.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidManifest.js @@ -19,12 +19,12 @@ var fs = require('fs'); var et = require('elementtree'); -var xml = require('cordova-common').xmlHelpers; +var xml= require('cordova-common').xmlHelpers; var DEFAULT_ORIENTATION = 'default'; /** Wraps an AndroidManifest file */ -function AndroidManifest (path) { +function AndroidManifest(path) { this.path = path; this.doc = xml.parseElementtreeSync(path); if (this.doc.getroot().tag !== 'manifest') { @@ -32,38 +32,38 @@ function AndroidManifest (path) { } } -AndroidManifest.prototype.getVersionName = function () { +AndroidManifest.prototype.getVersionName = function() { return this.doc.getroot().attrib['android:versionName']; }; -AndroidManifest.prototype.setVersionName = function (versionName) { +AndroidManifest.prototype.setVersionName = function(versionName) { this.doc.getroot().attrib['android:versionName'] = versionName; return this; }; -AndroidManifest.prototype.getVersionCode = function () { +AndroidManifest.prototype.getVersionCode = function() { return this.doc.getroot().attrib['android:versionCode']; }; -AndroidManifest.prototype.setVersionCode = function (versionCode) { +AndroidManifest.prototype.setVersionCode = function(versionCode) { this.doc.getroot().attrib['android:versionCode'] = versionCode; return this; }; -AndroidManifest.prototype.getPackageId = function () { - /* jshint -W069 */ +AndroidManifest.prototype.getPackageId = function() { + /*jshint -W069 */ return this.doc.getroot().attrib['package']; - /* jshint +W069 */ + /*jshint +W069 */ }; -AndroidManifest.prototype.setPackageId = function (pkgId) { - /* jshint -W069 */ +AndroidManifest.prototype.setPackageId = function(pkgId) { + /*jshint -W069 */ this.doc.getroot().attrib['package'] = pkgId; - /* jshint +W069 */ + /*jshint +W069 */ return this; }; -AndroidManifest.prototype.getActivity = function () { +AndroidManifest.prototype.getActivity = function() { var activity = this.doc.getroot().find('./application/activity'); return { getName: function () { @@ -102,16 +102,17 @@ AndroidManifest.prototype.getActivity = function () { }; }; -['minSdkVersion', 'maxSdkVersion', 'targetSdkVersion'].forEach(function (sdkPrefName) { +['minSdkVersion', 'maxSdkVersion', 'targetSdkVersion'] +.forEach(function(sdkPrefName) { // Copy variable reference to avoid closure issues var prefName = sdkPrefName; - AndroidManifest.prototype['get' + capitalize(prefName)] = function () { + AndroidManifest.prototype['get' + capitalize(prefName)] = function() { var usesSdk = this.doc.getroot().find('./uses-sdk'); return usesSdk && usesSdk.attrib['android:' + prefName]; }; - AndroidManifest.prototype['set' + capitalize(prefName)] = function (prefValue) { + AndroidManifest.prototype['set' + capitalize(prefName)] = function(prefValue) { var usesSdk = this.doc.getroot().find('./uses-sdk'); if (!usesSdk && prefValue) { // if there is no required uses-sdk element, we should create it first @@ -127,11 +128,11 @@ AndroidManifest.prototype.getActivity = function () { }; }); -AndroidManifest.prototype.getDebuggable = function () { +AndroidManifest.prototype.getDebuggable = function() { return this.doc.getroot().find('./application').attrib['android:debuggable'] === 'true'; }; -AndroidManifest.prototype.setDebuggable = function (value) { +AndroidManifest.prototype.setDebuggable = function(value) { var application = this.doc.getroot().find('./application'); if (value) { application.attrib['android:debuggable'] = 'true'; @@ -149,7 +150,7 @@ AndroidManifest.prototype.setDebuggable = function (value) { * @param {String} [destPath] File to write manifest to. If omitted, * manifest will be written to file it has been read from. */ -AndroidManifest.prototype.write = function (destPath) { +AndroidManifest.prototype.write = function(destPath) { fs.writeFileSync(destPath || this.path, this.doc.write({indent: 4}), 'utf-8'); }; diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidProject.js b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidProject.js index bf55cad1..fa1c6129 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidProject.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidProject.js @@ -26,15 +26,16 @@ var pluginHandlers = require('./pluginHandlers'); var projectFileCache = {}; -function addToPropertyList (projectProperties, key, value) { +function addToPropertyList(projectProperties, key, value) { var i = 1; - while (projectProperties.get(key + '.' + i)) { i++; } + while (projectProperties.get(key + '.' + i)) + i++; projectProperties.set(key + '.' + i, value); projectProperties.dirty = true; } -function removeFromPropertyList (projectProperties, key, value) { +function removeFromPropertyList(projectProperties, key, value) { var i = 1; var currentValue; while ((currentValue = projectProperties.get(key + '.' + i))) { @@ -53,18 +54,18 @@ function removeFromPropertyList (projectProperties, key, value) { function getRelativeLibraryPath (parentDir, subDir) { var libraryPath = path.relative(parentDir, subDir); - return (path.sep === '\\') ? libraryPath.replace(/\\/g, '/') : libraryPath; + return (path.sep == '\\') ? libraryPath.replace(/\\/g, '/') : libraryPath; } -function AndroidProject (projectDir) { +function AndroidProject(projectDir) { this._propertiesEditors = {}; this._subProjectDirs = {}; this._dirty = false; this.projectDir = projectDir; this.platformWww = path.join(this.projectDir, 'platform_www'); this.www = path.join(this.projectDir, 'assets/www'); - if (AndroidStudio.isAndroidStudioProject(projectDir) === true) { - this.www = path.join(this.projectDir, 'app/src/main/assets/www'); + if(AndroidStudio.isAndroidStudioProject(projectDir) === true) { + this.www = path.join(this.projectDir, 'app/src/main/assets/www'); } } @@ -91,15 +92,15 @@ AndroidProject.purgeCache = function (projectDir) { * * @return {String} The name of the package */ -AndroidProject.prototype.getPackageName = function () { +AndroidProject.prototype.getPackageName = function() { var manifestPath = path.join(this.projectDir, 'AndroidManifest.xml'); - if (AndroidStudio.isAndroidStudioProject(this.projectDir) === true) { - manifestPath = path.join(this.projectDir, 'app/src/main/AndroidManifest.xml'); + if(AndroidStudio.isAndroidStudioProject(this.projectDir) === true) { + manifestPath = path.join(this.projectDir, 'app/src/main/AndroidManifest.xml'); } return new AndroidManifest(manifestPath).getPackageId(); }; -AndroidProject.prototype.getCustomSubprojectRelativeDir = function (plugin_id, src) { +AndroidProject.prototype.getCustomSubprojectRelativeDir = function(plugin_id, src) { // All custom subprojects are prefixed with the last portion of the package id. // This is to avoid collisions when opening multiple projects in Eclipse that have subprojects with the same name. var packageName = this.getPackageName(); @@ -109,7 +110,7 @@ AndroidProject.prototype.getCustomSubprojectRelativeDir = function (plugin_id, s return subRelativeDir; }; -AndroidProject.prototype.addSubProject = function (parentDir, subDir) { +AndroidProject.prototype.addSubProject = function(parentDir, subDir) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var subProjectFile = path.resolve(subDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); @@ -125,7 +126,7 @@ AndroidProject.prototype.addSubProject = function (parentDir, subDir) { this._dirty = true; }; -AndroidProject.prototype.removeSubProject = function (parentDir, subDir) { +AndroidProject.prototype.removeSubProject = function(parentDir, subDir) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); removeFromPropertyList(parentProperties, 'android.library.reference', getRelativeLibraryPath(parentDir, subDir)); @@ -133,35 +134,35 @@ AndroidProject.prototype.removeSubProject = function (parentDir, subDir) { this._dirty = true; }; -AndroidProject.prototype.addGradleReference = function (parentDir, subDir) { +AndroidProject.prototype.addGradleReference = function(parentDir, subDir) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); addToPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir)); this._dirty = true; }; -AndroidProject.prototype.removeGradleReference = function (parentDir, subDir) { +AndroidProject.prototype.removeGradleReference = function(parentDir, subDir) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); removeFromPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir)); this._dirty = true; }; -AndroidProject.prototype.addSystemLibrary = function (parentDir, value) { +AndroidProject.prototype.addSystemLibrary = function(parentDir, value) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); addToPropertyList(parentProperties, 'cordova.system.library', value); this._dirty = true; }; -AndroidProject.prototype.removeSystemLibrary = function (parentDir, value) { +AndroidProject.prototype.removeSystemLibrary = function(parentDir, value) { var parentProjectFile = path.resolve(parentDir, 'project.properties'); var parentProperties = this._getPropertiesFile(parentProjectFile); removeFromPropertyList(parentProperties, 'cordova.system.library', value); this._dirty = true; }; -AndroidProject.prototype.write = function () { +AndroidProject.prototype.write = function() { if (!this._dirty) { return; } @@ -200,9 +201,9 @@ AndroidProject.prototype.getUninstaller = function (type) { * This checks if an Android project is clean or has old build artifacts */ -AndroidProject.prototype.isClean = function () { +AndroidProject.prototype.isClean = function() { var build_path = path.join(this.projectDir, 'build'); - // If the build directory doesn't exist, it's clean + //If the build directory doesn't exist, it's clean return !(fs.existsSync(build_path)); }; diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidStudio.js b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidStudio.js index fbcb926f..335b334b 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/AndroidStudio.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/AndroidStudio.js @@ -4,35 +4,35 @@ * @param {String} root Root folder of the project */ -/* jshint esnext: false */ +/*jshint esnext: false */ var path = require('path'); var fs = require('fs'); var CordovaError = require('cordova-common').CordovaError; -module.exports.isAndroidStudioProject = function isAndroidStudioProject (root) { - var eclipseFiles = ['AndroidManifest.xml', 'libs', 'res']; - var androidStudioFiles = ['app', 'app/src/main']; +module.exports.isAndroidStudioProject = function isAndroidStudioProject(root) { + var eclipseFiles = ['AndroidManifest.xml', 'libs', 'res', 'project.properties', 'platform_www']; + var androidStudioFiles = ['app', 'gradle', 'app/src/main/res']; // assume it is an AS project and not an Eclipse project var isEclipse = false; var isAS = true; - if (!fs.existsSync(root)) { + if(!fs.existsSync(root)) { throw new CordovaError('AndroidStudio.js:inAndroidStudioProject root does not exist: ' + root); } // if any of the following exists, then we are not an ASProj - eclipseFiles.forEach(function (file) { - if (fs.existsSync(path.join(root, file))) { + eclipseFiles.forEach(function(file) { + if(fs.existsSync(path.join(root, file))) { isEclipse = true; } }); // if it is NOT an eclipse project, check that all required files exist - if (!isEclipse) { - androidStudioFiles.forEach(function (file) { - if (!fs.existsSync(path.join(root, file))) { + if(!isEclipse) { + androidStudioFiles.forEach(function(file){ + if(!fs.existsSync(path.join(root, file))) { console.log('missing file :: ' + file); isAS = false; } diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/android_sdk.js b/DynamicBibleIonic/platforms/android/cordova/lib/android_sdk.js index ca8f9e33..a1a806a6 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/android_sdk.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/android_sdk.js @@ -17,8 +17,8 @@ under the License. */ -var Q = require('q'); -var superspawn = require('cordova-common').superspawn; +var Q = require('q'), + superspawn = require('cordova-common').superspawn; var suffix_number_regex = /(\d+)$/; // Used for sorting Android targets, example strings to sort: @@ -29,7 +29,7 @@ var suffix_number_regex = /(\d+)$/; // The idea is to sort based on largest "suffix" number - meaning the bigger // the number at the end, the more recent the target, the closer to the // start of the array. -function sort_by_largest_numerical_suffix (a, b) { +function sort_by_largest_numerical_suffix(a, b) { var suffix_a = a.match(suffix_number_regex); var suffix_b = b.match(suffix_number_regex); if (suffix_a && suffix_b) { @@ -43,8 +43,9 @@ function sort_by_largest_numerical_suffix (a, b) { } } -module.exports.print_newest_available_sdk_target = function () { - return module.exports.list_targets().then(function (targets) { +module.exports.print_newest_available_sdk_target = function() { + return module.exports.list_targets() + .then(function(targets) { targets.sort(sort_by_largest_numerical_suffix); console.log(targets[0]); }); @@ -65,34 +66,38 @@ module.exports.version_string_to_api_level = { '7.1.1': 25 }; -function parse_targets (output) { +function parse_targets(output) { var target_out = output.split('\n'); var targets = []; for (var i = target_out.length - 1; i >= 0; i--) { - if (target_out[i].match(/id:/)) { // if "id:" is in the line... - targets.push(target_out[i].match(/"(.+)"/)[1]); // .. match whatever is in quotes. + if(target_out[i].match(/id:/)) { // if "id:" is in the line... + targets.push(target_out[i].match(/"(.+)"/)[1]); //.. match whatever is in quotes. } } return targets; } -module.exports.list_targets_with_android = function () { - return superspawn.spawn('android', ['list', 'target']).then(parse_targets); +module.exports.list_targets_with_android = function() { + return superspawn.spawn('android', ['list', 'target']) + .then(parse_targets); }; -module.exports.list_targets_with_avdmanager = function () { - return superspawn.spawn('avdmanager', ['list', 'target']).then(parse_targets); +module.exports.list_targets_with_avdmanager = function() { + return superspawn.spawn('avdmanager', ['list', 'target']) + .then(parse_targets); }; -module.exports.list_targets = function () { - return module.exports.list_targets_with_avdmanager().catch(function (err) { +module.exports.list_targets = function() { + return module.exports.list_targets_with_avdmanager() + .catch(function(err) { // If there's an error, like avdmanager could not be found, we can try // as a last resort, to run `android`, in case this is a super old // SDK installation. - if (err && (err.code === 'ENOENT' || (err.stderr && err.stderr.match(/not recognized/)))) { + if (err && (err.code == 'ENOENT' || (err.stderr && err.stderr.match(/not recognized/)))) { return module.exports.list_targets_with_android(); } else throw err; - }).then(function (targets) { + }) + .then(function(targets) { if (targets.length === 0) { return Q.reject(new Error('No android targets (SDKs) installed!')); } diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/build.js b/DynamicBibleIonic/platforms/android/cordova/lib/build.js index e33cfae0..bd613da2 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/build.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/build.js @@ -19,10 +19,10 @@ under the License. */ -var Q = require('q'); -var path = require('path'); -var fs = require('fs'); -var nopt = require('nopt'); +var Q = require('q'), + path = require('path'), + fs = require('fs'), + nopt = require('nopt'); var Adb = require('./Adb'); @@ -31,11 +31,11 @@ var events = require('cordova-common').events; var spawn = require('cordova-common').superspawn.spawn; var CordovaError = require('cordova-common').CordovaError; -function parseOpts (options, resolvedTarget, projectRoot) { +function parseOpts(options, resolvedTarget, projectRoot) { options = options || {}; options.argv = nopt({ gradle: Boolean, - studio: Boolean, + ant: Boolean, prepenv: Boolean, versionCode: String, minSdkVersion: String, @@ -47,28 +47,24 @@ function parseOpts (options, resolvedTarget, projectRoot) { keystoreType: String }, {}, options.argv, 0); - // Android Studio Build method is the default var ret = { buildType: options.release ? 'release' : 'debug', - buildMethod: process.env.ANDROID_BUILD || 'studio', + buildMethod: process.env.ANDROID_BUILD || 'gradle', prepEnv: options.argv.prepenv, arch: resolvedTarget && resolvedTarget.arch, extraArgs: [] }; - if (options.argv.gradle || options.argv.studio) { - ret.buildMethod = options.argv.studio ? 'studio' : 'gradle'; - } - - // This comes from cordova/run - if (options.studio) ret.buildMethod = 'studio'; - if (options.gradle) ret.buildMethod = 'gradle'; + if (options.argv.ant || options.argv.gradle) + ret.buildMethod = options.argv.ant ? 'ant' : 'gradle'; if (options.nobuild) ret.buildMethod = 'none'; - if (options.argv.versionCode) { ret.extraArgs.push('-PcdvVersionCode=' + options.argv.versionCode); } + if (options.argv.versionCode) + ret.extraArgs.push('-PcdvVersionCode=' + options.argv.versionCode); - if (options.argv.minSdkVersion) { ret.extraArgs.push('-PcdvMinSdkVersion=' + options.argv.minSdkVersion); } + if (options.argv.minSdkVersion) + ret.extraArgs.push('-PcdvMinSdkVersion=' + options.argv.minSdkVersion); if (options.argv.gradleArg) { ret.extraArgs = ret.extraArgs.concat(options.argv.gradleArg); @@ -76,10 +72,12 @@ function parseOpts (options, resolvedTarget, projectRoot) { var packageArgs = {}; - if (options.argv.keystore) { packageArgs.keystore = path.relative(projectRoot, path.resolve(options.argv.keystore)); } + if (options.argv.keystore) + packageArgs.keystore = path.relative(projectRoot, path.resolve(options.argv.keystore)); - ['alias', 'storePassword', 'password', 'keystoreType'].forEach(function (flagName) { - if (options.argv[flagName]) { packageArgs[flagName] = options.argv[flagName]; } + ['alias','storePassword','password','keystoreType'].forEach(function (flagName) { + if (options.argv[flagName]) + packageArgs[flagName] = options.argv[flagName]; }); var buildConfig = options.buildConfig; @@ -90,20 +88,20 @@ function parseOpts (options, resolvedTarget, projectRoot) { if (!fs.existsSync(buildConfig)) { throw new Error('Specified build config file does not exist: ' + buildConfig); } - events.emit('log', 'Reading build config file: ' + path.resolve(buildConfig)); + events.emit('log', 'Reading build config file: '+ path.resolve(buildConfig)); var buildjson = fs.readFileSync(buildConfig, 'utf8'); var config = JSON.parse(buildjson.replace(/^\ufeff/, '')); // Remove BOM if (config.android && config.android[ret.buildType]) { var androidInfo = config.android[ret.buildType]; - if (androidInfo.keystore && !packageArgs.keystore) { - if (androidInfo.keystore.substr(0, 1) === '~') { + if(androidInfo.keystore && !packageArgs.keystore) { + if(androidInfo.keystore.substr(0,1) === '~') { androidInfo.keystore = process.env.HOME + androidInfo.keystore.substr(1); } packageArgs.keystore = path.resolve(path.dirname(buildConfig), androidInfo.keystore); events.emit('log', 'Reading the keystore from: ' + packageArgs.keystore); } - ['alias', 'storePassword', 'password', 'keystoreType'].forEach(function (key) { + ['alias', 'storePassword', 'password','keystoreType'].forEach(function (key){ packageArgs[key] = packageArgs[key] || androidInfo[key]; }); } @@ -114,8 +112,8 @@ function parseOpts (options, resolvedTarget, projectRoot) { packageArgs.password, packageArgs.keystoreType); } - if (!ret.packageInfo) { - if (Object.keys(packageArgs).length > 0) { + if(!ret.packageInfo) { + if(Object.keys(packageArgs).length > 0) { events.emit('warn', '\'keystore\' and \'alias\' need to be specified to generate a signed archive.'); } } @@ -127,10 +125,11 @@ function parseOpts (options, resolvedTarget, projectRoot) { * Builds the project with the specifed options * Returns a promise. */ -module.exports.runClean = function (options) { +module.exports.runClean = function(options) { var opts = parseOpts(options, null, this.root); var builder = builders.getBuilder(opts.buildMethod); - return builder.prepEnv(opts).then(function () { + return builder.prepEnv(opts) + .then(function() { return builder.clean(opts); }); }; @@ -147,16 +146,17 @@ module.exports.runClean = function (options) { * @return {Promise} Promise, resolved with built packages * information. */ -module.exports.run = function (options, optResolvedTarget) { +module.exports.run = function(options, optResolvedTarget) { var opts = parseOpts(options, optResolvedTarget, this.root); - console.log(opts.buildMethod); var builder = builders.getBuilder(opts.buildMethod); - return builder.prepEnv(opts).then(function () { + return builder.prepEnv(opts) + .then(function() { if (opts.prepEnv) { events.emit('verbose', 'Build file successfully prepared.'); return; } - return builder.build(opts).then(function () { + return builder.build(opts) + .then(function() { var apkPaths = builder.findOutputApks(opts.buildType, opts.arch); events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t')); return { @@ -172,31 +172,38 @@ module.exports.run = function (options, optResolvedTarget) { * Detects the architecture of a device/emulator * Returns "arm" or "x86". */ -module.exports.detectArchitecture = function (target) { - function helper () { - return Adb.shell(target, 'cat /proc/cpuinfo').then(function (output) { +module.exports.detectArchitecture = function(target) { + function helper() { + return Adb.shell(target, 'cat /proc/cpuinfo') + .then(function(output) { return /intel/i.exec(output) ? 'x86' : 'arm'; }); } // It sometimes happens (at least on OS X), that this command will hang forever. // To fix it, either unplug & replug device, or restart adb server. - return helper().timeout(1000, new CordovaError('Device communication timed out. Try unplugging & replugging the device.')).then(null, function (err) { + return helper() + .timeout(1000, new CordovaError('Device communication timed out. Try unplugging & replugging the device.')) + .then(null, function(err) { if (/timed out/.exec('' + err)) { // adb kill-server doesn't seem to do the trick. // Could probably find a x-platform version of killall, but I'm not actually // sure that this scenario even happens on non-OSX machines. events.emit('verbose', 'adb timed out while detecting device/emulator architecture. Killing adb and trying again.'); - return spawn('killall', ['adb']).then(function () { - return helper().then(null, function () { + return spawn('killall', ['adb']) + .then(function() { + return helper() + .then(null, function() { // The double kill is sadly often necessary, at least on mac. events.emit('warn', 'adb timed out a second time while detecting device/emulator architecture. Killing adb and trying again.'); - return spawn('killall', ['adb']).then(function () { - return helper().then(null, function () { + return spawn('killall', ['adb']) + .then(function() { + return helper() + .then(null, function() { return Q.reject(new CordovaError('adb timed out a third time while detecting device/emulator architecture. Try unplugging & replugging the device.')); }); }); }); - }, function () { + }, function() { // For non-killall OS's. return Q.reject(err); }); @@ -205,10 +212,10 @@ module.exports.detectArchitecture = function (target) { }); }; -module.exports.findBestApkForArchitecture = function (buildResults, arch) { - var paths = buildResults.apkPaths.filter(function (p) { +module.exports.findBestApkForArchitecture = function(buildResults, arch) { + var paths = buildResults.apkPaths.filter(function(p) { var apkName = path.basename(p); - if (buildResults.buildType === 'debug') { + if (buildResults.buildType == 'debug') { return /-debug/.exec(apkName); } return !/-debug/.exec(apkName); @@ -228,7 +235,7 @@ module.exports.findBestApkForArchitecture = function (buildResults, arch) { throw new Error('Could not find apk architecture: ' + arch + ' build-type: ' + buildResults.buildType); }; -function PackageInfo (keystore, alias, storePassword, password, keystoreType) { +function PackageInfo(keystore, alias, storePassword, password, keystoreType) { this.keystore = { 'name': 'key.store', 'value': keystore @@ -258,10 +265,10 @@ function PackageInfo (keystore, alias, storePassword, password, keystoreType) { } PackageInfo.prototype = { - toProperties: function () { + toProperties: function() { var self = this; var result = ''; - Object.keys(self).forEach(function (key) { + Object.keys(self).forEach(function(key) { result += self[key].name; result += '='; result += self[key].value.replace(/\\/g, '\\\\'); @@ -271,7 +278,7 @@ PackageInfo.prototype = { } }; -module.exports.help = function () { +module.exports.help = function() { console.log('Usage: ' + path.relative(process.cwd(), path.join('../build')) + ' [flags] [Signed APK flags]'); console.log('Flags:'); console.log(' \'--debug\': will build project in debug mode (default)'); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/builders/AntBuilder.js b/DynamicBibleIonic/platforms/android/cordova/lib/builders/AntBuilder.js new file mode 100644 index 00000000..4e0f71ab --- /dev/null +++ b/DynamicBibleIonic/platforms/android/cordova/lib/builders/AntBuilder.js @@ -0,0 +1,156 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +var Q = require('q'); +var fs = require('fs'); +var path = require('path'); +var util = require('util'); +var shell = require('shelljs'); +var spawn = require('cordova-common').superspawn.spawn; +var CordovaError = require('cordova-common').CordovaError; +var check_reqs = require('../check_reqs'); + +var SIGNING_PROPERTIES = '-signing.properties'; +var MARKER = 'YOUR CHANGES WILL BE ERASED!'; +var TEMPLATE = + '# This file is automatically generated.\n' + + '# Do not modify this file -- ' + MARKER + '\n'; + +var GenericBuilder = require('./GenericBuilder'); + +function AntBuilder (projectRoot) { + GenericBuilder.call(this, projectRoot); + + this.binDirs = {ant: this.binDirs.ant}; +} + +util.inherits(AntBuilder, GenericBuilder); + +AntBuilder.prototype.getArgs = function(cmd, opts) { + var args = [cmd, '-f', path.join(this.root, 'build.xml')]; + // custom_rules.xml is required for incremental builds. + if (hasCustomRules(this.root)) { + args.push('-Dout.dir=ant-build', '-Dgen.absolute.dir=ant-gen'); + } + if(opts.packageInfo) { + args.push('-propertyfile=' + path.join(this.root, opts.buildType + SIGNING_PROPERTIES)); + } + return args; +}; + +AntBuilder.prototype.prepEnv = function(opts) { + var self = this; + return check_reqs.check_ant() + .then(function() { + // Copy in build.xml on each build so that: + // A) we don't require the Android SDK at project creation time, and + // B) we always use the SDK's latest version of it. + /*jshint -W069 */ + var sdkDir = process.env['ANDROID_HOME']; + /*jshint +W069 */ + var buildTemplate = fs.readFileSync(path.join(sdkDir, 'tools', 'lib', 'build.template'), 'utf8'); + function writeBuildXml(projectPath) { + var newData = buildTemplate.replace('PROJECT_NAME', self.extractRealProjectNameFromManifest()); + fs.writeFileSync(path.join(projectPath, 'build.xml'), newData); + if (!fs.existsSync(path.join(projectPath, 'local.properties'))) { + fs.writeFileSync(path.join(projectPath, 'local.properties'), TEMPLATE); + } + } + writeBuildXml(self.root); + var propertiesObj = self.readProjectProperties(); + var subProjects = propertiesObj.libs; + for (var i = 0; i < subProjects.length; ++i) { + writeBuildXml(path.join(self.root, subProjects[i])); + } + if (propertiesObj.systemLibs.length > 0) { + throw new CordovaError('Project contains at least one plugin that requires a system library. This is not supported with ANT. Use gradle instead.'); + } + + var propertiesFile = opts.buildType + SIGNING_PROPERTIES; + var propertiesFilePath = path.join(self.root, propertiesFile); + if (opts.packageInfo) { + fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties()); + } else if(isAutoGenerated(propertiesFilePath)) { + shell.rm('-f', propertiesFilePath); + } + }); +}; + +/* + * Builds the project with ant. + * Returns a promise. + */ +AntBuilder.prototype.build = function(opts) { + // Without our custom_rules.xml, we need to clean before building. + var ret = Q(); + if (!hasCustomRules(this.root)) { + // clean will call check_ant() for us. + ret = this.clean(opts); + } + + var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts); + return check_reqs.check_ant() + .then(function() { + return spawn('ant', args, {stdio: 'pipe'}); + }).progress(function (stdio){ + if (stdio.stderr) { + process.stderr.write(stdio.stderr); + } else { + process.stdout.write(stdio.stdout); + } + }).catch(function (error) { + if (error.toString().indexOf('Unable to resolve project target') >= 0) { + return check_reqs.check_android_target(error).then(function() { + // If due to some odd reason - check_android_target succeeds + // we should still fail here. + return Q.reject(error); + }); + } + return Q.reject(error); + }); +}; + +AntBuilder.prototype.clean = function(opts) { + var args = this.getArgs('clean', opts); + var self = this; + return check_reqs.check_ant() + .then(function() { + return spawn('ant', args, {stdio: 'inherit'}); + }) + .then(function () { + shell.rm('-rf', path.join(self.root, 'out')); + + ['debug', 'release'].forEach(function(config) { + var propertiesFilePath = path.join(self.root, config + SIGNING_PROPERTIES); + if(isAutoGenerated(propertiesFilePath)){ + shell.rm('-f', propertiesFilePath); + } + }); + }); +}; + +module.exports = AntBuilder; + +function hasCustomRules(projectRoot) { + return fs.existsSync(path.join(projectRoot, 'custom_rules.xml')); +} + +function isAutoGenerated(file) { + return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0; +} diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/builders/GenericBuilder.js b/DynamicBibleIonic/platforms/android/cordova/lib/builders/GenericBuilder.js index 892aa38f..362da431 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/builders/GenericBuilder.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/builders/GenericBuilder.js @@ -16,55 +16,83 @@ specific language governing permissions and limitations under the License. */ -/* eslint no-self-assign: 0 */ -/* eslint no-unused-vars: 0 */ var Q = require('q'); var fs = require('fs'); var path = require('path'); var shell = require('shelljs'); var events = require('cordova-common').events; +var CordovaError = require('cordova-common').CordovaError; function GenericBuilder (projectDir) { this.root = projectDir || path.resolve(__dirname, '../../..'); this.binDirs = { - studio: path.join(this.root, 'app', 'build', 'outputs', 'apk'), + ant: path.join(this.root, hasCustomRules(this.root) ? 'ant-build' : 'bin'), gradle: path.join(this.root, 'build', 'outputs', 'apk') }; } -GenericBuilder.prototype.prepEnv = function () { +function hasCustomRules(projectRoot) { + return fs.existsSync(path.join(projectRoot, 'custom_rules.xml')); +} + +GenericBuilder.prototype.prepEnv = function() { return Q(); }; -GenericBuilder.prototype.build = function () { +GenericBuilder.prototype.build = function() { events.emit('log', 'Skipping build...'); return Q(null); }; -GenericBuilder.prototype.clean = function () { +GenericBuilder.prototype.clean = function() { return Q(); }; -GenericBuilder.prototype.findOutputApks = function (build_type, arch) { +GenericBuilder.prototype.findOutputApks = function(build_type, arch) { var self = this; - return Object.keys(this.binDirs).reduce(function (result, builderName) { + return Object.keys(this.binDirs) + .reduce(function (result, builderName) { var binDir = self.binDirs[builderName]; return result.concat(findOutputApksHelper(binDir, build_type, builderName === 'ant' ? null : arch)); - }, []).sort(apkSorter); + }, []) + .sort(apkSorter); +}; + +GenericBuilder.prototype.readProjectProperties = function () { + function findAllUniq(data, r) { + var s = {}; + var m; + while ((m = r.exec(data))) { + s[m[1]] = 1; + } + return Object.keys(s); + } + + var data = fs.readFileSync(path.join(this.root, 'project.properties'), 'utf8'); + return { + libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg), + gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg), + systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=(.*)(?:\s|$)/mg) + }; +}; + +GenericBuilder.prototype.extractRealProjectNameFromManifest = function () { + var manifestPath = path.join(this.root, 'AndroidManifest.xml'); + var manifestData = fs.readFileSync(manifestPath, 'utf8'); + var m = / 1 && arch) { - ret = ret.filter(function (p) { - return path.basename(p).indexOf('-' + arch) !== -1; + ret = ret.filter(function(p) { + return path.basename(p).indexOf('-' + arch) != -1; }); } diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/builders/GradleBuilder.js b/DynamicBibleIonic/platforms/android/cordova/lib/builders/GradleBuilder.js index 8237c739..5b5ce13d 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/builders/GradleBuilder.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/builders/GradleBuilder.js @@ -22,7 +22,7 @@ var fs = require('fs'); var util = require('util'); var path = require('path'); var shell = require('shelljs'); -var superspawn = require('cordova-common').superspawn; +var spawn = require('cordova-common').superspawn.spawn; var CordovaError = require('cordova-common').CordovaError; var check_reqs = require('../check_reqs'); @@ -37,15 +37,15 @@ var TEMPLATE = function GradleBuilder (projectRoot) { GenericBuilder.call(this, projectRoot); - this.binDirs = { gradle: this.binDirs.gradle }; + this.binDirs = {gradle: this.binDirs.gradle}; } util.inherits(GradleBuilder, GenericBuilder); -GradleBuilder.prototype.getArgs = function (cmd, opts) { - if (cmd === 'release') { +GradleBuilder.prototype.getArgs = function(cmd, opts) { + if (cmd == 'release') { cmd = 'cdvBuildRelease'; - } else if (cmd === 'debug') { + } else if (cmd == 'debug') { cmd = 'cdvBuildDebug'; } var args = [cmd, '-b', path.join(this.root, 'build.gradle')]; @@ -69,89 +69,46 @@ GradleBuilder.prototype.getArgs = function (cmd, opts) { * This returns a promise */ -GradleBuilder.prototype.runGradleWrapper = function (gradle_cmd, gradle_file) { +GradleBuilder.prototype.runGradleWrapper = function(gradle_cmd) { var gradlePath = path.join(this.root, 'gradlew'); - gradle_file = path.join(this.root, (gradle_file || 'wrapper.gradle')); - if (fs.existsSync(gradlePath)) { - // Literally do nothing, for some reason this works, while !fs.existsSync didn't on Windows + var wrapperGradle = path.join(this.root, 'wrapper.gradle'); + if(fs.existsSync(gradlePath)) { + //Literally do nothing, for some reason this works, while !fs.existsSync didn't on Windows } else { - return superspawn.spawn(gradle_cmd, ['-p', this.root, 'wrapper', '-b', gradle_file], { stdio: 'pipe' }) - .progress(function (stdio) { - suppressJavaOptionsInfo(stdio); - }); + return spawn(gradle_cmd, ['-p', this.root, 'wrapper', '-b', wrapperGradle], {stdio: 'inherit'}); } }; -/* - * We need to kill this in a fire. - */ - -GradleBuilder.prototype.readProjectProperties = function () { - function findAllUniq (data, r) { - var s = {}; - var m; - while ((m = r.exec(data))) { - s[m[1]] = 1; - } - return Object.keys(s); - } - - var data = fs.readFileSync(path.join(this.root, 'project.properties'), 'utf8'); - return { - libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg), - gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg), - systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=(.*)(?:\s|$)/mg) - }; -}; - -GradleBuilder.prototype.extractRealProjectNameFromManifest = function () { - var manifestPath = path.join(this.root, 'AndroidManifest.xml'); - var manifestData = fs.readFileSync(manifestPath, 'utf8'); - var m = /= 0) { - return check_reqs.check_android_target(error).then(function () { - // If due to some odd reason - check_android_target succeeds - // we should still fail here. - return Q.reject(error); - }); + return spawn(wrapper, args, {stdio: 'pipe'}) + .progress(function (stdio){ + if (stdio.stderr) { + /* + * Workaround for the issue with Java printing some unwanted information to + * stderr instead of stdout. + * This function suppresses 'Picked up _JAVA_OPTIONS' message from being + * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for + * explanation. + */ + var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString()); + if (suppressThisLine) { + return; } - return Q.reject(error); - }); + process.stderr.write(stdio.stderr); + } else { + process.stdout.write(stdio.stdout); + } + }).catch(function (error) { + if (error.toString().indexOf('failed to find target with hash string') >= 0) { + return check_reqs.check_android_target(error).then(function() { + // If due to some odd reason - check_android_target succeeds + // we should still fail here. + return Q.reject(error); + }); + } + return Q.reject(error); + }); }; -GradleBuilder.prototype.clean = function (opts) { +GradleBuilder.prototype.clean = function(opts) { var builder = this; var wrapper = path.join(this.root, 'gradlew'); var args = builder.getArgs('clean', opts); - return Q().then(function () { - return superspawn.spawn(wrapper, args, { stdio: 'inherit' }); - }).then(function () { + return Q().then(function() { + return spawn(wrapper, args, {stdio: 'inherit'}); + }) + .then(function () { shell.rm('-rf', path.join(builder.root, 'out')); - ['debug', 'release'].forEach(function (config) { + ['debug', 'release'].forEach(function(config) { var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES); - if (isAutoGenerated(propertiesFilePath)) { + if(isAutoGenerated(propertiesFilePath)){ shell.rm('-f', propertiesFilePath); } }); @@ -306,25 +274,6 @@ GradleBuilder.prototype.clean = function (opts) { module.exports = GradleBuilder; -function suppressJavaOptionsInfo (stdio) { - if (stdio.stderr) { - /* - * Workaround for the issue with Java printing some unwanted information to - * stderr instead of stdout. - * This function suppresses 'Picked up _JAVA_OPTIONS' message from being - * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for - * explanation. - */ - var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString()); - if (suppressThisLine) { - return; - } - process.stderr.write(stdio.stderr); - } else { - process.stdout.write(stdio.stdout); - } -} - -function isAutoGenerated (file) { +function isAutoGenerated(file) { return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0; } diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/builders/StudioBuilder.js b/DynamicBibleIonic/platforms/android/cordova/lib/builders/StudioBuilder.js deleted file mode 100644 index 38923e14..00000000 --- a/DynamicBibleIonic/platforms/android/cordova/lib/builders/StudioBuilder.js +++ /dev/null @@ -1,302 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ - -var Q = require('q'); -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var shell = require('shelljs'); -var spawn = require('cordova-common').superspawn.spawn; -var CordovaError = require('cordova-common').CordovaError; -var check_reqs = require('../check_reqs'); - -var GenericBuilder = require('./GenericBuilder'); - -var MARKER = 'YOUR CHANGES WILL BE ERASED!'; -var SIGNING_PROPERTIES = '-signing.properties'; -var TEMPLATE = - '# This file is automatically generated.\n' + - '# Do not modify this file -- ' + MARKER + '\n'; - -function StudioBuilder (projectRoot) { - GenericBuilder.call(this, projectRoot); - - this.binDirs = {gradle: this.binDirs.studio}; -} - -util.inherits(StudioBuilder, GenericBuilder); - -StudioBuilder.prototype.getArgs = function (cmd, opts) { - if (cmd === 'release') { - cmd = 'cdvBuildRelease'; - } else if (cmd === 'debug') { - cmd = 'cdvBuildDebug'; - } - var args = [cmd, '-b', path.join(this.root, 'build.gradle')]; - if (opts.arch) { - args.push('-PcdvBuildArch=' + opts.arch); - } - - // 10 seconds -> 6 seconds - args.push('-Dorg.gradle.daemon=true'); - // to allow dex in process - args.push('-Dorg.gradle.jvmargs=-Xmx2048m'); - // allow NDK to be used - required by Gradle 1.5 plugin - args.push('-Pandroid.useDeprecatedNdk=true'); - args.push.apply(args, opts.extraArgs); - // Shaves another 100ms, but produces a "try at own risk" warning. Not worth it (yet): - // args.push('-Dorg.gradle.parallel=true'); - return args; -}; - -/* - * This returns a promise - */ - -StudioBuilder.prototype.runGradleWrapper = function (gradle_cmd) { - var gradlePath = path.join(this.root, 'gradlew'); - var wrapperGradle = path.join(this.root, 'wrapper.gradle'); - if (fs.existsSync(gradlePath)) { - // Literally do nothing, for some reason this works, while !fs.existsSync didn't on Windows - } else { - return spawn(gradle_cmd, ['-p', this.root, 'wrapper', '-b', wrapperGradle], {stdio: 'inherit'}); - } -}; - -StudioBuilder.prototype.readProjectProperties = function () { - - function findAllUniq (data, r) { - var s = {}; - var m; - while ((m = r.exec(data))) { - s[m[1]] = 1; - } - return Object.keys(s); - } - - var data = fs.readFileSync(path.join(this.root, 'project.properties'), 'utf8'); - return { - libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg), - gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg), - systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=(.*)(?:\s|$)/mg) - }; -}; - -StudioBuilder.prototype.extractRealProjectNameFromManifest = function () { - var manifestPath = path.join(this.root, 'app', 'src', 'main', 'AndroidManifest.xml'); - var manifestData = fs.readFileSync(manifestPath, 'utf8'); - var m = /= 0) { - return check_reqs.check_android_target(error).then(function () { - // If due to some odd reason - check_android_target succeeds - // we should still fail here. - return Q.reject(error); - }); - } - return Q.reject(error); - }); -}; - -StudioBuilder.prototype.clean = function (opts) { - var builder = this; - var wrapper = path.join(this.root, 'gradlew'); - var args = builder.getArgs('clean', opts); - return Q().then(function () { - return spawn(wrapper, args, {stdio: 'inherit'}); - }) - .then(function () { - shell.rm('-rf', path.join(builder.root, 'out')); - - ['debug', 'release'].forEach(function (config) { - var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES); - if (isAutoGenerated(propertiesFilePath)) { - shell.rm('-f', propertiesFilePath); - } - }); - }); -}; - -module.exports = StudioBuilder; - -function isAutoGenerated (file) { - return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0; -} diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/builders/builders.js b/DynamicBibleIonic/platforms/android/cordova/lib/builders/builders.js index aedf9be5..4921c49a 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/builders/builders.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/builders/builders.js @@ -20,8 +20,8 @@ var CordovaError = require('cordova-common').CordovaError; var knownBuilders = { + ant: 'AntBuilder', gradle: 'GradleBuilder', - studio: 'StudioBuilder', none: 'GenericBuilder' }; @@ -35,7 +35,8 @@ var knownBuilders = { * @return {Builder} A builder instance for specified build type. */ module.exports.getBuilder = function (builderType, projectRoot) { - if (!knownBuilders[builderType]) { throw new CordovaError('Builder ' + builderType + ' is not supported.'); } + if (!knownBuilders[builderType]) + throw new CordovaError('Builder ' + builderType + ' is not supported.'); try { var Builder = require('./' + knownBuilders[builderType]); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/check_reqs.js b/DynamicBibleIonic/platforms/android/cordova/lib/check_reqs.js index 4a223604..1fd397ad 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/check_reqs.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/check_reqs.js @@ -21,19 +21,19 @@ /* jshint sub:true */ -var shelljs = require('shelljs'); -var child_process = require('child_process'); -var Q = require('q'); -var path = require('path'); -var fs = require('fs'); -var os = require('os'); -var REPO_ROOT = path.join(__dirname, '..', '..', '..', '..'); -var PROJECT_ROOT = path.join(__dirname, '..', '..'); +var shelljs = require('shelljs'), + child_process = require('child_process'), + Q = require('q'), + path = require('path'), + fs = require('fs'), + os = require('os'), + REPO_ROOT = path.join(__dirname, '..', '..', '..', '..'), + PROJECT_ROOT = path.join(__dirname, '..', '..'); var CordovaError = require('cordova-common').CordovaError; var superspawn = require('cordova-common').superspawn; var android_sdk = require('./android_sdk'); -function forgivingWhichSync (cmd) { +function forgivingWhichSync(cmd) { try { return fs.realpathSync(shelljs.which(cmd)); } catch (e) { @@ -41,9 +41,9 @@ function forgivingWhichSync (cmd) { } } -function tryCommand (cmd, errMsg, catchStderr) { +function tryCommand(cmd, errMsg, catchStderr) { var d = Q.defer(); - child_process.exec(cmd, function (err, stdout, stderr) { + child_process.exec(cmd, function(err, stdout, stderr) { if (err) d.reject(new CordovaError(errMsg)); // Sometimes it is necessary to return an stderr instead of stdout in case of success, since // some commands prints theirs output to stderr instead of stdout. 'javac' is the example @@ -52,18 +52,18 @@ function tryCommand (cmd, errMsg, catchStderr) { return d.promise; } -module.exports.isWindows = function () { - return (os.platform() === 'win32'); +module.exports.isWindows = function() { + return (os.platform() == 'win32'); }; -module.exports.isDarwin = function () { - return (os.platform() === 'darwin'); +module.exports.isDarwin = function() { + return (os.platform() == 'darwin'); }; // Get valid target from framework/project.properties if run from this repo // Otherwise get target from project.properties file within a generated cordova-android project -module.exports.get_target = function () { - function extractFromFile (filePath) { +module.exports.get_target = function() { + function extractFromFile(filePath) { var target = shelljs.grep(/\btarget=/, filePath); if (!target) { throw new Error('Could not find android target within: ' + filePath); @@ -83,82 +83,77 @@ module.exports.get_target = function () { }; // Returns a promise. Called only by build and clean commands. -module.exports.check_ant = function () { - return superspawn.spawn('ant', ['-version']).then(function (output) { +module.exports.check_ant = function() { + return superspawn.spawn('ant', ['-version']) + .then(function(output) { // Parse Ant version from command output return /version ((?:\d+\.)+(?:\d+))/i.exec(output)[1]; - }).catch(function (err) { - if (err) { - throw new CordovaError('Failed to run `ant -version`. Make sure you have `ant` on your $PATH.'); - } + }).catch(function(err) { + throw new CordovaError('Failed to run `ant -version`. Make sure you have `ant` on your $PATH.'); }); }; -module.exports.get_gradle_wrapper = function () { +module.exports.get_gradle_wrapper = function() { var androidStudioPath; var i = 0; var foundStudio = false; var program_dir; - // OK, This hack only works on Windows, not on Mac OS or Linux. We will be deleting this eventually! - if (module.exports.isWindows()) { - - var result = child_process.spawnSync(path.join(__dirname, 'getASPath.bat')); - // console.log('result.stdout =' + result.stdout.toString()); - // console.log('result.stderr =' + result.stderr.toString()); - - if (result.stderr.toString().length > 0) { - var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/'; - if (fs.existsSync(androidPath)) { - program_dir = fs.readdirSync(androidPath); - while (i < program_dir.length && !foundStudio) { - if (program_dir[i].startsWith('Android Studio')) { - foundStudio = true; - androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle'); - } else { ++i; } - } + if (module.exports.isDarwin()) { + program_dir = fs.readdirSync('/Applications'); + while (i < program_dir.length && !foundStudio) { + if (program_dir[i].startsWith('Android Studio')) { + //TODO: Check for a specific Android Studio version, make sure it's not Canary + androidStudioPath = path.join('/Applications', program_dir[i], 'Contents', 'gradle'); + foundStudio = true; + } else { ++i; } + } + } else if (module.exports.isWindows()) { + var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/'; + if (fs.existsSync(androidPath)) { + program_dir = fs.readdirSync(androidPath); + while (i < program_dir.length && !foundStudio) { + if (program_dir[i].startsWith('Android Studio')) { + foundStudio = true; + androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle'); + } else { ++i; } } - } else { - // console.log('got android studio path from registry'); - // remove the (os independent) new line char at the end of stdout - // add gradle to match the above. - androidStudioPath = path.join(result.stdout.toString().split('\r\n')[0], 'gradle'); } } if (androidStudioPath !== null && fs.existsSync(androidStudioPath)) { var dirs = fs.readdirSync(androidStudioPath); - if (dirs[0].split('-')[0] === 'gradle') { + if(dirs[0].split('-')[0] == 'gradle') { return path.join(androidStudioPath, dirs[0], 'bin', 'gradle'); } } else { - // OK, let's try to check for Gradle! + //OK, let's try to check for Gradle! return forgivingWhichSync('gradle'); } }; // Returns a promise. Called only by build and clean commands. -module.exports.check_gradle = function () { +module.exports.check_gradle = function() { var sdkDir = process.env['ANDROID_HOME']; var d = Q.defer(); - if (!sdkDir) { + if (!sdkDir) return Q.reject(new CordovaError('Could not find gradle wrapper within Android SDK. Could not find Android SDK directory.\n' + 'Might need to install Android SDK or set up \'ANDROID_HOME\' env variable.')); - } var gradlePath = module.exports.get_gradle_wrapper(); - if (gradlePath.length !== 0) { d.resolve(gradlePath); } else { + if (gradlePath.length !== 0) + d.resolve(gradlePath); + else d.reject(new CordovaError('Could not find an installed version of Gradle either in Android Studio,\n' + 'or on your system to install the gradle wrapper. Please include gradle \n' + 'in your path, or install Android Studio')); - } return d.promise; }; // Returns a promise. -module.exports.check_java = function () { +module.exports.check_java = function() { var javacPath = forgivingWhichSync('javac'); var hasJavaHome = !!process.env['JAVA_HOME']; - return Q().then(function () { + return Q().then(function() { if (hasJavaHome) { // Windows java installer doesn't add javac to PATH, nor set JAVA_HOME (ugh). if (!javacPath) { @@ -168,14 +163,13 @@ module.exports.check_java = function () { if (javacPath) { // OS X has a command for finding JAVA_HOME. var find_java = '/usr/libexec/java_home'; - var default_java_error_msg = 'Failed to find \'JAVA_HOME\' environment variable. Try setting it manually.'; + var default_java_error_msg = 'Failed to find \'JAVA_HOME\' environment variable. Try setting setting it manually.'; if (fs.existsSync(find_java)) { - return superspawn.spawn(find_java).then(function (stdout) { + return superspawn.spawn(find_java) + .then(function(stdout) { process.env['JAVA_HOME'] = stdout.trim(); - }).catch(function (err) { - if (err) { - throw new CordovaError(default_java_error_msg); - } + }).catch(function(err) { + throw new CordovaError(default_java_error_msg); }); } else { // See if we can derive it from javac's location. @@ -206,7 +200,7 @@ module.exports.check_java = function () { } } } - }).then(function () { + }).then(function() { var msg = 'Failed to run "javac -version", make sure that you have a JDK installed.\n' + 'You can get it from: http://www.oracle.com/technetwork/java/javase/downloads.\n'; @@ -215,8 +209,9 @@ module.exports.check_java = function () { } // We use tryCommand with catchStderr = true, because // javac writes version info to stderr instead of stdout - return tryCommand('javac -version', msg, true).then(function (output) { - // Let's check for at least Java 8, and keep it future proof so we can support Java 10 + return tryCommand('javac -version', msg, true) + .then(function (output) { + //Let's check for at least Java 8, and keep it future proof so we can support Java 10 var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output); return match && match[1]; }); @@ -224,13 +219,13 @@ module.exports.check_java = function () { }; // Returns a promise. -module.exports.check_android = function () { - return Q().then(function () { +module.exports.check_android = function() { + return Q().then(function() { var androidCmdPath = forgivingWhichSync('android'); var adbInPath = forgivingWhichSync('adb'); var avdmanagerInPath = forgivingWhichSync('avdmanager'); var hasAndroidHome = !!process.env['ANDROID_HOME'] && fs.existsSync(process.env['ANDROID_HOME']); - function maybeSetAndroidHome (value) { + function maybeSetAndroidHome(value) { if (!hasAndroidHome && fs.existsSync(value)) { hasAndroidHome = true; process.env['ANDROID_HOME'] = value; @@ -270,10 +265,10 @@ module.exports.check_android = function () { if (androidCmdPath) { parentDir = path.dirname(androidCmdPath); grandParentDir = path.dirname(parentDir); - if (path.basename(parentDir) === 'tools' || fs.existsSync(path.join(grandParentDir, 'tools', 'android'))) { + if (path.basename(parentDir) == 'tools' || fs.existsSync(path.join(grandParentDir, 'tools', 'android'))) { maybeSetAndroidHome(grandParentDir); } else { - throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting it manually.\n' + + throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' + 'Detected \'android\' command at ' + parentDir + ' but no \'tools\' directory found near.\n' + 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'tools directory.'); } @@ -281,10 +276,10 @@ module.exports.check_android = function () { if (adbInPath) { parentDir = path.dirname(adbInPath); grandParentDir = path.dirname(parentDir); - if (path.basename(parentDir) === 'platform-tools') { + if (path.basename(parentDir) == 'platform-tools') { maybeSetAndroidHome(grandParentDir); } else { - throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting it manually.\n' + + throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' + 'Detected \'adb\' command at ' + parentDir + ' but no \'platform-tools\' directory found near.\n' + 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'platform-tools directory.'); } @@ -292,17 +287,17 @@ module.exports.check_android = function () { if (avdmanagerInPath) { parentDir = path.dirname(avdmanagerInPath); grandParentDir = path.dirname(parentDir); - if (path.basename(parentDir) === 'bin' && path.basename(grandParentDir) === 'tools') { + if (path.basename(parentDir) == 'bin' && path.basename(grandParentDir) == 'tools') { maybeSetAndroidHome(path.dirname(grandParentDir)); } else { - throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting it manually.\n' + + throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' + 'Detected \'avdmanager\' command at ' + parentDir + ' but no \'tools' + path.sep + 'bin\' directory found near.\n' + 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'tools' + path.sep + 'bin directory.'); } } } if (!process.env['ANDROID_HOME']) { - throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting it manually.\n' + + throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' + 'Failed to find \'android\' command in your \'PATH\'. Try update your \'PATH\' to include path to valid SDK directory.'); } if (!fs.existsSync(process.env['ANDROID_HOME'])) { @@ -335,19 +330,20 @@ module.exports.getAbsoluteAndroidCmd = function () { return cmd.replace(/(\s)/g, '\\$1'); }; -module.exports.check_android_target = function (originalError) { +module.exports.check_android_target = function(originalError) { // valid_target can look like: // android-19 // android-L // Google Inc.:Google APIs:20 // Google Inc.:Glass Development Kit Preview:20 var desired_api_level = module.exports.get_target(); - return android_sdk.list_targets().then(function (targets) { + return android_sdk.list_targets() + .then(function(targets) { if (targets.indexOf(desired_api_level) >= 0) { return targets; } var androidCmd = module.exports.getAbsoluteAndroidCmd(); - var msg = 'Please install Android target / API level: "' + desired_api_level + '".\n\n' + + var msg = 'Please install Android target / API level: "' + desired_api_level + '".\n\n' + 'Hint: Open the SDK manager by running: ' + androidCmd + '\n' + 'You will require:\n' + '1. "SDK Platform" for API level ' + desired_api_level + '\n' + @@ -361,21 +357,23 @@ module.exports.check_android_target = function (originalError) { }; // Returns a promise. -module.exports.run = function () { - return Q.all([this.check_java(), this.check_android()]).then(function (values) { - console.log('ANDROID_HOME=' + process.env['ANDROID_HOME']); - console.log('JAVA_HOME=' + process.env['JAVA_HOME']); +module.exports.run = function() { + return Q.all([this.check_java(), this.check_android()]) + .then(function(values) { + console.log('ANDROID_HOME=' + process.env['ANDROID_HOME']); + console.log('JAVA_HOME=' + process.env['JAVA_HOME']); - if (!values[0]) { + if (!values[0]) { throw new CordovaError('Requirements check failed for JDK 1.8 or greater'); - } + } - if (!values[1]) { + if (!values[1]) { throw new CordovaError('Requirements check failed for Android SDK'); - } - }); + } + }); }; + /** * Object thar represents one of requirements for current platform. * @param {String} id The unique identifier for this requirements. @@ -389,7 +387,7 @@ var Requirement = function (id, name, version, installed) { this.name = name; this.installed = installed || false; this.metadata = { - version: version + version: version, }; }; @@ -399,7 +397,7 @@ var Requirement = function (id, name, version, installed) { * * @return Promise Array of requirements. Due to implementation, promise is always fulfilled. */ -module.exports.check_all = function () { +module.exports.check_all = function() { var requirements = [ new Requirement('java', 'Java JDK'), @@ -419,13 +417,15 @@ module.exports.check_all = function () { return checkFns.reduce(function (promise, checkFn, idx) { // Update each requirement with results var requirement = requirements[idx]; - return promise.then(checkFn).then(function (version) { + return promise.then(checkFn) + .then(function (version) { requirement.installed = true; requirement.metadata.version = version; }, function (err) { requirement.metadata.reason = err instanceof Error ? err.message : err; }); - }, Q()).then(function () { + }, Q()) + .then(function () { // When chain is completed, return requirements array to upstream API return requirements; }); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/device.js b/DynamicBibleIonic/platforms/android/cordova/lib/device.js index 84b50947..4b171db6 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/device.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/device.js @@ -19,8 +19,8 @@ under the License. */ -var Q = require('q'); -var build = require('./build'); +var Q = require('q'), + build = require('./build'); var path = require('path'); var Adb = require('./Adb'); var AndroidManifest = require('./AndroidManifest'); @@ -32,16 +32,18 @@ var events = require('cordova-common').events; * Returns a promise for the list of the device ID's found * @param lookHarder When true, try restarting adb if no devices are found. */ -module.exports.list = function (lookHarder) { - return Adb.devices().then(function (list) { +module.exports.list = function(lookHarder) { + return Adb.devices() + .then(function(list) { if (list.length === 0 && lookHarder) { // adb kill-server doesn't seem to do the trick. // Could probably find a x-platform version of killall, but I'm not actually // sure that this scenario even happens on non-OSX machines. - return spawn('killall', ['adb']).then(function () { + return spawn('killall', ['adb']) + .then(function() { events.emit('verbose', 'Restarting adb to see if more devices are detected.'); return Adb.devices(); - }, function () { + }, function() { // For non-killall OS's. return list; }); @@ -50,8 +52,9 @@ module.exports.list = function (lookHarder) { }); }; -module.exports.resolveTarget = function (target) { - return this.list(true).then(function (device_list) { +module.exports.resolveTarget = function(target) { + return this.list(true) + .then(function(device_list) { if (!device_list || !device_list.length) { return Q.reject(new CordovaError('Failed to deploy to device, no devices found.')); } @@ -62,7 +65,8 @@ module.exports.resolveTarget = function (target) { return Q.reject('ERROR: Unable to find target \'' + target + '\'.'); } - return build.detectArchitecture(target).then(function (arch) { + return build.detectArchitecture(target) + .then(function(arch) { return { target: target, arch: arch, isEmulator: false }; }); }); @@ -73,39 +77,43 @@ module.exports.resolveTarget = function (target) { * and launches it. * Returns a promise. */ -module.exports.install = function (target, buildResults) { - return Q().then(function () { - if (target && typeof target === 'object') { +module.exports.install = function(target, buildResults) { + return Q().then(function() { + if (target && typeof target == 'object') { return target; } return module.exports.resolveTarget(target); - }).then(function (resolvedTarget) { + }).then(function(resolvedTarget) { var apk_path = build.findBestApkForArchitecture(buildResults, resolvedTarget.arch); - var manifest = new AndroidManifest(path.join(__dirname, '../../app/src/main/AndroidManifest.xml')); + var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml')); var pkgName = manifest.getPackageId(); var launchName = pkgName + '/.' + manifest.getActivity().getName(); events.emit('log', 'Using apk: ' + apk_path); events.emit('log', 'Package name: ' + pkgName); - return Adb.install(resolvedTarget.target, apk_path, {replace: true}).catch(function (error) { + return Adb.install(resolvedTarget.target, apk_path, {replace: true}) + .catch(function (error) { // CB-9557 CB-10157 only uninstall and reinstall app if the one that // is already installed on device was signed w/different certificate - if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString())) { throw error; } + if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString())) + throw error; events.emit('warn', 'Uninstalling app from device and reinstalling it again because the ' + 'installed app already signed with different key'); // This promise is always resolved, even if 'adb uninstall' fails to uninstall app // or the app doesn't installed at all, so no error catching needed. - return Adb.uninstall(resolvedTarget.target, pkgName).then(function () { + return Adb.uninstall(resolvedTarget.target, pkgName) + .then(function() { return Adb.install(resolvedTarget.target, apk_path, {replace: true}); }); - }).then(function () { - // unlock screen + }) + .then(function() { + //unlock screen return Adb.shell(resolvedTarget.target, 'input keyevent 82'); - }).then(function () { + }).then(function() { return Adb.start(resolvedTarget.target, launchName); - }).then(function () { + }).then(function() { events.emit('log', 'LAUNCH SUCCESS'); }); }); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/emulator.js b/DynamicBibleIonic/platforms/android/cordova/lib/emulator.js index 0a23084e..22209aa0 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/emulator.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/emulator.js @@ -21,9 +21,8 @@ /* jshint sub:true */ -var android_versions = require('android-versions'); -var retry = require('./retry'); -var build = require('./build'); +var retry = require('./retry'); +var build = require('./build'); var path = require('path'); var Adb = require('./Adb'); var AndroidManifest = require('./AndroidManifest'); @@ -34,20 +33,20 @@ var shelljs = require('shelljs'); var android_sdk = require('./android_sdk'); var check_reqs = require('./check_reqs'); -var Q = require('q'); -var os = require('os'); -var fs = require('fs'); +var Q = require('q'); +var os = require('os'); +var fs = require('fs'); var child_process = require('child_process'); // constants -var ONE_SECOND = 1000; // in milliseconds -var ONE_MINUTE = 60 * ONE_SECOND; // in milliseconds +var ONE_SECOND = 1000; // in milliseconds +var ONE_MINUTE = 60 * ONE_SECOND; // in milliseconds var INSTALL_COMMAND_TIMEOUT = 5 * ONE_MINUTE; // in milliseconds -var NUM_INSTALL_RETRIES = 3; -var CHECK_BOOTED_INTERVAL = 3 * ONE_SECOND; // in milliseconds -var EXEC_KILL_SIGNAL = 'SIGKILL'; +var NUM_INSTALL_RETRIES = 3; +var CHECK_BOOTED_INTERVAL = 3 * ONE_SECOND; // in milliseconds +var EXEC_KILL_SIGNAL = 'SIGKILL'; -function forgivingWhichSync (cmd) { +function forgivingWhichSync(cmd) { try { return fs.realpathSync(shelljs.which(cmd)); } catch (e) { @@ -56,7 +55,8 @@ function forgivingWhichSync (cmd) { } module.exports.list_images_using_avdmanager = function () { - return superspawn.spawn('avdmanager', ['list', 'avd']).then(function (output) { + return superspawn.spawn('avdmanager', ['list', 'avd']) + .then(function(output) { var response = output.split('\n'); var emulator_list = []; for (var i = 1; i < response.length; i++) { @@ -108,15 +108,16 @@ module.exports.list_images_using_avdmanager = function () { /* To just return a list of names use this if (response[i].match(/Name:\s/)) { emulator_list.push(response[i].split('Name: ')[1].replace('\r', ''); - } */ + }*/ } return emulator_list; }); }; -module.exports.list_images_using_android = function () { - return superspawn.spawn('android', ['list', 'avd']).then(function (output) { +module.exports.list_images_using_android = function() { + return superspawn.spawn('android', ['list', 'avd']) + .then(function(output) { var response = output.split('\n'); var emulator_list = []; for (var i = 1; i < response.length; i++) { @@ -151,7 +152,7 @@ module.exports.list_images_using_android = function () { /* To just return a list of names use this if (response[i].match(/Name:\s/)) { emulator_list.push(response[i].split('Name: ')[1].replace('\r', ''); - } */ + }*/ } return emulator_list; @@ -169,30 +170,16 @@ module.exports.list_images_using_android = function () { skin : } */ -module.exports.list_images = function () { - return Q.fcall(function () { - if (forgivingWhichSync('avdmanager')) { - return module.exports.list_images_using_avdmanager(); - } else if (forgivingWhichSync('android')) { - return module.exports.list_images_using_android(); - } else { - return Q().then(function () { - throw new CordovaError('Could not find either `android` or `avdmanager` on your $PATH! Are you sure the Android SDK is installed and available?'); - }); - } - }).then(function (avds) { - // In case we're missing the Android OS version string from the target description, add it. - return avds.map(function (avd) { - if (avd.target && avd.target.indexOf('Android API') > -1 && avd.target.indexOf('API level') < 0) { - var api_level = avd.target.match(/\d+/); - if (api_level) { - var level = android_versions.get(api_level); - avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')'; - } - } - return avd; +module.exports.list_images = function() { + if (forgivingWhichSync('avdmanager')) { + return module.exports.list_images_using_avdmanager(); + } else if (forgivingWhichSync('android')) { + return module.exports.list_images_using_android(); + } else { + return Q().then(function() { + throw new CordovaError('Could not find either `android` or `avdmanager` on your $PATH! Are you sure the Android SDK is installed and available?'); }); - }); + } }; /** @@ -200,19 +187,20 @@ module.exports.list_images = function () { * or undefined if no avds exist. * Returns a promise. */ -module.exports.best_image = function () { - return this.list_images().then(function (images) { +module.exports.best_image = function() { + return this.list_images() + .then(function(images) { // Just return undefined if there is no images if (images.length === 0) return; var closest = 9999; var best = images[0]; - var project_target = parseInt(check_reqs.get_target().replace('android-', '')); + var project_target = check_reqs.get_target().replace('android-', ''); for (var i in images) { var target = images[i].target; - if (target && target.indexOf('API level') > -1) { - var num = parseInt(target.split('(API level ')[1].replace(')', '')); - if (num === project_target) { + if(target) { + var num = target.split('(API level ')[1].replace(')', ''); + if (num == project_target) { return images[i]; } else if (project_target - num < closest && project_target > num) { closest = project_target - num; @@ -225,18 +213,19 @@ module.exports.best_image = function () { }; // Returns a promise. -module.exports.list_started = function () { +module.exports.list_started = function() { return Adb.devices({emulators: true}); }; // Returns a promise. // TODO: we should remove this, there's a more robust method under android_sdk.js -module.exports.list_targets = function () { - return superspawn.spawn('android', ['list', 'targets'], {cwd: os.tmpdir()}).then(function (output) { +module.exports.list_targets = function() { + return superspawn.spawn('android', ['list', 'targets'], {cwd: os.tmpdir()}) + .then(function(output) { var target_out = output.split('\n'); var targets = []; for (var i = target_out.length; i >= 0; i--) { - if (target_out[i].match(/id:/)) { + if(target_out[i].match(/id:/)) { targets.push(targets[i].split(' ')[1]); } } @@ -251,8 +240,9 @@ module.exports.list_targets = function () { module.exports.get_available_port = function () { var self = this; - return self.list_started().then(function (emulators) { - for (var p = 5584; p >= 5554; p -= 2) { + return self.list_started() + .then(function (emulators) { + for (var p = 5584; p >= 5554; p-=2) { if (emulators.indexOf('emulator-' + p) === -1) { events.emit('verbose', 'Found available port: ' + p); return p; @@ -272,13 +262,14 @@ module.exports.get_available_port = function () { * * Returns a promise. */ -module.exports.start = function (emulator_ID, boot_timeout) { +module.exports.start = function(emulator_ID, boot_timeout) { var self = this; - return Q().then(function () { + return Q().then(function() { if (emulator_ID) return Q(emulator_ID); - return self.best_image().then(function (best) { + return self.best_image() + .then(function(best) { if (best && best.name) { events.emit('warn', 'No emulator specified, defaulting to ' + best.name); return best.name; @@ -290,8 +281,9 @@ module.exports.start = function (emulator_ID, boot_timeout) { '2. Create an AVD by running: ' + androidCmd + ' avd\n' + 'HINT: For a faster emulator, use an Intel System Image and install the HAXM device driver\n')); }); - }).then(function (emulatorId) { - return self.get_available_port().then(function (port) { + }).then(function(emulatorId) { + return self.get_available_port() + .then(function (port) { // Figure out the directory the emulator binary runs in, and set the cwd to that directory. // Workaround for https://code.google.com/p/android/issues/detail?id=235461 var emulator_dir = path.dirname(shelljs.which('emulator')); @@ -305,17 +297,20 @@ module.exports.start = function (emulator_ID, boot_timeout) { events.emit('log', 'Waiting for emulator to start...'); return self.wait_for_emulator(port); }); - }).then(function (emulatorId) { - if (!emulatorId) { return Q.reject(new CordovaError('Failed to start emulator')); } + }).then(function(emulatorId) { + if (!emulatorId) + return Q.reject(new CordovaError('Failed to start emulator')); - // wait for emulator to boot up + //wait for emulator to boot up process.stdout.write('Waiting for emulator to boot (this may take a while)...'); - return self.wait_for_boot(emulatorId, boot_timeout).then(function (success) { + return self.wait_for_boot(emulatorId, boot_timeout) + .then(function(success) { if (success) { - events.emit('log', 'BOOT COMPLETE'); - // unlock screen - return Adb.shell(emulatorId, 'input keyevent 82').then(function () { - // return the new emulator id for the started emulators + events.emit('log','BOOT COMPLETE'); + //unlock screen + return Adb.shell(emulatorId, 'input keyevent 82') + .then(function() { + //return the new emulator id for the started emulators return emulatorId; }); } else { @@ -330,19 +325,20 @@ module.exports.start = function (emulator_ID, boot_timeout) { * Waits for an emulator to boot on a given port. * Returns this emulator's ID in a promise. */ -module.exports.wait_for_emulator = function (port) { +module.exports.wait_for_emulator = function(port) { var self = this; - return Q().then(function () { + return Q().then(function() { var emulator_id = 'emulator-' + port; - return Adb.shell(emulator_id, 'getprop dev.bootcomplete').then(function (output) { + return Adb.shell(emulator_id, 'getprop dev.bootcomplete') + .then(function (output) { if (output.indexOf('1') >= 0) { return emulator_id; } return self.wait_for_emulator(port); }, function (error) { - if ((error && error.message && - (error.message.indexOf('not found') > -1)) || - (error.message.indexOf('device offline') > -1)) { + if (error && error.message && + (error.message.indexOf('not found') > -1) || + error.message.indexOf('device offline') > -1) { // emulator not yet started, continue waiting return self.wait_for_emulator(port); } else { @@ -350,7 +346,7 @@ module.exports.wait_for_emulator = function (port) { throw error; } }); - }); + }); }; /* @@ -358,9 +354,10 @@ module.exports.wait_for_emulator = function (port) { * promise that resolves to a boolean indicating success. Not specifying a * time_remaining or passing a negative value will cause it to wait forever */ -module.exports.wait_for_boot = function (emulator_id, time_remaining) { +module.exports.wait_for_boot = function(emulator_id, time_remaining) { var self = this; - return Adb.shell(emulator_id, 'ps').then(function (output) { + return Adb.shell(emulator_id, 'ps') + .then(function(output) { if (output.match(/android\.process\.acore/)) { return true; } else if (time_remaining === 0) { @@ -369,7 +366,7 @@ module.exports.wait_for_boot = function (emulator_id, time_remaining) { process.stdout.write('.'); // Check at regular intervals - return Q.delay(time_remaining < CHECK_BOOTED_INTERVAL ? time_remaining : CHECK_BOOTED_INTERVAL).then(function () { + return Q.delay(time_remaining < CHECK_BOOTED_INTERVAL ? time_remaining : CHECK_BOOTED_INTERVAL).then(function() { var updated_time = time_remaining >= 0 ? Math.max(time_remaining - CHECK_BOOTED_INTERVAL, 0) : time_remaining; return self.wait_for_boot(emulator_id, updated_time); }); @@ -382,10 +379,11 @@ module.exports.wait_for_boot = function (emulator_id, time_remaining) { * TODO : Enter the stdin input required to complete the creation of an avd. * Returns a promise. */ -module.exports.create_image = function (name, target) { +module.exports.create_image = function(name, target) { console.log('Creating new avd named ' + name); if (target) { - return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', target]).then(null, function (error) { + return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', target]) + .then(null, function(error) { console.error('ERROR : Failed to create emulator image : '); console.error(' Do you have the latest android targets including ' + target + '?'); console.error(error); @@ -393,20 +391,22 @@ module.exports.create_image = function (name, target) { } else { console.log('WARNING : Project target not found, creating avd with a different target but the project may fail to install.'); // TODO: there's a more robust method for finding targets in android_sdk.js - return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', this.list_targets()[0]]).then(function () { + return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', this.list_targets()[0]]) + .then(function() { // TODO: This seems like another error case, even though it always happens. console.error('ERROR : Unable to create an avd emulator, no targets found.'); console.error('Ensure you have targets available by running the "android" command'); return Q.reject(); - }, function (error) { + }, function(error) { console.error('ERROR : Failed to create emulator image : '); console.error(error); }); } }; -module.exports.resolveTarget = function (target) { - return this.list_started().then(function (emulator_list) { +module.exports.resolveTarget = function(target) { + return this.list_started() + .then(function(emulator_list) { if (emulator_list.length < 1) { return Q.reject('No running Android emulators found, please start an emulator before deploying your project.'); } @@ -417,8 +417,9 @@ module.exports.resolveTarget = function (target) { return Q.reject('Unable to find target \'' + target + '\'. Failed to deploy to emulator.'); } - return build.detectArchitecture(target).then(function (arch) { - return {target: target, arch: arch, isEmulator: true}; + return build.detectArchitecture(target) + .then(function(arch) { + return {target:target, arch:arch, isEmulator:true}; }); }); }; @@ -429,20 +430,15 @@ module.exports.resolveTarget = function (target) { * If no started emulators are found, error out. * Returns a promise. */ -module.exports.install = function (givenTarget, buildResults) { +module.exports.install = function(givenTarget, buildResults) { var target; - // We need to find the proper path to the Android Manifest - var manifestPath = path.join(__dirname, '..', '..', 'app', 'src', 'main', 'AndroidManifest.xml'); - if (buildResults.buildMethod === 'gradle') { - manifestPath = path.join(__dirname, '../../AndroidManifest.xml'); - } - var manifest = new AndroidManifest(manifestPath); + var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml')); var pkgName = manifest.getPackageId(); // resolve the target emulator return Q().then(function () { - if (givenTarget && typeof givenTarget === 'object') { + if (givenTarget && typeof givenTarget == 'object') { return givenTarget; } else { return module.exports.resolveTarget(givenTarget); @@ -456,12 +452,13 @@ module.exports.install = function (givenTarget, buildResults) { }).then(function () { // This promise is always resolved, even if 'adb uninstall' fails to uninstall app // or the app doesn't installed at all, so no error catching needed. - return Q.when().then(function () { + return Q.when() + .then(function() { var apk_path = build.findBestApkForArchitecture(buildResults, target.arch); var execOptions = { cwd: os.tmpdir(), - timeout: INSTALL_COMMAND_TIMEOUT, // in milliseconds + timeout: INSTALL_COMMAND_TIMEOUT, // in milliseconds killSignal: EXEC_KILL_SIGNAL }; @@ -472,12 +469,12 @@ module.exports.install = function (givenTarget, buildResults) { // A special function to call adb install in specific environment w/ specific options. // Introduced as a part of fix for http://issues.apache.org/jira/browse/CB-9119 // to workaround sporadic emulator hangs - function adbInstallWithOptions (target, apk, opts) { + function adbInstallWithOptions(target, apk, opts) { events.emit('verbose', 'Installing apk ' + apk + ' on ' + target + '...'); var command = 'adb -s ' + target + ' install -r "' + apk + '"'; return Q.promise(function (resolve, reject) { - child_process.exec(command, opts, function (err, stdout, stderr) { + child_process.exec(command, opts, function(err, stdout, stderr) { if (err) reject(new CordovaError('Error executing "' + command + '": ' + stderr)); // adb does not return an error code even if installation fails. Instead it puts a specific // message to stdout, so we have to use RegExp matching to detect installation failure. @@ -497,23 +494,27 @@ module.exports.install = function (givenTarget, buildResults) { } function installPromise () { - return adbInstallWithOptions(target.target, apk_path, execOptions).catch(function (error) { + return adbInstallWithOptions(target.target, apk_path, execOptions) + .catch(function (error) { // CB-9557 CB-10157 only uninstall and reinstall app if the one that // is already installed on device was signed w/different certificate - if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString())) { throw error; } + if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString())) + throw error; events.emit('warn', 'Uninstalling app from device and reinstalling it because the ' + 'currently installed app was signed with different key'); // This promise is always resolved, even if 'adb uninstall' fails to uninstall app // or the app doesn't installed at all, so no error catching needed. - return Adb.uninstall(target.target, pkgName).then(function () { + return Adb.uninstall(target.target, pkgName) + .then(function() { return adbInstallWithOptions(target.target, apk_path, execOptions); }); }); } - return retry.retryPromise(NUM_INSTALL_RETRIES, installPromise).then(function (output) { + return retry.retryPromise(NUM_INSTALL_RETRIES, installPromise) + .then(function (output) { events.emit('log', 'INSTALL SUCCESS'); }); }); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/getASPath.bat b/DynamicBibleIonic/platforms/android/cordova/lib/getASPath.bat deleted file mode 100644 index 14dad439..00000000 --- a/DynamicBibleIonic/platforms/android/cordova/lib/getASPath.bat +++ /dev/null @@ -1,3 +0,0 @@ -@ECHO OFF -for /f "tokens=2*" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Android Studio" /v Path') do set "ASPath=%%~b" -ECHO %ASPath% \ No newline at end of file diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/install-device.bat b/DynamicBibleIonic/platforms/android/cordova/lib/install-device.bat index 109b470e..ac7214ac 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/install-device.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/install-device.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0install-device" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'install-device' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/install-emulator.bat b/DynamicBibleIonic/platforms/android/cordova/lib/install-emulator.bat index a28c23a1..1ec67790 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/install-emulator.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/install-emulator.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0install-emulator" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'install-emulator' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/list-devices.bat b/DynamicBibleIonic/platforms/android/cordova/lib/list-devices.bat index ad5f03ed..c0bcdd9a 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/list-devices.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/list-devices.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-devices" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-devices' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/list-emulator-images.bat b/DynamicBibleIonic/platforms/android/cordova/lib/list-emulator-images.bat index 616ffb75..661cbf95 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/list-emulator-images.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/list-emulator-images.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-emulator-images" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-emulator-images' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/list-started-emulators.bat b/DynamicBibleIonic/platforms/android/cordova/lib/list-started-emulators.bat index eed02a5c..a4e88f7d 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/list-started-emulators.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/list-started-emulators.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-started-emulators" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-started-emulators' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/log.js b/DynamicBibleIonic/platforms/android/cordova/lib/log.js index ef2dd5cb..ebf836d5 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/log.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/log.js @@ -19,28 +19,28 @@ under the License. */ -var path = require('path'); -var os = require('os'); -var Q = require('q'); -var child_process = require('child_process'); -var ROOT = path.join(__dirname, '..', '..'); +var path = require('path'), + os = require('os'), + Q = require('q'), + child_process = require('child_process'), + ROOT = path.join(__dirname, '..', '..'); /* * Starts running logcat in the shell. * Returns a promise. */ -module.exports.run = function () { +module.exports.run = function() { var d = Q.defer(); var adb = child_process.spawn('adb', ['logcat'], {cwd: os.tmpdir()}); - adb.stdout.on('data', function (data) { + adb.stdout.on('data', function(data) { var lines = data ? data.toString().split('\n') : []; - var out = lines.filter(function (x) { return x.indexOf('nativeGetEnabledTags') < 0; }); + var out = lines.filter(function(x) { return x.indexOf('nativeGetEnabledTags') < 0; }); console.log(out.join('\n')); }); adb.stderr.on('data', console.error); - adb.on('close', function (code) { + adb.on('close', function(code) { if (code > 0) { d.reject('Failed to run logcat command.'); } else d.resolve(); @@ -49,7 +49,7 @@ module.exports.run = function () { return d.promise; }; -module.exports.help = function () { +module.exports.help = function() { console.log('Usage: ' + path.relative(process.cwd(), path.join(ROOT, 'cordova', 'log'))); console.log('Gives the logcat output on the command line.'); process.exit(0); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/plugin-build.gradle b/DynamicBibleIonic/platforms/android/cordova/lib/plugin-build.gradle index bf8c59ac..d1c63365 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/plugin-build.gradle +++ b/DynamicBibleIonic/platforms/android/cordova/lib/plugin-build.gradle @@ -20,10 +20,8 @@ buildscript { repositories { + mavenCentral() jcenter() - maven { - url "https://maven.google.com" - } } // Switch the Android Gradle plugin version requirement depending on the diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/pluginHandlers.js b/DynamicBibleIonic/platforms/android/cordova/lib/pluginHandlers.js index 842489ae..5e745fd5 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/pluginHandlers.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/pluginHandlers.js @@ -1,4 +1,7 @@ /* + * + * Copyright 2013 Anis Kadri + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -23,26 +26,15 @@ var events = require('cordova-common').events; var CordovaError = require('cordova-common').CordovaError; var handlers = { - 'source-file': { - install: function (obj, plugin, project, options) { + 'source-file':{ + install:function(obj, plugin, project, options) { if (!obj.src) throw new CordovaError(generateAttributeError('src', 'source-file', plugin.id)); if (!obj.targetDir) throw new CordovaError(generateAttributeError('target-dir', 'source-file', plugin.id)); var dest = path.join(obj.targetDir, path.basename(obj.src)); - // TODO: This code needs to be replaced, since the core plugins need to be re-mapped to a different location in - // a later plugins release. This is for legacy plugins to work with Cordova. - - if (options && options.android_studio === true) { - // If a Java file is using the new directory structure, don't penalize it - if (!obj.targetDir.includes('app/src/main')) { - if (obj.src.endsWith('.java')) { - dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src)); - } else if (obj.src.endsWith('.xml')) { - // We are making a huge assumption here that XML files will be going to res/xml or values/xml - dest = path.join('app/src/main', obj.targetDir, path.basename(obj.src)); - } - } + if(options && options.android_studio === true) { + dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src)); } if (options && options.force) { @@ -51,50 +43,42 @@ var handlers = { copyNewFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link)); } }, - uninstall: function (obj, plugin, project, options) { + uninstall:function(obj, plugin, project, options) { var dest = path.join(obj.targetDir, path.basename(obj.src)); - - if (options && options.android_studio === true) { - dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src)); + + if(options && options.android_studio === true) { + dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src)); } deleteJava(project.projectDir, dest); } }, - 'lib-file': { - install: function (obj, plugin, project, options) { + 'lib-file':{ + install:function(obj, plugin, project, options) { var dest = path.join('libs', path.basename(obj.src)); - if (options && options.android_studio === true) { - dest = path.join('app/libs', path.basename(obj.src)); + if(options && options.android_studio === true) { + dest = path.join('app/libs', path.basename(obj.src)); } copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link)); }, - uninstall: function (obj, plugin, project, options) { + uninstall:function(obj, plugin, project, options) { var dest = path.join('libs', path.basename(obj.src)); - if (options && options.android_studio === true) { - dest = path.join('app/libs', path.basename(obj.src)); + if(options && options.android_studio === true) { + dest = path.join('app/libs', path.basename(obj.src)); } removeFile(project.projectDir, dest); } }, - 'resource-file': { - install: function (obj, plugin, project, options) { - var dest = path.normalize(obj.target); - if (options && options.android_studio === true) { - dest = path.join('app/src/main', dest); - } - copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link)); + 'resource-file':{ + install:function(obj, plugin, project, options) { + copyFile(plugin.dir, obj.src, project.projectDir, path.normalize(obj.target), !!(options && options.link)); }, - uninstall: function (obj, plugin, project, options) { - var dest = path.normalize(obj.target); - if (options && options.android_studio === true) { - dest = path.join('app/src/main', dest); - } - removeFile(project.projectDir, dest); + uninstall:function(obj, plugin, project, options) { + removeFile(project.projectDir, path.normalize(obj.target)); } }, 'framework': { - install: function (obj, plugin, project, options) { + install:function(obj, plugin, project, options) { var src = obj.src; if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id)); @@ -111,15 +95,15 @@ var handlers = { subDir = src; } - if (obj.type === 'gradleReference') { + if (obj.type == 'gradleReference') { project.addGradleReference(parentDir, subDir); - } else if (obj.type === 'sys') { + } else if (obj.type == 'sys') { project.addSystemLibrary(parentDir, subDir); } else { project.addSubProject(parentDir, subDir); } }, - uninstall: function (obj, plugin, project, options) { + uninstall:function(obj, plugin, project, options) { var src = obj.src; if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id)); @@ -141,17 +125,17 @@ var handlers = { subDir = src; } - if (obj.type === 'gradleReference') { + if (obj.type == 'gradleReference') { project.removeGradleReference(parentDir, subDir); - } else if (obj.type === 'sys') { + } else if (obj.type == 'sys') { project.removeSystemLibrary(parentDir, subDir); } else { project.removeSubProject(parentDir, subDir); } } }, - asset: { - install: function (obj, plugin, project, options) { + asset:{ + install:function(obj, plugin, project, options) { if (!obj.src) { throw new CordovaError(generateAttributeError('src', 'asset', plugin.id)); } @@ -165,7 +149,7 @@ var handlers = { copyFile(plugin.dir, obj.src, project.platformWww, obj.target); } }, - uninstall: function (obj, plugin, project, options) { + uninstall:function(obj, plugin, project, options) { var target = obj.target || obj.src; if (!target) throw new CordovaError(generateAttributeError('target', 'asset', plugin.id)); @@ -183,7 +167,7 @@ var handlers = { install: function (obj, plugin, project, options) { // Copy the plugin's files into the www directory. var moduleSource = path.resolve(plugin.dir, obj.src); - var moduleName = plugin.id + '.' + (obj.name || path.basename(obj.src, path.extname(obj.src))); + var moduleName = plugin.id + '.' + (obj.name || path.basename(obj.src, path.extname (obj.src))); // Read in the file, prepend the cordova.define, and write it back out. var scriptContent = fs.readFileSync(moduleSource, 'utf-8').replace(/^\ufeff/, ''); // Window BOM @@ -222,7 +206,7 @@ module.exports.getInstaller = function (type) { events.emit('verbose', '<' + type + '> is not supported for android plugins'); }; -module.exports.getUninstaller = function (type) { +module.exports.getUninstaller = function(type) { if (handlers[type] && handlers[type].uninstall) { return handlers[type].uninstall; } @@ -237,19 +221,21 @@ function copyFile (plugin_dir, src, project_dir, dest, link) { // check that src path is inside plugin directory var real_path = fs.realpathSync(src); var real_plugin_path = fs.realpathSync(plugin_dir); - if (real_path.indexOf(real_plugin_path) !== 0) { throw new CordovaError('File "' + src + '" is located outside the plugin directory "' + plugin_dir + '"'); } + if (real_path.indexOf(real_plugin_path) !== 0) + throw new CordovaError('File "' + src + '" is located outside the plugin directory "' + plugin_dir + '"'); dest = path.resolve(project_dir, dest); // check that dest path is located in project directory - if (dest.indexOf(project_dir) !== 0) { throw new CordovaError('Destination "' + dest + '" for source file "' + src + '" is located outside the project'); } + if (dest.indexOf(project_dir) !== 0) + throw new CordovaError('Destination "' + dest + '" for source file "' + src + '" is located outside the project'); shell.mkdir('-p', path.dirname(dest)); if (link) { symlinkFileOrDirTree(src, dest); } else if (fs.statSync(src).isDirectory()) { // XXX shelljs decides to create a directory when -R|-r is used which sucks. http://goo.gl/nbsjq - shell.cp('-Rf', src + '/*', dest); + shell.cp('-Rf', src+'/*', dest); } else { shell.cp('-f', src, dest); } @@ -258,22 +244,24 @@ function copyFile (plugin_dir, src, project_dir, dest, link) { // Same as copy file but throws error if target exists function copyNewFile (plugin_dir, src, project_dir, dest, link) { var target_path = path.resolve(project_dir, dest); - if (fs.existsSync(target_path)) { throw new CordovaError('"' + target_path + '" already exists!'); } + if (fs.existsSync(target_path)) + throw new CordovaError('"' + target_path + '" already exists!'); copyFile(plugin_dir, src, project_dir, dest, !!link); } -function symlinkFileOrDirTree (src, dest) { +function symlinkFileOrDirTree(src, dest) { if (fs.existsSync(dest)) { shell.rm('-Rf', dest); } if (fs.statSync(src).isDirectory()) { shell.mkdir('-p', dest); - fs.readdirSync(src).forEach(function (entry) { + fs.readdirSync(src).forEach(function(entry) { symlinkFileOrDirTree(path.join(src, entry), path.join(dest, entry)); }); - } else { + } + else { fs.symlinkSync(path.relative(fs.realpathSync(path.dirname(dest)), src), dest); } } @@ -304,8 +292,8 @@ function removeFileAndParents (baseDir, destFile, stopper) { // check if directory is empty var curDir = path.dirname(file); - while (curDir !== path.resolve(baseDir, stopper)) { - if (fs.existsSync(curDir) && fs.readdirSync(curDir).length === 0) { + while(curDir !== path.resolve(baseDir, stopper)) { + if(fs.existsSync(curDir) && fs.readdirSync(curDir).length === 0) { fs.rmdirSync(curDir); curDir = path.resolve(curDir, '..'); } else { @@ -315,6 +303,6 @@ function removeFileAndParents (baseDir, destFile, stopper) { } } -function generateAttributeError (attribute, element, id) { +function generateAttributeError(attribute, element, id) { return 'Required attribute "' + attribute + '" not specified in <' + element + '> element from plugin: ' + id; } diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/prepare.js b/DynamicBibleIonic/platforms/android/cordova/lib/prepare.js index ac63f8a6..504eb612 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/prepare.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/prepare.js @@ -16,7 +16,6 @@ specific language governing permissions and limitations under the License. */ -/* eslint no-useless-escape: 0 */ var Q = require('q'); var fs = require('fs'); @@ -24,7 +23,6 @@ var path = require('path'); var shell = require('shelljs'); var events = require('cordova-common').events; var AndroidManifest = require('./AndroidManifest'); -var checkReqs = require('./check_reqs'); var xmlHelpers = require('cordova-common').xmlHelpers; var CordovaError = require('cordova-common').CordovaError; var ConfigParser = require('cordova-common').ConfigParser; @@ -42,14 +40,17 @@ module.exports.prepare = function (cordovaProject, options) { this._config = updateConfigFilesFrom(cordovaProject.projectConfig, munger, this.locations); // Update own www dir with project's www assets and plugins' assets and js-files - return Q.when(updateWww(cordovaProject, this.locations)).then(function () { + return Q.when(updateWww(cordovaProject, this.locations)) + .then(function () { // update project according to config.xml changes. return updateProjectAccordingTo(self._config, self.locations); - }).then(function () { + }) + .then(function () { updateIcons(cordovaProject, path.relative(cordovaProject.root, self.locations.res)); updateSplashes(cordovaProject, path.relative(cordovaProject.root, self.locations.res)); updateFileResources(cordovaProject, path.relative(cordovaProject.root, self.locations.root)); - }).then(function () { + }) + .then(function () { events.emit('verbose', 'Prepared android project successfully'); }); }; @@ -90,7 +91,7 @@ module.exports.clean = function (options) { * represents current project's configuration. When returned, the * configuration is already dumped to appropriate config.xml file. */ -function updateConfigFilesFrom (sourceConfig, configMunger, locations) { +function updateConfigFilesFrom(sourceConfig, configMunger, locations) { events.emit('verbose', 'Generating platform-specific config.xml from defaults for android at ' + locations.configXml); // First cleanup current config and merge project's one into own @@ -105,7 +106,7 @@ function updateConfigFilesFrom (sourceConfig, configMunger, locations) { // Merge changes from app's config.xml into platform's one var config = new ConfigParser(locations.configXml); xmlHelpers.mergeXml(sourceConfig.doc.getroot(), - config.doc.getroot(), 'android', /* clobber= */true); + config.doc.getroot(), 'android', /*clobber=*/true); config.write(); return config; @@ -114,7 +115,7 @@ function updateConfigFilesFrom (sourceConfig, configMunger, locations) { /** * Logs all file operations via the verbose event stream, indented. */ -function logFileOp (message) { +function logFileOp(message) { events.emit('verbose', ' ' + message); } @@ -127,7 +128,7 @@ function logFileOp (message) { * @param {Object} destinations An object that contains destination * paths for www files. */ -function updateWww (cordovaProject, destinations) { +function updateWww(cordovaProject, destinations) { var sourceDirs = [ path.relative(cordovaProject.root, cordovaProject.locations.www), path.relative(cordovaProject.root, destinations.platformWww) @@ -150,7 +151,7 @@ function updateWww (cordovaProject, destinations) { /** * Cleans all files from the platform 'www' directory. */ -function cleanWww (projectRoot, locations) { +function cleanWww(projectRoot, locations) { var targetDir = path.relative(projectRoot, locations.www); events.emit('verbose', 'Cleaning ' + targetDir); @@ -166,26 +167,19 @@ function cleanWww (projectRoot, locations) { * be used to update project * @param {Object} locations A map of locations for this platform */ -function updateProjectAccordingTo (platformConfig, locations) { +function updateProjectAccordingTo(platformConfig, locations) { // Update app name by editing res/values/strings.xml - var strings = xmlHelpers.parseElementtreeSync(locations.strings); - var name = platformConfig.name(); + var strings = xmlHelpers.parseElementtreeSync(locations.strings); strings.find('string[@name="app_name"]').text = name.replace(/\'/g, '\\\''); - - var shortName = platformConfig.shortName && platformConfig.shortName(); - if (shortName && shortName !== name) { - strings.find('string[@name="launcher_name"]').text = shortName.replace(/\'/g, '\\\''); - } - fs.writeFileSync(locations.strings, strings.write({indent: 4}), 'utf-8'); events.emit('verbose', 'Wrote out android application name "' + name + '" to ' + locations.strings); // Java packages cannot support dashes - var androidPkgName = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_'); + var pkg = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_'); var manifest = new AndroidManifest(locations.manifest); - var manifestId = manifest.getPackageId(); + var orig_pkg = manifest.getPackageId(); manifest.getActivity() .setOrientation(platformConfig.getPreference('orientation')) @@ -193,41 +187,36 @@ function updateProjectAccordingTo (platformConfig, locations) { manifest.setVersionName(platformConfig.version()) .setVersionCode(platformConfig.android_versionCode() || default_versionCode(platformConfig.version())) - .setPackageId(androidPkgName) + .setPackageId(pkg) .setMinSdkVersion(platformConfig.getPreference('android-minSdkVersion', 'android')) .setMaxSdkVersion(platformConfig.getPreference('android-maxSdkVersion', 'android')) .setTargetSdkVersion(platformConfig.getPreference('android-targetSdkVersion', 'android')) .write(); - // Java file paths shouldn't be hard coded - var javaPattern = path.join(locations.javaSrc, manifestId.replace(/\./g, '/'), '*.java'); - var java_files = shell.ls(javaPattern).filter(function (f) { + var javaPattern = path.join(locations.root, 'src', orig_pkg.replace(/\./g, '/'), '*.java'); + var java_files = shell.ls(javaPattern).filter(function(f) { return shell.grep(/extends\s+CordovaActivity/g, f); }); if (java_files.length === 0) { throw new CordovaError('No Java files found that extend CordovaActivity.'); - } else if (java_files.length > 1) { + } else if(java_files.length > 1) { events.emit('log', 'Multiple candidate Java files that extend CordovaActivity found. Guessing at the first one, ' + java_files[0]); } - var destFile = path.join(locations.root, 'app', 'src', 'main', 'java', androidPkgName.replace(/\./g, '/'), path.basename(java_files[0])); + var destFile = path.join(locations.root, 'src', pkg.replace(/\./g, '/'), path.basename(java_files[0])); shell.mkdir('-p', path.dirname(destFile)); - shell.sed(/package [\w\.]*;/, 'package ' + androidPkgName + ';', java_files[0]).to(destFile); - events.emit('verbose', 'Wrote out Android package name "' + androidPkgName + '" to ' + destFile); + shell.sed(/package [\w\.]*;/, 'package ' + pkg + ';', java_files[0]).to(destFile); + events.emit('verbose', 'Wrote out Android package name "' + pkg + '" to ' + destFile); - var removeOrigPkg = checkReqs.isWindows() || checkReqs.isDarwin() ? - manifestId.toUpperCase() !== androidPkgName.toUpperCase() : - manifestId !== androidPkgName; - - if (removeOrigPkg) { + if (orig_pkg !== pkg) { // If package was name changed we need to remove old java with main activity - shell.rm('-Rf', java_files[0]); + shell.rm('-Rf',java_files[0]); // remove any empty directories var currentDir = path.dirname(java_files[0]); var sourcesRoot = path.resolve(locations.root, 'src'); - while (currentDir !== sourcesRoot) { - if (fs.existsSync(currentDir) && fs.readdirSync(currentDir).length === 0) { + while(currentDir !== sourcesRoot) { + if(fs.existsSync(currentDir) && fs.readdirSync(currentDir).length === 0) { fs.rmdirSync(currentDir); currentDir = path.resolve(currentDir, '..'); } else { @@ -240,7 +229,7 @@ function updateProjectAccordingTo (platformConfig, locations) { // Consturct the default value for versionCode as // PATCH + MINOR * 100 + MAJOR * 10000 // see http://developer.android.com/tools/publishing/versioning.html -function default_versionCode (version) { +function default_versionCode(version) { var nums = version.split('-')[0].split('.'); var versionCode = 0; if (+nums[0]) { @@ -257,7 +246,7 @@ function default_versionCode (version) { return versionCode; } -function getImageResourcePath (resourcesDir, type, density, name, sourceName) { +function getImageResourcePath(resourcesDir, type, density, name, sourceName) { if (/\.9\.png$/.test(sourceName)) { name = name.replace(/\.png$/, '.9.png'); } @@ -265,7 +254,7 @@ function getImageResourcePath (resourcesDir, type, density, name, sourceName) { return resourcePath; } -function updateSplashes (cordovaProject, platformResourcesDir) { +function updateSplashes(cordovaProject, platformResourcesDir) { var resources = cordovaProject.projectConfig.getSplashScreens('android'); // if there are "splash" elements in config.xml @@ -281,7 +270,7 @@ function updateSplashes (cordovaProject, platformResourcesDir) { if (!resource.density) { return; } - if (resource.density === 'mdpi') { + if (resource.density == 'mdpi') { hadMdpi = true; } var targetPath = getImageResourcePath( @@ -301,7 +290,7 @@ function updateSplashes (cordovaProject, platformResourcesDir) { resourceMap, { rootDir: cordovaProject.root }, logFileOp); } -function cleanSplashes (projectRoot, projectConfig, platformResourcesDir) { +function cleanSplashes(projectRoot, projectConfig, platformResourcesDir) { var resources = projectConfig.getSplashScreens('android'); if (resources.length > 0) { var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'drawable', 'screen.png'); @@ -313,7 +302,7 @@ function cleanSplashes (projectRoot, projectConfig, platformResourcesDir) { } } -function updateIcons (cordovaProject, platformResourcesDir) { +function updateIcons(cordovaProject, platformResourcesDir) { var icons = cordovaProject.projectConfig.getIcons('android'); // if there are icon elements in config.xml @@ -337,7 +326,7 @@ function updateIcons (cordovaProject, platformResourcesDir) { }; // find the best matching icon for a given density or size // @output android_icons - var parseIcon = function (icon, icon_size) { + var parseIcon = function(icon, icon_size) { // do I have a platform icon for that density already var density = icon.density || sizeToDensityMap[icon_size]; if (!density) { @@ -352,7 +341,7 @@ function updateIcons (cordovaProject, platformResourcesDir) { }; // iterate over all icon elements to find the default icon and call parseIcon - for (var i = 0; i < icons.length; i++) { + for (var i=0; i 0) { var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'mipmap', 'icon.png'); @@ -404,16 +393,18 @@ function cleanIcons (projectRoot, projectConfig, platformResourcesDir) { /** * Gets a map containing resources of a specified name from all drawable folders in a directory. */ -function mapImageResources (rootDir, subDir, type, resourceName) { +function mapImageResources(rootDir, subDir, type, resourceName) { var pathMap = {}; - shell.ls(path.join(rootDir, subDir, type + '-*')).forEach(function (drawableFolder) { + shell.ls(path.join(rootDir, subDir, type + '-*')) + .forEach(function (drawableFolder) { var imagePath = path.join(subDir, path.basename(drawableFolder), resourceName); pathMap[imagePath] = null; }); return pathMap; } -function updateFileResources (cordovaProject, platformDir) { + +function updateFileResources(cordovaProject, platformDir) { var files = cordovaProject.projectConfig.getFileResources('android'); // if there are resource-file elements in config.xml @@ -423,7 +414,7 @@ function updateFileResources (cordovaProject, platformDir) { } var resourceMap = {}; - files.forEach(function (res) { + files.forEach(function(res) { var targetPath = path.join(platformDir, res.target); resourceMap[targetPath] = res.src; }); @@ -433,20 +424,20 @@ function updateFileResources (cordovaProject, platformDir) { resourceMap, { rootDir: cordovaProject.root }, logFileOp); } -function cleanFileResources (projectRoot, projectConfig, platformDir) { - var files = projectConfig.getFileResources('android', true); + +function cleanFileResources(projectRoot, projectConfig, platformDir) { + var files = projectConfig.getFileResources('android'); if (files.length > 0) { events.emit('verbose', 'Cleaning resource files at ' + platformDir); var resourceMap = {}; - files.forEach(function (res) { + files.forEach(function(res) { var filePath = path.join(platformDir, res.target); resourceMap[filePath] = null; }); FileUpdater.updatePaths( - resourceMap, { - rootDir: projectRoot, all: true}, logFileOp); + resourceMap, { rootDir: projectRoot, all: true}, logFileOp); } } @@ -461,7 +452,7 @@ function cleanFileResources (projectRoot, projectConfig, platformDir) { * default value, if there is no such preference. The default value is * 'singleTop' */ -function findAndroidLaunchModePreference (platformConfig) { +function findAndroidLaunchModePreference(platformConfig) { var launchMode = platformConfig.getPreference('AndroidLaunchMode'); if (!launchMode) { // Return a default value diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/retry.js b/DynamicBibleIonic/platforms/android/cordova/lib/retry.js index c464b9d5..3cb49274 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/retry.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/retry.js @@ -45,12 +45,12 @@ module.exports.retryPromise = function (attemts_left, promiseFunction) { return promiseFunction.apply(undefined, promiseFunctionArguments).then( // on success pass results through - function onFulfilled (value) { + function onFulfilled(value) { return value; }, // on rejection either retry, or throw the error - function onRejected (error) { + function onRejected(error) { attemts_left -= 1; diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/run.js b/DynamicBibleIonic/platforms/android/cordova/lib/run.js index b97fce20..214a1e19 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/run.js +++ b/DynamicBibleIonic/platforms/android/cordova/lib/run.js @@ -21,14 +21,14 @@ /* jshint loopfunc:true */ -var path = require('path'); -var build = require('./build'); -var emulator = require('./emulator'); -var device = require('./device'); -var Q = require('q'); -var events = require('cordova-common').events; +var path = require('path'), + build = require('./build'), + emulator = require('./emulator'), + device = require('./device'), + Q = require('q'), + events = require('cordova-common').events; -function getInstallTarget (runOptions) { +function getInstallTarget(runOptions) { var install_target; if (runOptions.target) { install_target = runOptions.target; @@ -51,15 +51,17 @@ function getInstallTarget (runOptions) { * * @return {Promise} */ -module.exports.run = function (runOptions) { + module.exports.run = function(runOptions) { var self = this; var install_target = getInstallTarget(runOptions); - return Q().then(function () { + return Q() + .then(function() { if (!install_target) { // no target given, deploy to device if available, otherwise use the emulator. - return device.list().then(function (device_list) { + return device.list() + .then(function(device_list) { if (device_list.length > 0) { events.emit('warn', 'No target specified, deploying to device \'' + device_list[0] + '\'.'); install_target = device_list[0]; @@ -69,31 +71,36 @@ module.exports.run = function (runOptions) { } }); } - }).then(function () { - if (install_target === '--device') { + }).then(function() { + if (install_target == '--device') { return device.resolveTarget(null); - } else if (install_target === '--emulator') { + } else if (install_target == '--emulator') { // Give preference to any already started emulators. Else, start one. - return emulator.list_started().then(function (started) { + return emulator.list_started() + .then(function(started) { return started && started.length > 0 ? started[0] : emulator.start(); - }).then(function (emulatorId) { + }).then(function(emulatorId) { return emulator.resolveTarget(emulatorId); }); } // They specified a specific device/emulator ID. - return device.list().then(function (devices) { + return device.list() + .then(function(devices) { if (devices.indexOf(install_target) > -1) { return device.resolveTarget(install_target); } - return emulator.list_started().then(function (started_emulators) { + return emulator.list_started() + .then(function(started_emulators) { if (started_emulators.indexOf(install_target) > -1) { return emulator.resolveTarget(install_target); } - return emulator.list_images().then(function (avds) { + return emulator.list_images() + .then(function(avds) { // if target emulator isn't started, then start it. for (var avd in avds) { - if (avds[avd].name === install_target) { - return emulator.start(install_target).then(function (emulatorId) { + if (avds[avd].name == install_target) { + return emulator.start(install_target) + .then(function(emulatorId) { return emulator.resolveTarget(emulatorId); }); } @@ -102,14 +109,16 @@ module.exports.run = function (runOptions) { }); }); }); - }).then(function (resolvedTarget) { + }).then(function(resolvedTarget) { // Better just call self.build, but we're doing some processing of // build results (according to platformApi spec) so they are in different // format than emulator.install expects. // TODO: Update emulator/device.install to handle this change - return build.run.call(self, runOptions, resolvedTarget).then(function (buildResults) { + return build.run.call(self, runOptions, resolvedTarget) + .then(function(buildResults) { if (resolvedTarget.isEmulator) { - return emulator.wait_for_boot(resolvedTarget.target).then(function () { + return emulator.wait_for_boot(resolvedTarget.target) + .then(function () { return emulator.install(resolvedTarget, buildResults); }); } @@ -118,7 +127,7 @@ module.exports.run = function (runOptions) { }); }; -module.exports.help = function () { +module.exports.help = function() { console.log('Usage: ' + path.relative(process.cwd(), process.argv[1]) + ' [options]'); console.log('Build options :'); console.log(' --debug : Builds project in debug mode'); diff --git a/DynamicBibleIonic/platforms/android/cordova/lib/start-emulator.bat b/DynamicBibleIonic/platforms/android/cordova/lib/start-emulator.bat index 6c237ea2..9329d951 100644 --- a/DynamicBibleIonic/platforms/android/cordova/lib/start-emulator.bat +++ b/DynamicBibleIonic/platforms/android/cordova/lib/start-emulator.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0start-emulator" IF EXIST %script_path% ( - node %script_path% %* + node "%script_path%" %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'start-emulator' script in 'cordova\lib' folder, aborting...>&2 diff --git a/DynamicBibleIonic/platforms/android/cordova/version b/DynamicBibleIonic/platforms/android/cordova/version index 3df00e3e..cdc2e80a 100755 --- a/DynamicBibleIonic/platforms/android/cordova/version +++ b/DynamicBibleIonic/platforms/android/cordova/version @@ -20,7 +20,7 @@ */ // Coho updates this line: -var VERSION = "7.0.0"; +var VERSION = "6.2.3"; module.exports.version = VERSION; diff --git a/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.jar b/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.jar index 3baa851b..7a3265ee 100644 Binary files a/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.jar and b/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.properties b/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.properties index 61635211..0ecaa10f 100644 --- a/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.properties +++ b/DynamicBibleIonic/platforms/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jan 05 03:48:26 EST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/DynamicBibleIonic/platforms/android/gradlew b/DynamicBibleIonic/platforms/android/gradlew index 27309d92..cccdd3d5 100644 --- a/DynamicBibleIonic/platforms/android/gradlew +++ b/DynamicBibleIonic/platforms/android/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/DynamicBibleIonic/platforms/android/gradlew.bat b/DynamicBibleIonic/platforms/android/gradlew.bat index f6d5974e..e95643d6 100644 --- a/DynamicBibleIonic/platforms/android/gradlew.bat +++ b/DynamicBibleIonic/platforms/android/gradlew.bat @@ -49,7 +49,6 @@ goto fail @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/DynamicBibleIonic/platforms/android/platform_www/cordova.js b/DynamicBibleIonic/platforms/android/platform_www/cordova.js index 092b2d60..bda7c3e5 100644 --- a/DynamicBibleIonic/platforms/android/platform_www/cordova.js +++ b/DynamicBibleIonic/platforms/android/platform_www/cordova.js @@ -1,5 +1,5 @@ // Platform: android -// 4450a4cea50616e080a82e8ede9e3d6a1fe3c3ec +// 7ef9f9c03167a4dde4372d869472241b6816fee9 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -19,33 +19,35 @@ under the License. */ ;(function() { -var PLATFORM_VERSION_BUILD_LABEL = '7.0.0'; +var PLATFORM_VERSION_BUILD_LABEL = '6.2.3'; // file: src/scripts/require.js -/* jshint -W079 */ -/* jshint -W020 */ +/*jshint -W079 */ +/*jshint -W020 */ -var require; -var define; +var require, + define; (function () { - var modules = {}; + var modules = {}, // Stack of moduleIds currently being built. - var requireStack = []; + requireStack = [], // Map of module ID -> index into requireStack of modules currently being built. - var inProgressModules = {}; - var SEPARATOR = '.'; + inProgressModules = {}, + SEPARATOR = "."; - function build (module) { - var factory = module.factory; - var localRequire = function (id) { - var resultantId = id; - // Its a relative path, so lop off the last portion and add the id (minus "./") - if (id.charAt(0) === '.') { - resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2); - } - return require(resultantId); - }; + + + function build(module) { + var factory = module.factory, + localRequire = function (id) { + var resultantId = id; + //Its a relative path, so lop off the last portion and add the id (minus "./") + if (id.charAt(0) === ".") { + resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2); + } + return require(resultantId); + }; module.exports = {}; delete module.factory; factory(localRequire, module.exports, module); @@ -54,10 +56,10 @@ var define; require = function (id) { if (!modules[id]) { - throw 'module ' + id + ' not found'; + throw "module " + id + " not found"; } else if (id in inProgressModules) { var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id; - throw 'Cycle in require graph: ' + cycle; + throw "Cycle in require graph: " + cycle; } if (modules[id].factory) { try { @@ -74,7 +76,7 @@ var define; define = function (id, factory) { if (modules[id]) { - throw 'module ' + id + ' already defined'; + throw "module " + id + " already defined"; } modules[id] = { @@ -90,8 +92,8 @@ var define; define.moduleMap = modules; })(); -// Export for use in node -if (typeof module === 'object' && typeof require === 'function') { +//Export for use in node +if (typeof module === "object" && typeof require === "function") { module.exports.require = require; module.exports.define = define; } @@ -101,13 +103,15 @@ define("cordova", function(require, exports, module) { // Workaround for Windows 10 in hosted environment case // http://www.w3.org/html/wg/drafts/html/master/browsers.html#named-access-on-the-window-object -if (window.cordova && !(window.cordova instanceof HTMLElement)) { // eslint-disable-line no-undef - throw new Error('cordova already defined'); +if (window.cordova && !(window.cordova instanceof HTMLElement)) { + throw new Error("cordova already defined"); } + var channel = require('cordova/channel'); var platform = require('cordova/platform'); + /** * Intercept calls to addEventListener + removeEventListener and handle deviceready, * resume, and pause events. @@ -120,48 +124,48 @@ var m_window_removeEventListener = window.removeEventListener; /** * Houses custom event handlers to intercept on document + window event listeners. */ -var documentEventHandlers = {}; -var windowEventHandlers = {}; +var documentEventHandlers = {}, + windowEventHandlers = {}; -document.addEventListener = function (evt, handler, capture) { +document.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); - if (typeof documentEventHandlers[e] !== 'undefined') { + if (typeof documentEventHandlers[e] != 'undefined') { documentEventHandlers[e].subscribe(handler); } else { m_document_addEventListener.call(document, evt, handler, capture); } }; -window.addEventListener = function (evt, handler, capture) { +window.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); - if (typeof windowEventHandlers[e] !== 'undefined') { + if (typeof windowEventHandlers[e] != 'undefined') { windowEventHandlers[e].subscribe(handler); } else { m_window_addEventListener.call(window, evt, handler, capture); } }; -document.removeEventListener = function (evt, handler, capture) { +document.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin - if (typeof documentEventHandlers[e] !== 'undefined') { + if (typeof documentEventHandlers[e] != "undefined") { documentEventHandlers[e].unsubscribe(handler); } else { m_document_removeEventListener.call(document, evt, handler, capture); } }; -window.removeEventListener = function (evt, handler, capture) { +window.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); // If unsubscribing from an event that is handled by a plugin - if (typeof windowEventHandlers[e] !== 'undefined') { + if (typeof windowEventHandlers[e] != "undefined") { windowEventHandlers[e].unsubscribe(handler); } else { m_window_removeEventListener.call(window, evt, handler, capture); } }; -function createEvent (type, data) { +function createEvent(type, data) { var event = document.createEvent('Events'); event.initEvent(type, false, false); if (data) { @@ -174,32 +178,29 @@ function createEvent (type, data) { return event; } -/* eslint-disable no-undef */ + var cordova = { - define: define, - require: require, - version: PLATFORM_VERSION_BUILD_LABEL, - platformVersion: PLATFORM_VERSION_BUILD_LABEL, - platformId: platform.id, - - /* eslint-enable no-undef */ - + define:define, + require:require, + version:PLATFORM_VERSION_BUILD_LABEL, + platformVersion:PLATFORM_VERSION_BUILD_LABEL, + platformId:platform.id, /** * Methods to add/remove your own addEventListener hijacking on document + window. */ - addWindowEventHandler: function (event) { + addWindowEventHandler:function(event) { return (windowEventHandlers[event] = channel.create(event)); }, - addStickyDocumentEventHandler: function (event) { + addStickyDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.createSticky(event)); }, - addDocumentEventHandler: function (event) { + addDocumentEventHandler:function(event) { return (documentEventHandlers[event] = channel.create(event)); }, - removeWindowEventHandler: function (event) { + removeWindowEventHandler:function(event) { delete windowEventHandlers[event]; }, - removeDocumentEventHandler: function (event) { + removeDocumentEventHandler:function(event) { delete documentEventHandlers[event]; }, /** @@ -207,23 +208,24 @@ var cordova = { * * @return object */ - getOriginalHandlers: function () { + getOriginalHandlers: function() { return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener}, - 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; + 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}}; }, /** * Method to fire event from native code * bNoDetach is required for events which cause an exception which needs to be caught in native code */ - fireDocumentEvent: function (type, data, bNoDetach) { + fireDocumentEvent: function(type, data, bNoDetach) { var evt = createEvent(type, data); - if (typeof documentEventHandlers[type] !== 'undefined') { - if (bNoDetach) { + if (typeof documentEventHandlers[type] != 'undefined') { + if( bNoDetach ) { documentEventHandlers[type].fire(evt); - } else { - setTimeout(function () { + } + else { + setTimeout(function() { // Fire deviceready on listeners that were registered before cordova.js was loaded. - if (type === 'deviceready') { + if (type == 'deviceready') { document.dispatchEvent(evt); } documentEventHandlers[type].fire(evt); @@ -233,10 +235,10 @@ var cordova = { document.dispatchEvent(evt); } }, - fireWindowEvent: function (type, data) { - var evt = createEvent(type, data); - if (typeof windowEventHandlers[type] !== 'undefined') { - setTimeout(function () { + fireWindowEvent: function(type, data) { + var evt = createEvent(type,data); + if (typeof windowEventHandlers[type] != 'undefined') { + setTimeout(function() { windowEventHandlers[type].fire(evt); }, 0); } else { @@ -250,7 +252,7 @@ var cordova = { // Randomize the starting callbackId to avoid collisions after refreshing or navigating. // This way, it's very unlikely that any new callback would get the same callbackId as an old callback. callbackId: Math.floor(Math.random() * 2000000000), - callbacks: {}, + callbacks: {}, callbackStatus: { NO_RESULT: 0, OK: 1, @@ -267,14 +269,14 @@ var cordova = { /** * Called by native code when returning successful result from an action. */ - callbackSuccess: function (callbackId, args) { + callbackSuccess: function(callbackId, args) { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); }, /** * Called by native code when returning error result from an action. */ - callbackError: function (callbackId, args) { + callbackError: function(callbackId, args) { // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative. // Derive success from status. cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback); @@ -283,11 +285,11 @@ var cordova = { /** * Called by native code when returning the result from an action. */ - callbackFromNative: function (callbackId, isSuccess, status, args, keepCallback) { + callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) { try { var callback = cordova.callbacks[callbackId]; if (callback) { - if (isSuccess && status === cordova.callbackStatus.OK) { + if (isSuccess && status == cordova.callbackStatus.OK) { callback.success && callback.success.apply(null, args); } else if (!isSuccess) { callback.fail && callback.fail.apply(null, args); @@ -304,29 +306,31 @@ var cordova = { delete cordova.callbacks[callbackId]; } } - } catch (err) { - var msg = 'Error in ' + (isSuccess ? 'Success' : 'Error') + ' callbackId: ' + callbackId + ' : ' + err; + } + catch (err) { + var msg = "Error in " + (isSuccess ? "Success" : "Error") + " callbackId: " + callbackId + " : " + err; console && console.log && console.log(msg); - cordova.fireWindowEvent('cordovacallbackerror', { 'message': msg }); + cordova.fireWindowEvent("cordovacallbackerror", { 'message': msg }); throw err; } }, - addConstructor: function (func) { - channel.onCordovaReady.subscribe(function () { + addConstructor: function(func) { + channel.onCordovaReady.subscribe(function() { try { func(); - } catch (e) { - console.log('Failed to run constructor: ' + e); + } catch(e) { + console.log("Failed to run constructor: " + e); } }); } }; + module.exports = cordova; }); -// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/android/nativeapiprovider.js +// file: /Users/maj/src/cordova-android/cordova-js-src/android/nativeapiprovider.js define("cordova/android/nativeapiprovider", function(require, exports, module) { /** @@ -349,7 +353,7 @@ module.exports = { }); -// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/android/promptbasednativeapi.js +// file: /Users/maj/src/cordova-android/cordova-js-src/android/promptbasednativeapi.js define("cordova/android/promptbasednativeapi", function(require, exports, module) { /** @@ -387,29 +391,29 @@ var typeMap = { 'O': 'Object' }; -function extractParamName (callee, argIndex) { +function extractParamName(callee, argIndex) { return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex]; } -function checkArgs (spec, functionName, args, opt_callee) { +function checkArgs(spec, functionName, args, opt_callee) { if (!moduleExports.enableChecks) { return; } var errMsg = null; var typeName; for (var i = 0; i < spec.length; ++i) { - var c = spec.charAt(i); - var cUpper = c.toUpperCase(); - var arg = args[i]; + var c = spec.charAt(i), + cUpper = c.toUpperCase(), + arg = args[i]; // Asterix means allow anything. - if (c === '*') { + if (c == '*') { continue; } typeName = utils.typeName(arg); - if ((arg === null || arg === undefined) && c === cUpper) { + if ((arg === null || arg === undefined) && c == cUpper) { continue; } - if (typeName !== typeMap[cUpper]) { + if (typeName != typeMap[cUpper]) { errMsg = 'Expected ' + typeMap[cUpper]; break; } @@ -418,14 +422,14 @@ function checkArgs (spec, functionName, args, opt_callee) { errMsg += ', but got ' + typeName + '.'; errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg; // Don't log when running unit tests. - if (typeof jasmine === 'undefined') { + if (typeof jasmine == 'undefined') { console.error(errMsg); } throw TypeError(errMsg); } } -function getValue (value, defaultValue) { +function getValue(value, defaultValue) { return value === undefined ? defaultValue : value; } @@ -433,6 +437,7 @@ moduleExports.checkArgs = checkArgs; moduleExports.getValue = getValue; moduleExports.enableChecks = true; + }); // file: src/common/base64.js @@ -440,58 +445,58 @@ define("cordova/base64", function(require, exports, module) { var base64 = exports; -base64.fromArrayBuffer = function (arrayBuffer) { +base64.fromArrayBuffer = function(arrayBuffer) { var array = new Uint8Array(arrayBuffer); return uint8ToBase64(array); }; -base64.toArrayBuffer = function (str) { - var decodedStr = typeof atob !== 'undefined' ? atob(str) : Buffer.from(str, 'base64').toString('binary'); // eslint-disable-line no-undef +base64.toArrayBuffer = function(str) { + var decodedStr = typeof atob != 'undefined' ? atob(str) : new Buffer(str,'base64').toString('binary'); var arrayBuffer = new ArrayBuffer(decodedStr.length); var array = new Uint8Array(arrayBuffer); - for (var i = 0, len = decodedStr.length; i < len; i++) { + for (var i=0, len=decodedStr.length; i < len; i++) { array[i] = decodedStr.charCodeAt(i); } return arrayBuffer; }; -// ------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ /* This code is based on the performance tests at http://jsperf.com/b64tests * This 12-bit-at-a-time algorithm was the best performing version on all * platforms tested. */ -var b64_6bit = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var b64_12bit; -var b64_12bitTable = function () { +var b64_12bitTable = function() { b64_12bit = []; - for (var i = 0; i < 64; i++) { - for (var j = 0; j < 64; j++) { - b64_12bit[i * 64 + j] = b64_6bit[i] + b64_6bit[j]; + for (var i=0; i<64; i++) { + for (var j=0; j<64; j++) { + b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j]; } } - b64_12bitTable = function () { return b64_12bit; }; + b64_12bitTable = function() { return b64_12bit; }; return b64_12bit; }; -function uint8ToBase64 (rawData) { +function uint8ToBase64(rawData) { var numBytes = rawData.byteLength; - var output = ''; + var output=""; var segment; var table = b64_12bitTable(); - for (var i = 0; i < numBytes - 2; i += 3) { - segment = (rawData[i] << 16) + (rawData[i + 1] << 8) + rawData[i + 2]; + for (var i=0;i> 12]; output += table[segment & 0xfff]; } - if (numBytes - i === 2) { - segment = (rawData[i] << 16) + (rawData[i + 1] << 8); + if (numBytes - i == 2) { + segment = (rawData[i] << 16) + (rawData[i+1] << 8); output += table[segment >> 12]; output += b64_6bit[(segment & 0xfff) >> 6]; output += '='; - } else if (numBytes - i === 1) { + } else if (numBytes - i == 1) { segment = (rawData[i] << 16); output += table[segment >> 12]; output += '=='; @@ -506,7 +511,7 @@ define("cordova/builder", function(require, exports, module) { var utils = require('cordova/utils'); -function each (objects, func, context) { +function each(objects, func, context) { for (var prop in objects) { if (objects.hasOwnProperty(prop)) { func.apply(context, [objects[prop], prop]); @@ -514,7 +519,7 @@ function each (objects, func, context) { } } -function clobber (obj, key, value) { +function clobber(obj, key, value) { exports.replaceHookForTesting(obj, key); var needsProperty = false; try { @@ -524,15 +529,15 @@ function clobber (obj, key, value) { } // Getters can only be overridden by getters. if (needsProperty || obj[key] !== value) { - utils.defineGetter(obj, key, function () { + utils.defineGetter(obj, key, function() { return value; }); } } -function assignOrWrapInDeprecateGetter (obj, key, value, message) { +function assignOrWrapInDeprecateGetter(obj, key, value, message) { if (message) { - utils.defineGetter(obj, key, function () { + utils.defineGetter(obj, key, function() { console.log(message); delete obj[key]; clobber(obj, key, value); @@ -543,7 +548,7 @@ function assignOrWrapInDeprecateGetter (obj, key, value, message) { } } -function include (parent, objects, clobber, merge) { +function include(parent, objects, clobber, merge) { each(objects, function (obj, key) { try { var result = obj.path ? require(obj.path) : {}; @@ -563,7 +568,7 @@ function include (parent, objects, clobber, merge) { result = parent[key]; } else { // Overwrite if not currently defined. - if (typeof parent[key] === 'undefined') { + if (typeof parent[key] == 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); } else { // Set result to what already exists, so we can build children into it if they exist. @@ -574,7 +579,7 @@ function include (parent, objects, clobber, merge) { if (obj.children) { include(result, obj.children, clobber, merge); } - } catch (e) { + } catch(e) { utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"'); } }); @@ -587,7 +592,7 @@ function include (parent, objects, clobber, merge) { * @param target Object to merge properties into. * @param src Object to merge properties from. */ -function recursiveMerge (target, src) { +function recursiveMerge(target, src) { for (var prop in src) { if (src.hasOwnProperty(prop)) { if (target.prototype && target.prototype.constructor === target) { @@ -604,26 +609,26 @@ function recursiveMerge (target, src) { } } -exports.buildIntoButDoNotClobber = function (objects, target) { +exports.buildIntoButDoNotClobber = function(objects, target) { include(target, objects, false, false); }; -exports.buildIntoAndClobber = function (objects, target) { +exports.buildIntoAndClobber = function(objects, target) { include(target, objects, true, false); }; -exports.buildIntoAndMerge = function (objects, target) { +exports.buildIntoAndMerge = function(objects, target) { include(target, objects, true, true); }; exports.recursiveMerge = recursiveMerge; exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter; -exports.replaceHookForTesting = function () {}; +exports.replaceHookForTesting = function() {}; }); // file: src/common/channel.js define("cordova/channel", function(require, exports, module) { -var utils = require('cordova/utils'); -var nextGuid = 1; +var utils = require('cordova/utils'), + nextGuid = 1; /** * Custom pub-sub "channel" that can have functions subscribed to it @@ -663,7 +668,7 @@ var nextGuid = 1; * @constructor * @param type String the channel name */ -var Channel = function (type, sticky) { +var Channel = function(type, sticky) { this.type = type; // Map of guid -> function. this.handlers = {}; @@ -676,73 +681,72 @@ var Channel = function (type, sticky) { // Function that is called when the first listener is subscribed, or when // the last listener is unsubscribed. this.onHasSubscribersChange = null; -}; -var channel = { - /** - * Calls the provided function only after all of the channels specified - * have been fired. All channels must be sticky channels. - */ - join: function (h, c) { - var len = c.length; - var i = len; - var f = function () { - if (!(--i)) h(); - }; - for (var j = 0; j < len; j++) { - if (c[j].state === 0) { - throw Error('Can only use join with sticky channels.'); +}, + channel = { + /** + * Calls the provided function only after all of the channels specified + * have been fired. All channels must be sticky channels. + */ + join: function(h, c) { + var len = c.length, + i = len, + f = function() { + if (!(--i)) h(); + }; + for (var j=0; j - if (strategy === 'r') { + if (strategy == 'r') { continue; } var symbolPath = symbolList[i + 2]; @@ -1515,9 +1523,9 @@ exports.mapModules = function (context) { var parentObj = prepareNamespace(namespace, context); var target = parentObj[lastName]; - if (strategy === 'm' && target) { + if (strategy == 'm' && target) { builder.recursiveMerge(target, module); - } else if ((strategy === 'd' && !target) || (strategy !== 'd')) { + } else if ((strategy == 'd' && !target) || (strategy != 'd')) { if (!(symbolPath in origSymbols)) { origSymbols[symbolPath] = target; } @@ -1526,7 +1534,7 @@ exports.mapModules = function (context) { } }; -exports.getOriginalSymbol = function (context, symbolPath) { +exports.getOriginalSymbol = function(context, symbolPath) { var origSymbols = context.CDV_origSymbols; if (origSymbols && (symbolPath in origSymbols)) { return origSymbols[symbolPath]; @@ -1541,21 +1549,22 @@ exports.getOriginalSymbol = function (context, symbolPath) { exports.reset(); + }); // file: src/common/modulemapper_b.js define("cordova/modulemapper_b", function(require, exports, module) { -var builder = require('cordova/builder'); -var symbolList = []; -var deprecationMap; +var builder = require('cordova/builder'), + symbolList = [], + deprecationMap; -exports.reset = function () { +exports.reset = function() { symbolList = []; deprecationMap = {}; }; -function addEntry (strategy, moduleName, symbolPath, opt_deprecationMessage) { +function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) { symbolList.push(strategy, moduleName, symbolPath); if (opt_deprecationMessage) { deprecationMap[symbolPath] = opt_deprecationMessage; @@ -1563,35 +1572,35 @@ function addEntry (strategy, moduleName, symbolPath, opt_deprecationMessage) { } // Note: Android 2.3 does have Function.bind(). -exports.clobbers = function (moduleName, symbolPath, opt_deprecationMessage) { +exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) { addEntry('c', moduleName, symbolPath, opt_deprecationMessage); }; -exports.merges = function (moduleName, symbolPath, opt_deprecationMessage) { +exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) { addEntry('m', moduleName, symbolPath, opt_deprecationMessage); }; -exports.defaults = function (moduleName, symbolPath, opt_deprecationMessage) { +exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) { addEntry('d', moduleName, symbolPath, opt_deprecationMessage); }; -exports.runs = function (moduleName) { +exports.runs = function(moduleName) { addEntry('r', moduleName, null); }; -function prepareNamespace (symbolPath, context) { +function prepareNamespace(symbolPath, context) { if (!symbolPath) { return context; } var parts = symbolPath.split('.'); var cur = context; - for (var i = 0, part; part = parts[i]; ++i) { // eslint-disable-line no-cond-assign + for (var i = 0, part; part = parts[i]; ++i) { cur = cur[part] = cur[part] || {}; } return cur; } -exports.mapModules = function (context) { +exports.mapModules = function(context) { var origSymbols = {}; context.CDV_origSymbols = origSymbols; for (var i = 0, len = symbolList.length; i < len; i += 3) { @@ -1599,7 +1608,7 @@ exports.mapModules = function (context) { var moduleName = symbolList[i + 1]; var module = require(moduleName); // - if (strategy === 'r') { + if (strategy == 'r') { continue; } var symbolPath = symbolList[i + 2]; @@ -1611,9 +1620,9 @@ exports.mapModules = function (context) { var parentObj = prepareNamespace(namespace, context); var target = parentObj[lastName]; - if (strategy === 'm' && target) { + if (strategy == 'm' && target) { builder.recursiveMerge(target, module); - } else if ((strategy === 'd' && !target) || (strategy !== 'd')) { + } else if ((strategy == 'd' && !target) || (strategy != 'd')) { if (!(symbolPath in origSymbols)) { origSymbols[symbolPath] = target; } @@ -1622,7 +1631,7 @@ exports.mapModules = function (context) { } }; -exports.getOriginalSymbol = function (context, symbolPath) { +exports.getOriginalSymbol = function(context, symbolPath) { var origSymbols = context.CDV_origSymbols; if (origSymbols && (symbolPath in origSymbols)) { return origSymbols[symbolPath]; @@ -1637,9 +1646,10 @@ exports.getOriginalSymbol = function (context, symbolPath) { exports.reset(); + }); -// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/platform.js +// file: /Users/maj/src/cordova-android/cordova-js-src/platform.js define("cordova/platform", function(require, exports, module) { // The last resume event that was received that had the result of a plugin call. @@ -1749,7 +1759,7 @@ function onMessageFromNative(msg) { }); -// file: /Users/jbowser/cordova/cordova-android/cordova-js-src/plugin/android/app.js +// file: /Users/maj/src/cordova-android/cordova-js-src/plugin/android/app.js define("cordova/plugin/android/app", function(require, exports, module) { var exec = require('cordova/exec'); @@ -1846,11 +1856,12 @@ module.exports = { define("cordova/pluginloader", function(require, exports, module) { var modulemapper = require('cordova/modulemapper'); +var urlutil = require('cordova/urlutil'); // Helper function to inject a