is 1 or more portions //is 1 or more portions // is any portion other than ., .., '', or ** //
is . or '' // // **/.. is *brutal* for filesystem walking performance, because // it effectively resets the recursive walk each time it occurs, // and ** cannot be reduced out by a .. pattern part like a regexp // or most strings (other than .., ., and '') can be. // // /**/..//
/
-> { /..//
/
, /**//
/
} // // -> /// //../
-> /// **/**/ -> **/ // // **/*/ -> */**/ <== not valid because ** doesn't follow // this WOULD be allowed if ** did follow symlinks, or * didn't firstPhasePreProcess(globParts) { let didSomething = false; do { didSomething = false; for (let parts of globParts) { let gs = -1; while (-1 !== (gs = parts.indexOf("**", gs + 1))) { let gss = gs; while (parts[gss + 1] === "**") { gss++; } if (gss > gs) { parts.splice(gs + 1, gss - gs); } let next = parts[gs + 1]; const p = parts[gs + 2]; const p2 = parts[gs + 3]; if (next !== "..") continue; if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") { continue; } didSomething = true; parts.splice(gs, 1); const other = parts.slice(0); other[gs] = "**"; globParts.push(other); gs--; } if (!this.preserveMultipleSlashes) { for (let i = 1; i < parts.length - 1; i++) { const p = parts[i]; if (i === 1 && p === "" && parts[0] === "") continue; if (p === "." || p === "") { didSomething = true; parts.splice(i, 1); i--; } } if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { didSomething = true; parts.pop(); } } let dd = 0; while (-1 !== (dd = parts.indexOf("..", dd + 1))) { const p = parts[dd - 1]; if (p && p !== "." && p !== ".." && p !== "**") { didSomething = true; const needDot = dd === 1 && parts[dd + 1] === "**"; const splin = needDot ? ["."] : []; parts.splice(dd - 1, 2, ...splin); if (parts.length === 0) parts.push(""); dd -= 2; } } } } while (didSomething); return globParts; } // second phase: multi-pattern dedupes // { /*/, //
} -> /*/// { /, /} -> /// { /**/, /} -> /**/// // { /**/, /**//
} -> /**/// ^-- not valid because ** doens't follow symlinks secondPhasePreProcess(globParts) { for (let i = 0; i < globParts.length - 1; i++) { for (let j = i + 1; j < globParts.length; j++) { const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes); if (matched) { globParts[i] = []; globParts[j] = matched; break; } } } return globParts.filter((gs) => gs.length); } partsMatch(a, b, emptyGSMatch = false) { let ai = 0; let bi = 0; let result = []; let which = ""; while (ai < a.length && bi < b.length) { if (a[ai] === b[bi]) { result.push(which === "b" ? b[bi] : a[ai]); ai++; bi++; } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) { result.push(a[ai]); ai++; } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) { result.push(b[bi]); bi++; } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") { if (which === "b") return false; which = "a"; result.push(a[ai]); ai++; bi++; } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") { if (which === "a") return false; which = "b"; result.push(b[bi]); ai++; bi++; } else { return false; } } return a.length === b.length && result; } parseNegate() { if (this.nonegate) return; const pattern = this.pattern; let negate = false; let negateOffset = 0; for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) { negate = !negate; negateOffset++; } if (negateOffset) this.pattern = pattern.slice(negateOffset); this.negate = negate; } // set partial to true to test if, for example, // "/a/b" matches the start of "/*/b/*/d" // Partial means, if you run out of file before you run // out of pattern, then that's fine, as long as all // the parts match. matchOne(file, pattern, partial = false) { const options2 = this.options; if (this.isWindows) { const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]); const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]); const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]); const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]); const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0; const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0; if (typeof fdi === "number" && typeof pdi === "number") { const [fd, pd] = [file[fdi], pattern[pdi]]; if (fd.toLowerCase() === pd.toLowerCase()) { pattern[pdi] = fd; if (pdi > fdi) { pattern = pattern.slice(pdi); } else if (fdi > pdi) { file = file.slice(fdi); } } } } const { optimizationLevel = 1 } = this.options; if (optimizationLevel >= 2) { file = this.levelTwoFileOptimize(file); } this.debug("matchOne", this, { file, pattern }); this.debug("matchOne", file.length, pattern.length); for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { this.debug("matchOne loop"); var p = pattern[pi]; var f = file[fi]; this.debug(pattern, p, f); if (p === false) { return false; } if (p === GLOBSTAR) { this.debug("GLOBSTAR", [pattern, p, f]); var fr = fi; var pr = pi + 1; if (pr === pl) { this.debug("** at the end"); for (; fi < fl; fi++) { if (file[fi] === "." || file[fi] === ".." || !options2.dot && file[fi].charAt(0) === ".") return false; } return true; } while (fr < fl) { var swallowee = file[fr]; this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { this.debug("globstar found match!", fr, fl, swallowee); return true; } else { if (swallowee === "." || swallowee === ".." || !options2.dot && swallowee.charAt(0) === ".") { this.debug("dot detected!", file, fr, pattern, pr); break; } this.debug("globstar swallow a segment, and continue"); fr++; } } if (partial) { this.debug("\n>>> no match, partial?", file, fr, pattern, pr); if (fr === fl) { return true; } } return false; } let hit; if (typeof p === "string") { hit = f === p; this.debug("string match", p, f, hit); } else { hit = p.test(f); this.debug("pattern match", p, f, hit); } if (!hit) return false; } if (fi === fl && pi === pl) { return true; } else if (fi === fl) { return partial; } else if (pi === pl) { return fi === fl - 1 && file[fi] === ""; } else { throw new Error("wtf?"); } } braceExpand() { return braceExpand(this.pattern, this.options); } parse(pattern) { assertValidPattern(pattern); const options2 = this.options; if (pattern === "**") return GLOBSTAR; if (pattern === "") return ""; let m; let fastTest = null; if (m = pattern.match(starRE)) { fastTest = options2.dot ? starTestDot : starTest; } else if (m = pattern.match(starDotExtRE)) { fastTest = (options2.nocase ? options2.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options2.dot ? starDotExtTestDot : starDotExtTest)(m[1]); } else if (m = pattern.match(qmarksRE)) { fastTest = (options2.nocase ? options2.dot ? qmarksTestNocaseDot : qmarksTestNocase : options2.dot ? qmarksTestDot : qmarksTest)(m); } else if (m = pattern.match(starDotStarRE)) { fastTest = options2.dot ? starDotStarTestDot : starDotStarTest; } else if (m = pattern.match(dotStarRE)) { fastTest = dotStarTest; } const re = AST.fromGlob(pattern, this.options).toMMPattern(); if (fastTest && typeof re === "object") { Reflect.defineProperty(re, "test", { value: fastTest }); } return re; } makeRe() { if (this.regexp || this.regexp === false) return this.regexp; const set2 = this.set; if (!set2.length) { this.regexp = false; return this.regexp; } const options2 = this.options; const twoStar = options2.noglobstar ? star2 : options2.dot ? twoStarDot : twoStarNoDot; const flags = new Set(options2.nocase ? ["i"] : []); let re = set2.map((pattern) => { const pp = pattern.map((p) => { if (p instanceof RegExp) { for (const f of p.flags.split("")) flags.add(f); } return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src; }); pp.forEach((p, i) => { const next = pp[i + 1]; const prev = pp[i - 1]; if (p !== GLOBSTAR || prev === GLOBSTAR) { return; } if (prev === void 0) { if (next !== void 0 && next !== GLOBSTAR) { pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next; } else { pp[i] = twoStar; } } else if (next === void 0) { pp[i - 1] = prev + "(?:\\/|" + twoStar + ")?"; } else if (next !== GLOBSTAR) { pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next; pp[i + 1] = GLOBSTAR; } }); return pp.filter((p) => p !== GLOBSTAR).join("/"); }).join("|"); const [open, close] = set2.length > 1 ? ["(?:", ")"] : ["", ""]; re = "^" + open + re + close + "$"; if (this.negate) re = "^(?!" + re + ").+$"; try { this.regexp = new RegExp(re, [...flags].join("")); } catch (ex) { this.regexp = false; } return this.regexp; } slashSplit(p) { if (this.preserveMultipleSlashes) { return p.split("/"); } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { return ["", ...p.split(/\/+/)]; } else { return p.split(/\/+/); } } match(f, partial = this.partial) { this.debug("match", f, this.pattern); if (this.comment) { return false; } if (this.empty) { return f === ""; } if (f === "/" && partial) { return true; } const options2 = this.options; if (this.isWindows) { f = f.split("\\").join("/"); } const ff = this.slashSplit(f); this.debug(this.pattern, "split", ff); const set2 = this.set; this.debug(this.pattern, "set", set2); let filename = ff[ff.length - 1]; if (!filename) { for (let i = ff.length - 2; !filename && i >= 0; i--) { filename = ff[i]; } } for (let i = 0; i < set2.length; i++) { const pattern = set2[i]; let file = ff; if (options2.matchBase && pattern.length === 1) { file = [filename]; } const hit = this.matchOne(file, pattern, partial); if (hit) { if (options2.flipNegate) { return true; } return !this.negate; } } if (options2.flipNegate) { return false; } return this.negate; } static defaults(def) { return minimatch.defaults(def).Minimatch; } }; minimatch.AST = AST; minimatch.Minimatch = Minimatch; minimatch.escape = escape; minimatch.unescape = unescape; // src/utils/fs.ts function isSupportedFileType(path2) { return path2.split(".").pop().toLowerCase() === "md"; } function pathMatchesPattern(path2, pattern) { return path2.startsWith(pattern) || minimatch(path2, pattern); } // src/algorithms/osr/osr-note-graph.ts var OsrNoteGraph = class { constructor(vaultNoteLinkInfoFinder) { // Key: targetFilename // Value: Map // This is the number of links from sourceFilename to targetFilename // For simplicity, we just store the filename without the directory or filename extension this.incomingLinks = {}; this.pageranks = {}; this.vaultNoteLinkInfoFinder = vaultNoteLinkInfoFinder; this.reset(); } reset() { this.incomingLinks = {}; this.pageranks = {}; graph.reset(); } processLinks(path2) { if (this.incomingLinks[path2] === void 0) { this.incomingLinks[path2] = []; } const targetLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(path2) || /* c8 ignore next */ {}; for (const targetPath in targetLinks) { if (this.incomingLinks[targetPath] === void 0) this.incomingLinks[targetPath] = []; if (isSupportedFileType(targetPath)) { const linkCount = targetLinks[targetPath]; this.incomingLinks[targetPath].push({ sourcePath: path2, linkCount }); graph.link(path2, targetPath, linkCount); } } } calcNoteLinkStat(notePath, noteEaseList) { let linkTotal = 0, linkPGTotal = 0, totalLinkCount = 0; for (const statObj of this.incomingLinks[notePath] || /* c8 ignore next */ []) { const ease = noteEaseList.getEaseByPath(statObj.sourcePath); if (ease) { linkTotal += statObj.linkCount * this.pageranks[statObj.sourcePath] * ease; linkPGTotal += this.pageranks[statObj.sourcePath] * statObj.linkCount; totalLinkCount += statObj.linkCount; } } const outgoingLinks = this.vaultNoteLinkInfoFinder.getResolvedTargetLinksForNotePath(notePath) || /* c8 ignore next */ {}; for (const outgoingLink in outgoingLinks) { const ease = noteEaseList.getEaseByPath(outgoingLink); const linkCount = outgoingLinks[outgoingLink]; const pageRank = this.pageranks[outgoingLink]; if (ease) { linkTotal += linkCount * pageRank * ease; linkPGTotal += pageRank * linkCount; totalLinkCount += linkCount; } } return { linkTotal, linkPGTotal, totalLinkCount }; } generatePageRanks() { graph.rank(0.85, 1e-6, (node, rank2) => { this.pageranks[node] = rank2 * 1e4; }); } }; // src/data-store-algorithm/data-store-algorithm.ts var DataStoreAlgorithm = class _DataStoreAlgorithm { static getInstance() { if (!_DataStoreAlgorithm.instance) { throw new Error("there is no DataStoreAlgorithm instance."); } return _DataStoreAlgorithm.instance; } }; // src/data-stores/base/data-store.ts var DataStore = class _DataStore { static getInstance() { if (!_DataStore.instance) { throw new Error("there is no DataStore instance."); } return _DataStore.instance; } }; // src/topic-path.ts var TopicPath = class _TopicPath { constructor(path2) { if (path2 == null) throw "null path"; if (path2.some((str) => str.includes("/"))) throw "path entries must not contain '/'"; this.path = path2; } get hasPath() { return this.path.length > 0; } get isEmptyPath() { return !this.hasPath; } static get emptyPath() { return new _TopicPath([]); } shift() { if (this.isEmptyPath) throw "can't shift an empty path"; return this.path.shift(); } clone() { return new _TopicPath([...this.path]); } formatAsTag() { if (this.isEmptyPath) throw "Empty path"; const result = "#" + this.path.join("/"); return result; } static getTopicPathOfFile(noteFile, settings) { let deckPath = []; let result = _TopicPath.emptyPath; if (settings.convertFoldersToDecks) { deckPath = noteFile.path.split("/"); deckPath.pop(); if (deckPath.length != 0) { result = new _TopicPath(deckPath); } } else { const tagList = this.getTopicPathsFromTagList( noteFile.getAllTagsFromCache() ); outer: for (const tagToReview of this.getTopicPathsFromTagList( settings.flashcardTags )) { for (const tag of tagList) { if (tagToReview.isSameOrAncestorOf(tag)) { result = tag; break outer; } } } } return result; } isSameOrAncestorOf(topicPath) { if (this.isEmptyPath) return topicPath.isEmptyPath; if (this.path.length > topicPath.path.length) return false; for (let i = 0; i < this.path.length; i++) { if (this.path[i] != topicPath.path[i]) return false; } return true; } static getTopicPathFromCardText(cardText) { var _a2; const path2 = (_a2 = cardText.trimStart().match(OBSIDIAN_TAG_AT_STARTOFLINE_REGEX)) == null ? void 0 : _a2.slice(-1)[0]; return (path2 == null ? void 0 : path2.length) > 0 ? _TopicPath.getTopicPathFromTag(path2) : null; } static getTopicPathsFromTagList(tagList) { const result = []; for (const tag of tagList) { if (this.isValidTag(tag)) result.push(_TopicPath.getTopicPathFromTag(tag)); } return result; } static isValidTag(tag) { if (tag == null || tag.length == 0) return false; if (tag[0] != "#") return false; if (tag.length == 1) return false; return true; } static getTopicPathFromTag(tag) { if (tag == null || tag.length == 0) throw "Null/empty tag"; if (tag[0] != "#") throw "Tag must start with #"; if (tag.length == 1) throw "Invalid tag"; const path2 = tag.replace("#", "").split("/").filter((str) => str); return new _TopicPath(path2); } static getFolderPathFromFilename(noteFile, settings) { let result = _TopicPath.emptyPath; if (settings.convertFoldersToDecks) { const deckPath = noteFile.path.split("/"); deckPath.pop(); if (deckPath.length != 0) { result = new _TopicPath(deckPath); } } return result; } }; var TopicPathList = class _TopicPathList { constructor(list, lineNum = null) { if (list == null) throw "TopicPathList null"; this.list = list; this.lineNum = lineNum; } get length() { return this.list.length; } isAnyElementSameOrAncestorOf(topicPath) { return this.list.some((item) => item.isSameOrAncestorOf(topicPath)); } formatPsv() { return this.format("|"); } format(sep2) { return this.list.map((topicPath) => topicPath.formatAsTag()).join(sep2); } static empty() { return new _TopicPathList([]); } static fromPsv(str, lineNum) { const result = _TopicPathList.convertTagListToTopicPathList(str.split("|")); result.lineNum = lineNum; return result; } // // tagList is a list of tags such as: // ["#flashcards/computing", "#boring-stuff", "#news-worthy"] // validTopicPathList is a list of valid tags, such as those from settings.flashcardTags,E.g. // ["#flashcards"] // // This returns a filtered version of tagList, containing only topic paths that are considered valid. // Validity is defined as "isAnyElementSameOrAncestorOf", and "#flashcards" is considered the ancestor of // "#flashcards/computing". // // Therefore this would return: // "#flashcards/computing" (but not "#boring-stuff" or "#news-worthy") // static filterValidTopicPathsFromTagList(list, validTopicPathList, lineNum = null) { const result = []; for (const tag of list.list) { if (validTopicPathList.isAnyElementSameOrAncestorOf(tag)) result.push(tag); } return new _TopicPathList(result, lineNum); } static convertTagListToTopicPathList(tagList) { const result = []; for (const tag of tagList) { if (TopicPath.isValidTag(tag)) result.push(TopicPath.getTopicPathFromTag(tag)); } return new _TopicPathList(result); } }; var TopicPathWithWs = class { constructor(topicPath, preWhitespace, postWhitespace) { if (!topicPath || topicPath.isEmptyPath) throw "topicPath null"; this.topicPath = topicPath; this.preWhitespace = preWhitespace; this.postWhitespace = postWhitespace; } formatWithWs() { return `${this.preWhitespace}${this.topicPath.formatAsTag()}${this.postWhitespace}`; } }; // src/flashcard-review-sequencer.ts var DeckStats = class { constructor(dueCount, newCount, totalCount) { this.dueCount = dueCount; this.newCount = newCount; this.totalCount = totalCount; } }; var FlashcardReviewSequencer = class { constructor(reviewMode, cardSequencer, settings, srsAlgorithm, questionPostponementList, dueDateFlashcardHistogram) { this.reviewMode = reviewMode; this.cardSequencer = cardSequencer; this.settings = settings; this.srsAlgorithm = srsAlgorithm; this.questionPostponementList = questionPostponementList; this.dueDateFlashcardHistogram = dueDateFlashcardHistogram; } get hasCurrentCard() { return this.cardSequencer.currentCard != null; } get currentCard() { return this.cardSequencer.currentCard; } get currentQuestion() { var _a2; return (_a2 = this.currentCard) == null ? void 0 : _a2.question; } get currentDeck() { return this.cardSequencer.currentDeck; } get currentNote() { return this.currentQuestion.note; } // originalDeckTree isn't modified by the review process // Only remainingDeckTree setDeckTree(originalDeckTree, remainingDeckTree) { this.cardSequencer.setBaseDeck(remainingDeckTree); this._originalDeckTree = originalDeckTree; this.remainingDeckTree = remainingDeckTree; this.setCurrentDeck(TopicPath.emptyPath); } setCurrentDeck(topicPath) { this.cardSequencer.setIteratorTopicPath(topicPath); this.cardSequencer.nextCard(); } get originalDeckTree() { return this._originalDeckTree; } getDeckStats(topicPath) { const totalCount = this._originalDeckTree.getDeck(topicPath).getDistinctCardCount(2 /* All */, true); const remainingDeck = this.remainingDeckTree.getDeck(topicPath); const newCount = remainingDeck.getDistinctCardCount(0 /* NewCard */, true); const dueCount = remainingDeck.getDistinctCardCount(1 /* DueCard */, true); return new DeckStats(dueCount, newCount, totalCount); } skipCurrentCard() { this.cardSequencer.deleteCurrentQuestionFromAllDecks(); } deleteCurrentCard() { this.cardSequencer.deleteCurrentCardFromAllDecks(); } async processReview(response) { switch (this.reviewMode) { case 1 /* Review */: await this.processReview_ReviewMode(response); break; case 0 /* Cram */: await this.processReview_CramMode(response); break; } } async processReview_ReviewMode(response) { if (response != 3 /* Reset */ || this.currentCard.hasSchedule) { this.currentCard.scheduleInfo = this.determineCardSchedule(response, this.currentCard); await DataStore.getInstance().questionWriteSchedule(this.currentQuestion); } if (response == 3 /* Reset */) { this.cardSequencer.moveCurrentCardToEndOfList(); this.cardSequencer.nextCard(); } else { if (this.settings.burySiblingCards) { await this.burySiblingCards(); this.cardSequencer.deleteCurrentQuestionFromAllDecks(); } else { this.deleteCurrentCard(); } } } async burySiblingCards() { const remaining = this.currentDeck.getQuestionCardCount(this.currentQuestion); if (remaining > 1) { this.questionPostponementList.add(this.currentQuestion); await this.questionPostponementList.write(); } } async processReview_CramMode(response) { if (response == 0 /* Easy */) this.deleteCurrentCard(); else { this.cardSequencer.moveCurrentCardToEndOfList(); this.cardSequencer.nextCard(); } } determineCardSchedule(response, card) { let result; if (response == 3 /* Reset */) { result = this.srsAlgorithm.cardGetResetSchedule(); } else { if (card.hasSchedule) { result = this.srsAlgorithm.cardCalcUpdatedSchedule( response, card.scheduleInfo, this.dueDateFlashcardHistogram ); } else { const currentNote = card.question.note; result = this.srsAlgorithm.cardGetNewSchedule( response, currentNote.filePath, this.dueDateFlashcardHistogram ); } } return result; } async updateCurrentQuestionText(text) { const q = this.currentQuestion.questionText; q.actualQuestion = text; await DataStore.getInstance().questionWrite(this.currentQuestion); } }; // src/deck.ts var Deck2 = class _Deck { constructor(deckName, parent) { this.deckName = deckName; this.newFlashcards = []; this.dueFlashcards = []; this.subdecks = []; this.parent = parent; } getCardCount(cardListType, includeSubdeckCounts) { let result = 0; if (cardListType == 0 /* NewCard */ || cardListType == 2 /* All */) result += this.newFlashcards.length; if (cardListType == 1 /* DueCard */ || cardListType == 2 /* All */) result += this.dueFlashcards.length; if (includeSubdeckCounts) { for (const deck of this.subdecks) { result += deck.getCardCount(cardListType, includeSubdeckCounts); } } return result; } getDistinctCardCount(cardListType, includeSubdeckCounts) { const cardList = this.getFlattenedCardArray(cardListType, includeSubdeckCounts); const distinctCardSet = new Set(cardList); return distinctCardSet.size; } getFlattenedCardArray(cardListType, includeSubdeckCounts) { let result = []; switch (cardListType) { case 0 /* NewCard */: result = this.newFlashcards; break; case 1 /* DueCard */: result = this.dueFlashcards; break; case 2 /* All */: result = this.newFlashcards.concat(this.dueFlashcards); } if (includeSubdeckCounts) { for (const subdeck of this.subdecks) { result = result.concat( subdeck.getFlattenedCardArray(cardListType, includeSubdeckCounts) ); } } return result; } // // Returns a count of the number of this question's cards are present in this deck. // (The returned value would be <= question.cards.length) // getQuestionCardCount(question) { let result = 0; result += this.getQuestionCardCountForCardListType(question, this.newFlashcards); result += this.getQuestionCardCountForCardListType(question, this.dueFlashcards); return result; } getQuestionCardCountForCardListType(question, cards) { let result = 0; for (let i = 0; i < cards.length; i++) { if (Object.is(question, cards[i].question)) result++; } return result; } static get emptyDeck() { return new _Deck("Root", null); } get isRootDeck() { return this.parent == null; } getDeckByTopicTag(tag) { return this.getDeck(TopicPath.getTopicPathFromTag(tag)); } getDeck(topicPath) { return this._getOrCreateDeck(topicPath, false); } getOrCreateDeck(topicPath) { return this._getOrCreateDeck(topicPath, true); } _getOrCreateDeck(topicPath, createAllowed) { if (!topicPath.hasPath) { return this; } const t2 = topicPath.clone(); const deckName = t2.shift(); for (const subdeck of this.subdecks) { if (deckName === subdeck.deckName) { return subdeck._getOrCreateDeck(t2, createAllowed); } } let result = null; if (createAllowed) { const subdeck = new _Deck( deckName, this /* parent */ ); this.subdecks.push(subdeck); result = subdeck._getOrCreateDeck(t2, createAllowed); } return result; } getTopicPath() { const list = []; let deck = this; while (!deck.isRootDeck) { list.push(deck.deckName); deck = deck.parent; } return new TopicPath(list.reverse()); } getRootDeck() { let deck = this; while (!deck.isRootDeck) { deck = deck.parent; } return deck; } getCard(index, cardListType) { const cardList = this.getCardListForCardType(cardListType); return cardList[index]; } getCardListForCardType(cardListType) { return cardListType == 1 /* DueCard */ ? this.dueFlashcards : this.newFlashcards; } appendCard(topicPathList, cardObj) { if (topicPathList.list.length == 0) { this.appendCardToRootDeck(cardObj); } else { for (const topicPath of topicPathList.list) { this.appendCard_SingleTopic(topicPath, cardObj); } } } appendCardToRootDeck(cardObj) { this.appendCard_SingleTopic(TopicPath.emptyPath, cardObj); } appendCard_SingleTopic(topicPath, cardObj) { const deck = this.getOrCreateDeck(topicPath); const cardList = deck.getCardListForCardType(cardObj.cardListType); cardList.push(cardObj); } // // The question lists all the topics in which this card is included. // The topics are relative to the base deck, and this method must be called on that deck // deleteQuestionFromAllDecks(question, exceptionIfMissing) { for (const card of question.cards) { this.deleteCardFromAllDecks(card, exceptionIfMissing); } } deleteQuestion(question, exceptionIfMissing) { for (const card of question.cards) { this.deleteCardFromThisDeck(card, exceptionIfMissing); } } // // The card's question lists all the topics in which this card is included. // The topics are relative to the base deck, and this method must be called on that deck // deleteCardFromAllDecks(card, exceptionIfMissing) { for (const topicPath of card.question.topicPathList.list) { const deck = this.getDeck(topicPath); deck.deleteCardFromThisDeck(card, exceptionIfMissing); } } deleteCardFromThisDeck(card, exceptionIfMissing) { const newIdx = this.newFlashcards.indexOf(card); if (newIdx != -1) this.newFlashcards.splice(newIdx, 1); const dueIdx = this.dueFlashcards.indexOf(card); if (dueIdx != -1) this.dueFlashcards.splice(dueIdx, 1); if (newIdx == -1 && dueIdx == -1 && exceptionIfMissing) { throw `deleteCardFromThisDeck: Card: ${card.front} not found in deck: ${this.deckName}`; } } deleteCardAtIndex(index, cardListType) { const cardList = this.getCardListForCardType(cardListType); cardList.splice(index, 1); } toDeckArray() { const result = []; result.push(this); for (const subdeck of this.subdecks) { result.push(...subdeck.toDeckArray()); } return result; } sortSubdecksList() { this.subdecks.sort((a, b) => { if (a.deckName < b.deckName) { return -1; } else if (a.deckName > b.deckName) { return 1; } return 0; }); for (const deck of this.subdecks) { deck.sortSubdecksList(); } } debugLogToConsole(desc = null, indent = 0) { let str = desc != null ? `${desc}: ` : ""; console.log(str += this.toString(indent)); } toString(indent = 0) { let result = ""; let indentStr = " ".repeat(indent * 4); result += `${indentStr}${this.deckName}\r `; indentStr += " "; for (let i = 0; i < this.newFlashcards.length; i++) { const card = this.newFlashcards[i]; result += `${indentStr}New: ${i}: ${card.front}::${card.back}\r `; } for (let i = 0; i < this.dueFlashcards.length; i++) { const card = this.dueFlashcards[i]; const s = card.isDue ? "Due" : "Not due"; result += `${indentStr}${s}: ${i}: ${card.front}::${card.back}\r `; } for (const subdeck of this.subdecks) { result += subdeck.toString(indent + 1); } return result; } clone() { return this.copyWithCardFilter(() => true); } copyWithCardFilter(predicate, parent = null) { const result = new _Deck(this.deckName, parent); result.newFlashcards = [...this.newFlashcards.filter((card) => predicate(card))]; result.dueFlashcards = [...this.dueFlashcards.filter((card) => predicate(card))]; for (const s of this.subdecks) { const newParent = result; const newDeck = s.copyWithCardFilter(predicate, newParent); result.subdecks.push(newDeck); } return result; } static otherListType(cardListType) { let result; if (cardListType == 0 /* NewCard */) result = 1 /* DueCard */; else if (cardListType == 1 /* DueCard */) result = 0 /* NewCard */; else throw "Invalid cardListType"; return result; } }; var DeckTreeFilter = class { static filterForReviewableCards(reviewableDeckTree) { return reviewableDeckTree.copyWithCardFilter((card) => !card.question.hasEditLaterTag); } static filterForRemainingCards(questionPostponementList, deckTree, reviewMode) { return deckTree.copyWithCardFilter( (card) => (reviewMode == 0 /* Cram */ || card.isNew || card.isDue) && !questionPostponementList.includes(card.question) ); } }; // src/utils/types.ts function getTypedObjectEntries(obj) { return Object.entries(obj); } var getKeysPreserveType = Object.keys; // src/utils/numbers.ts var ValueCountDict = class { constructor() { this.dict = {}; } // Record clearCountIfMissing(value) { if (!this.hasValue(value)) this.dict[value] = 0; } hasValue(value) { return Object.prototype.hasOwnProperty.call(this.dict, value); } incrementCount(value) { this.clearCountIfMissing(value); this.dict[value]++; } getMaxValue() { return Math.max(...getKeysPreserveType(this.dict)) || 0; } getTotalOfValueMultiplyCount() { const v = getTypedObjectEntries(this.dict).map(([value, count]) => value * count).reduce((a, b) => a + b, 0) || 0; return v; } }; var RandomNumberProvider = class { getInteger(lowerBound, upperBound) { const range = upperBound - lowerBound + 1; return Math.floor(Math.random() * range) + lowerBound; } }; var StaticRandomNumberProvider = class { getInteger(lowerBound, upperBound) { if (lowerBound != this.expectedLowerBound || upperBound != this.expectedUpperBound) throw `lowerBound: A${lowerBound}/E${this.expectedLowerBound}, upperBound: A${upperBound}/E${this.expectedUpperBound}`; return this.next; } }; var WeightedRandomNumber = class _WeightedRandomNumber { constructor(provider) { this.provider = provider; } static create() { return new _WeightedRandomNumber(globalRandomNumberProvider); } // // weights is a dictionary: // first number - a key that can be returned // second number - the "bucket size" - this is a weight that influences the probability of the // first number being returned // // returns: // first number - one of the keys from the weights parameter // second number - an "index" value; 0 <= index < bucketSize getRandomValues(weights) { const total = _WeightedRandomNumber.calcTotalOfCount(weights); if (Object.values(weights).some((i) => !Number.isInteger(i) || i < 0)) throw "All weights must be positive integers"; const v = this.provider.getInteger(0, total - 1); let x = 0; for (const kvp in weights) { const [value, count] = [Number(kvp), weights[kvp]]; if (v < x + count) { const index = v - x; return [value, index]; } x += count; } throw ""; } static calcTotalOfCount(weights) { const total = getTypedObjectEntries(weights).map(([_, count]) => count).reduce((a, b) => a + b, 0) || 0; return total; } }; var globalRandomNumberProvider = new RandomNumberProvider(); var staticRandomNumberProvider = new StaticRandomNumberProvider(); // src/deck-tree-iterator.ts var CardOrder = /* @__PURE__ */ ((CardOrder2) => { CardOrder2[CardOrder2["NewFirstSequential"] = 0] = "NewFirstSequential"; CardOrder2[CardOrder2["NewFirstRandom"] = 1] = "NewFirstRandom"; CardOrder2[CardOrder2["DueFirstSequential"] = 2] = "DueFirstSequential"; CardOrder2[CardOrder2["DueFirstRandom"] = 3] = "DueFirstRandom"; CardOrder2[CardOrder2["EveryCardRandomDeckAndCard"] = 4] = "EveryCardRandomDeckAndCard"; return CardOrder2; })(CardOrder || {}); var DeckOrder = /* @__PURE__ */ ((DeckOrder2) => { DeckOrder2[DeckOrder2["PrevDeckComplete_Sequential"] = 0] = "PrevDeckComplete_Sequential"; DeckOrder2[DeckOrder2["PrevDeckComplete_Random"] = 1] = "PrevDeckComplete_Random"; return DeckOrder2; })(DeckOrder || {}); var SingleDeckIterator = class _SingleDeckIterator { get hasCurrentCard() { return this.cardIdx != null; } get currentCard() { let result = null; if (this.cardIdx != null) result = this.deck.getCard(this.cardIdx, this.cardListType); return result; } constructor(iteratorOrder) { this.iteratorOrder = iteratorOrder; this.preferredCardListType = _SingleDeckIterator.getCardListTypeForIterator( this.iteratorOrder ); this.weightedRandomNumber = WeightedRandomNumber.create(); } setDeck(deck) { this.deck = deck; this.setCardListType(null); } // // 0 <= cardIndex < newFlashcards.length + dueFlashcards.length // setNewOrDueCardIdx(cardIndex) { let cardListType = 0 /* NewCard */; let index = cardIndex; if (cardIndex >= this.deck.newFlashcards.length) { cardListType = 1 /* DueCard */; index = cardIndex - this.deck.newFlashcards.length; } this.setCardListType(cardListType, index); } setCardListType(cardListType, cardIdx = null) { this.cardListType = cardListType; this.cardIdx = cardIdx; } nextCard() { if (this.iteratorOrder.cardOrder == 4 /* EveryCardRandomDeckAndCard */) { this.nextRandomCard(); } else { if (this.cardListType == null) { this.setCardListType(this.preferredCardListType); } if (!this.nextCardWithinCurrentList()) { if (this.cardListType == this.preferredCardListType) { this.setCardListType(Deck2.otherListType(this.cardListType)); if (!this.nextCardWithinCurrentList()) { this.setCardListType(null); } } else { this.cardIdx = null; } } } return this.cardIdx != null; } nextRandomCard() { const newCount = this.deck.newFlashcards.length; const dueCount = this.deck.dueFlashcards.length; if (newCount + dueCount > 0) { const weights = {}; if (newCount > 0) weights[0 /* NewCard */] = newCount; if (dueCount > 0) weights[1 /* DueCard */] = dueCount; const [cardListType, index] = this.weightedRandomNumber.getRandomValues(weights); this.setCardListType(cardListType, index); } else { this.setCardListType(null); } } nextCardWithinCurrentList() { const cardList = this.deck.getCardListForCardType(this.cardListType); const result = cardList.length > 0; if (result) { switch (this.iteratorOrder.cardOrder) { case 2 /* DueFirstSequential */: case 0 /* NewFirstSequential */: this.cardIdx = 0; break; case 3 /* DueFirstRandom */: case 1 /* NewFirstRandom */: this.cardIdx = globalRandomNumberProvider.getInteger(0, cardList.length - 1); break; } } return result; } moveCurrentCardToEndOfList() { this.ensureCurrentCard(); const cardList = this.deck.getCardListForCardType(this.cardListType); if (cardList.length <= 1) return; const card = this.currentCard; this.deck.deleteCardAtIndex(this.cardIdx, this.cardListType); this.deck.appendCardToRootDeck(card); this.setNoCurrentCard(); } setNoCurrentCard() { this.cardIdx = null; } ensureCurrentCard() { if (this.cardIdx == null || this.cardListType == null) throw "no current card"; } static getCardListTypeForIterator(iteratorOrder) { let result = null; switch (iteratorOrder.cardOrder) { case 3 /* DueFirstRandom */: case 2 /* DueFirstSequential */: result = 1 /* DueCard */; break; case 1 /* NewFirstRandom */: case 0 /* NewFirstSequential */: result = 0 /* NewCard */; break; } return result; } }; var DeckTreeIterator = class _DeckTreeIterator { get hasCurrentCard() { return this.deckIdx != null && this.singleDeckIterator.hasCurrentCard; } get currentTopicPath() { var _a2; return (_a2 = this.currentDeck) == null ? void 0 : _a2.getTopicPath(); } get currentDeck() { if (this.deckIdx == null) return null; return this.deckArray[this.deckIdx]; } get currentCard() { let result = null; if (this.deckIdx != null && this.singleDeckIterator.hasCurrentCard) result = this.singleDeckIterator.currentCard; return result; } get currentQuestion() { var _a2; return (_a2 = this.currentCard) == null ? void 0 : _a2.question; } constructor(iteratorOrder, baseDeckTree) { this.singleDeckIterator = new SingleDeckIterator(iteratorOrder); this.iteratorOrder = iteratorOrder; this.weightedRandomNumber = WeightedRandomNumber.create(); this.setBaseDeck(baseDeckTree); } setBaseDeck(baseDeck) { this.baseDeckTree = baseDeck; this.singleDeckIterator.setNoCurrentCard(); } setIteratorTopicPath(topicPath) { const iteratorDeck = this.baseDeckTree.getDeck(topicPath); this.deckArray = _DeckTreeIterator.filterForDecksWithCards(iteratorDeck.toDeckArray()); this.setDeckIdx(null); } static filterForDecksWithCards(sourceArray) { const result = []; for (let idx = 0; idx < sourceArray.length; idx++) { const deck = sourceArray[idx]; const hasAnyCards = deck.getCardCount(2 /* All */, false) > 0; if (hasAnyCards) { result.push(deck); } } return result; } setDeckIdx(deckIdx) { this.deckIdx = deckIdx; if (deckIdx != null) this.singleDeckIterator.setDeck(this.deckArray[deckIdx]); } nextCard() { let result = false; if (this.hasCurrentCard) { this.baseDeckTree.deleteCardFromAllDecks(this.currentCard, true); } if (this.iteratorOrder.cardOrder == 4 /* EveryCardRandomDeckAndCard */) { result = this.nextCard_EveryCardRandomDeck(); } else { if (this.deckIdx == null) { this.chooseNextDeck(true); } while (this.deckIdx < this.deckArray.length) { if (this.singleDeckIterator.nextCard()) { result = true; break; } this.chooseNextDeck(false); } } if (!result) this.deckIdx = null; return result; } chooseNextDeck(firstTime) { switch (this.iteratorOrder.deckOrder) { case 0 /* PrevDeckComplete_Sequential */: this.deckIdx = firstTime ? 0 : this.deckIdx + 1; break; case 1 /* PrevDeckComplete_Random */: { const weights = {}; let hasDeck = false; for (let i = 0; i < this.deckArray.length; i++) { if (this.deckArray[i].getCardCount(2 /* All */, false)) { weights[i] = 1; hasDeck = true; } } if (hasDeck) { const [deckIdx, _] = this.weightedRandomNumber.getRandomValues(weights); this.deckIdx = deckIdx; } else { this.deckIdx = this.deckArray.length; } break; } } if (this.deckIdx < this.deckArray.length) { this.singleDeckIterator.setDeck(this.deckArray[this.deckIdx]); } } nextCard_EveryCardRandomDeck() { const weights = {}; for (let i = 0; i < this.deckArray.length; i++) { const cardCount = this.deckArray[i].getCardCount(2 /* All */, false); if (cardCount) { weights[i] = cardCount; } } if (Object.keys(weights).length == 0) return false; const [deckIdx, cardIdx] = this.weightedRandomNumber.getRandomValues(weights); this.setDeckIdx(deckIdx); this.singleDeckIterator.setNewOrDueCardIdx(cardIdx); return true; } deleteCurrentQuestionFromAllDecks() { this.singleDeckIterator.ensureCurrentCard(); this.baseDeckTree.deleteQuestionFromAllDecks(this.currentQuestion, false); this.singleDeckIterator.setNoCurrentCard(); return this.nextCard(); } deleteCurrentCardFromAllDecks() { this.singleDeckIterator.ensureCurrentCard(); this.baseDeckTree.deleteCardFromAllDecks(this.currentCard, true); this.singleDeckIterator.setNoCurrentCard(); return this.nextCard(); } moveCurrentCardToEndOfList() { this.singleDeckIterator.moveCurrentCardToEndOfList(); } removeCurrentDeckIfEmpty() { if (this.currentDeck.getCardCount(2 /* All */, false) == 0) { this.deckArray.splice(this.deckIdx, 1); if (this.deckIdx < this.deckArray.length) this.setDeckIdx(this.deckIdx); } } }; // src/stats.ts var Stats = class { constructor() { this.eases = new ValueCountDict(); this.intervals = new ValueCountDict(); this.delayedDays = new ValueCountDict(); this.newCount = 0; this.youngCount = 0; this.matureCount = 0; } get totalCount() { return this.youngCount + this.matureCount; } incrementNew() { this.newCount++; } update(delayedDays, interval, ease) { this.intervals.incrementCount(interval); this.eases.incrementCount(ease); this.delayedDays.incrementCount(delayedDays); if (interval >= 32) { this.matureCount++; } else { this.youngCount++; } } getMaxInterval() { return this.intervals.getMaxValue(); } getAverageInterval() { return this.intervals.getTotalOfValueMultiplyCount() / this.totalCount; } getAverageEases() { return this.eases.getTotalOfValueMultiplyCount() / this.totalCount; } }; // src/deck-tree-stats-calculator.ts var DeckTreeStatsCalculator = class { calculate(deckTree) { const iteratorOrder = { deckOrder: 0 /* PrevDeckComplete_Sequential */, cardOrder: 2 /* DueFirstSequential */ }; const iterator = new DeckTreeIterator(iteratorOrder, deckTree.clone()); const result = new Stats(); iterator.setIteratorTopicPath(TopicPath.emptyPath); while (iterator.nextCard()) { const card = iterator.currentCard; if (card.hasSchedule) { const schedule = card.scheduleInfo; result.update( schedule.delayedBeforeReviewDaysInt(), schedule.interval, schedule.latestEase ); } else { result.incrementNew(); } } return result; } }; // src/due-date-histogram.ts var _DueDateHistogram = class _DueDateHistogram { constructor(rec = null) { // Key - # of days in future // Value - Count of notes due this.dueDatesMap = /* @__PURE__ */ new Map(); this.dueDatesMap = /* @__PURE__ */ new Map(); if (rec != null) { Object.entries(rec).forEach(([key, value]) => { this.dueDatesMap.set(Number(key), value); }); } } get dueNotesCount() { let result = 0; if (this.dueDatesMap.has(_DueDateHistogram.dueNowNDays)) result = this.dueDatesMap.get(_DueDateHistogram.dueNowNDays); return result; } hasEntryForDays(days) { return this.dueDatesMap.has(days); } set(days, value) { this.dueDatesMap.set(days, value); } get(days) { return this.dueDatesMap.get(days); } increment(days) { let value = 0; if (this.dueDatesMap.has(days)) { value = this.dueDatesMap.get(days); } this.dueDatesMap.set(days, value + 1); } decrement(days) { let value = 0; if (this.dueDatesMap.has(days)) value = this.dueDatesMap.get(days); if (value > 0) { this.dueDatesMap.set(days, value - 1); } } findLeastUsedIntervalOverRange(originalInterval, fuzz) { if (!this.hasEntryForDays(originalInterval)) { return originalInterval; } let interval = originalInterval; outer: for (let i = 1; i <= fuzz; i++) { for (const ivl of [originalInterval - i, originalInterval + i]) { if (!this.hasEntryForDays(ivl)) { interval = ivl; break outer; } if (this.dueDatesMap.get(ivl) < this.dueDatesMap.get(interval)) interval = ivl; } } return interval; } }; // The key for dueDatesNotes is the number of days after today // therefore the key to lookup how many cards are due today is 0 _DueDateHistogram.dueNowNDays = 0; var DueDateHistogram = _DueDateHistogram; var NoteDueDateHistogram = class extends DueDateHistogram { calculateFromReviewDecksAndSort(reviewDecks, osrNoteGraph) { this.dueDatesMap = /* @__PURE__ */ new Map(); const today = globalDateProvider.today.valueOf(); reviewDecks.forEach((reviewDeck) => { reviewDeck.scheduledNotes.forEach((scheduledNote) => { const nDays = Math.ceil((scheduledNote.dueUnix - today) / TICKS_PER_DAY); this.increment(nDays); }); reviewDeck.sortNotesByDateAndImportance(osrNoteGraph.pageranks); }); } }; var CardDueDateHistogram = class extends DueDateHistogram { calculateFromDeckTree(deckTree) { this.dueDatesMap = /* @__PURE__ */ new Map(); const iteratorOrder = { deckOrder: 0 /* PrevDeckComplete_Sequential */, cardOrder: 2 /* DueFirstSequential */ }; const today = globalDateProvider.today.valueOf(); const iterator = new DeckTreeIterator(iteratorOrder, deckTree.clone()); iterator.setIteratorTopicPath(TopicPath.emptyPath); while (iterator.nextCard()) { const card = iterator.currentCard; if (card.hasSchedule) { const scheduledCard = card.scheduleInfo; const nDays = Math.ceil( (scheduledCard.dueDateAsUnix - today) / TICKS_PER_DAY ); this.increment(nDays); } } } }; // src/note.ts var Note = class { get hasChanged() { return this.questionList.some((question) => question.hasChanged); } get filePath() { return this.file.path; } constructor(file, questionList) { this.file = file; this.questionList = questionList; questionList.forEach((question) => question.note = this); } appendCardsToDeck(deck) { for (const question of this.questionList) { for (const card of question.cards) { deck.appendCard(question.topicPathList, card); } } } debugLogToConsole(desc = "") { var _a2; let str = `Note: ${desc}: ${this.questionList.length} questions\r `; for (let i = 0; i < this.questionList.length; i++) { const q = this.questionList[i]; str += `[${i}]: ${q.questionType}: ${q.lineNo}: ${(_a2 = q.topicPathList) == null ? void 0 : _a2.format("|")}: ${q.questionText.original}\r `; } console.debug(str); } async writeNoteFile(settings) { let fileText = await this.file.read(); for (const question of this.questionList) { if (question.hasChanged) { fileText = question.updateQuestionWithinNoteText(fileText, settings); } } await this.file.write(fileText); this.questionList.forEach((question) => question.hasChanged = false); } }; // src/card.ts var Card = class extends RepetitionItem { constructor(init) { super(); Object.assign(this, init); } get cardListType() { return this.isNew ? 0 /* NewCard */ : 1 /* DueCard */; } formatSchedule() { let result = ""; if (this.hasSchedule) result = this.scheduleInfo.formatCardScheduleForHtmlComment(); else result = "New"; return result; } }; // src/parser.ts var import_peggy = __toESM(require_peggy_min()); // src/utils/strings.ts function literalStringReplace(text, searchStr, replacementStr) { let result = text; const startIdx = text.indexOf(searchStr); if (startIdx >= 0) { const startStr = text.substring(0, startIdx); const endIdx = startIdx + searchStr.length; const endStr = text.substring(endIdx); result = startStr + replacementStr + endStr; } return result; } function cyrb53(str, seed = 0) { let h12 = 3735928559 ^ seed, h22 = 1103547991 ^ seed; for (let i = 0, ch; i < str.length; i++) { ch = str.charCodeAt(i); h12 = Math.imul(h12 ^ ch, 2654435761); h22 = Math.imul(h22 ^ ch, 1597334677); } h12 = Math.imul(h12 ^ h12 >>> 16, 2246822507) ^ Math.imul(h22 ^ h22 >>> 13, 3266489909); h22 = Math.imul(h22 ^ h22 >>> 16, 2246822507) ^ Math.imul(h12 ^ h12 >>> 13, 3266489909); return (4294967296 * (2097151 & h22) + (h12 >>> 0)).toString(16); } function convertToStringOrEmpty(v) { let result = ""; if (v != null && v != void 0) { result = v + ""; } return result; } function splitTextIntoLineArray(text) { return text.replaceAll(/\r\n|\r/g, "\n").split("\n"); } function stringTrimStart(str) { if (!str) { return ["", ""]; } const trimmed = str.trimStart(); const wsCount = str.length - trimmed.length; const ws = str.substring(0, wsCount); return [ws, trimmed]; } function splitNoteIntoFrontmatterAndContent(str) { const lines = splitTextIntoLineArray(str); let lineIndex = 0; let hasFrontmatter = false; do { if (lineIndex === 0 && lines[lineIndex] === "---") { hasFrontmatter = true; } else if (hasFrontmatter && lines[lineIndex] === "---") { hasFrontmatter = false; lineIndex++; } if (hasFrontmatter) { lineIndex++; } } while (hasFrontmatter && lineIndex < lines.length); if (hasFrontmatter) { lineIndex = 0; } const frontmatter = lines.slice(0, lineIndex).join("\n"); const emptyLines = lineIndex > 0 ? Array(lineIndex).join(".").split(".") : []; const content = emptyLines.concat(lines.slice(lineIndex)).join("\n"); return [frontmatter, content]; } function findLineIndexOfSearchStringIgnoringWs(lines, searchString) { let result = -1; for (let i = 0; i < lines.length; i++) { if (lines[i].trim() == searchString) { result = i; break; } } return result; } function parseObsidianFrontmatterTag(tagStr) { const result = []; if (tagStr) { const tagStrList = tagStr.split(","); for (const tag of tagStrList) { if (tag !== "") { result.push(tag.startsWith("#") ? tag : "#" + tag); } } } return result; } var MultiLineTextFinder = class _MultiLineTextFinder { static findAndReplace(sourceText, searchText, replacementText) { let result = null; if (sourceText.includes(searchText)) { result = literalStringReplace(sourceText, searchText, replacementText); } else { const sourceTextArray = splitTextIntoLineArray(sourceText); const searchTextArray = splitTextIntoLineArray(searchText); const lineNo = _MultiLineTextFinder.find( sourceTextArray, searchTextArray ); if (lineNo !== null) { const replacementTextArray = splitTextIntoLineArray(replacementText); const linesToRemove = searchTextArray.length; sourceTextArray.splice(lineNo, linesToRemove, ...replacementTextArray); result = sourceTextArray.join("\n"); } } return result; } static find(sourceText, searchText) { let result = null; let searchIdx = 0; const maxSearchIdx = searchText.length - 1; for (let sourceIdx = 0; sourceIdx < sourceText.length; sourceIdx++) { const sourceLine = sourceText[sourceIdx].trim(); const searchLine = searchText[searchIdx].trim(); if (searchLine == sourceLine) { if (searchIdx == maxSearchIdx) { result = sourceIdx - searchIdx; break; } searchIdx++; } else { searchIdx = 0; } } return result; } }; // src/question.ts var CardType = /* @__PURE__ */ ((CardType2) => { CardType2[CardType2["SingleLineBasic"] = 0] = "SingleLineBasic"; CardType2[CardType2["SingleLineReversed"] = 1] = "SingleLineReversed"; CardType2[CardType2["MultiLineBasic"] = 2] = "MultiLineBasic"; CardType2[CardType2["MultiLineReversed"] = 3] = "MultiLineReversed"; CardType2[CardType2["Cloze"] = 4] = "Cloze"; return CardType2; })(CardType || {}); var QuestionText = class _QuestionText { constructor(original, topicPathWithWs, actualQuestion, textDirection, blockId) { this.original = original; this.topicPathWithWs = topicPathWithWs; this.actualQuestion = actualQuestion; this.textDirection = textDirection; this.obsidianBlockId = blockId; this.textHash = cyrb53(this.formatTopicAndQuestion()); } endsWithCodeBlock() { return this.actualQuestion.endsWith("```"); } static create(original, textDirection, settings) { const [topicPathWithWs, actualQuestion, blockId] = this.splitText(original, settings); return new _QuestionText(original, topicPathWithWs, actualQuestion, textDirection, blockId); } static splitText(original, settings) { const originalWithoutSR = DataStore.getInstance().questionRemoveScheduleInfo(original); let actualQuestion = originalWithoutSR.trimEnd(); let topicPathWithWs = null; let blockId = null; const topicPath = TopicPath.getTopicPathFromCardText(originalWithoutSR); if (topicPath == null ? void 0 : topicPath.hasPath) { const [preTopicPathWs, cardText2] = stringTrimStart(originalWithoutSR); const cardText3 = cardText2.replaceAll(OBSIDIAN_TAG_AT_STARTOFLINE_REGEX, ""); let postTopicPathWs = null; [postTopicPathWs, actualQuestion] = stringTrimStart(cardText3); if (!settings.convertFoldersToDecks) { topicPathWithWs = new TopicPathWithWs(topicPath, preTopicPathWs, postTopicPathWs); } } [actualQuestion, blockId] = this.extractObsidianBlockId(actualQuestion); return [topicPathWithWs, actualQuestion, blockId]; } static extractObsidianBlockId(text) { let question = text; let blockId = null; const match2 = text.match(OBSIDIAN_BLOCK_ID_ENDOFLINE_REGEX); if (match2) { blockId = match2[0].trim(); const newLength = question.length - blockId.length; question = question.substring(0, newLength).trimEnd(); } return [question, blockId]; } formatTopicAndQuestion() { let result = ""; if (this.topicPathWithWs) { result += this.topicPathWithWs.formatWithWs(); } result += this.actualQuestion; return result; } }; var Question = class _Question { get questionType() { return this.parsedQuestionInfo.cardType; } get lineNo() { return this.parsedQuestionInfo.firstLineNum; } constructor(init) { Object.assign(this, init); } getHtmlCommentSeparator(settings) { const sep2 = this.isCardCommentsOnSameLine(settings) ? " " : "\n"; return sep2; } isCardCommentsOnSameLine(settings) { let result = settings.cardCommentOnSameLine; if (this.questionText.endsWithCodeBlock()) { result = false; } return result; } setCardList(cards) { this.cards = cards; this.cards.forEach((card) => card.question = this); } formatForNote(settings) { let result = this.questionText.formatTopicAndQuestion(); const blockId = this.questionText.obsidianBlockId; const hasSchedule = this.cards.some((card) => card.hasSchedule); if (hasSchedule) { result = result.trimEnd(); const scheduleHtml = DataStoreAlgorithm.getInstance().questionFormatScheduleAsHtmlComment(this); if (blockId) { if (this.isCardCommentsOnSameLine(settings)) result += ` ${scheduleHtml} ${blockId}`; else result += ` ${blockId} ${scheduleHtml}`; } else { result += this.getHtmlCommentSeparator(settings) + scheduleHtml; } } else { if (blockId) result += ` ${blockId}`; } return result; } updateQuestionWithinNoteText(noteText, settings) { const originalText = this.questionText.original; const replacementText = this.formatForNote(settings); let newText = MultiLineTextFinder.findAndReplace(noteText, originalText, replacementText); if (newText) { this.questionText = QuestionText.create( replacementText, this.questionText.textDirection, settings ); } else { console.error( `updateQuestionText: Text not found: ${originalText.substring( 0, 100 )} in note: ${noteText.substring(0, 100)}` ); newText = noteText; } return newText; } async writeQuestion(settings) { const fileText = await this.note.file.read(); const newText = this.updateQuestionWithinNoteText(fileText, settings); await this.note.file.write(newText); this.hasChanged = false; } formatTopicPathList() { return this.topicPathList.format("|"); } static Create(settings, parsedQuestionInfo, noteTopicPathList, textDirection, context) { const hasEditLaterTag = parsedQuestionInfo.text.includes(settings.editLaterTag); const questionText = QuestionText.create( parsedQuestionInfo.text, textDirection, settings ); let topicPathList = noteTopicPathList; if (questionText.topicPathWithWs) { topicPathList = new TopicPathList([questionText.topicPathWithWs.topicPath]); } const result = new _Question({ parsedQuestionInfo, topicPathList, questionText, hasEditLaterTag, questionContext: context, cards: null, hasChanged: false }); return result; } }; // src/parser.ts var parser2 = null; var oldOptions; var debugParser = false; function areParserOptionsEqual(options1, options2) { return options1.singleLineCardSeparator === options2.singleLineCardSeparator && options1.singleLineReversedCardSeparator === options2.singleLineReversedCardSeparator && options1.multilineCardSeparator === options2.multilineCardSeparator && options1.multilineReversedCardSeparator === options2.multilineReversedCardSeparator && options1.multilineCardEndMarker === options2.multilineCardEndMarker && options1.convertHighlightsToClozes === options2.convertHighlightsToClozes && options1.convertBoldTextToClozes === options2.convertBoldTextToClozes && options1.convertCurlyBracketsToClozes === options2.convertCurlyBracketsToClozes; } function generateParser(options2) { let grammar = null; if (debugParser) { if (grammar === null) { grammar = generateGrammar(options2); } console.log( "The parsers grammar is provided below. You can test it with https://peggyjs.org/online.html." ); console.log({ info: "Copy the grammar by right-clicking on the property grammar and copying it as a string. Then, paste it in https://peggyjs.org/online.html.", grammar }); } if (parser2 === null || !areParserOptionsEqual(options2, oldOptions)) { oldOptions = Object.assign({}, options2); grammar = generateGrammar(options2); if (debugParser) { const t0 = Date.now(); parser2 = (0, import_peggy.generate)(grammar); const t1 = Date.now(); console.log("New parser generated in " + (t1 - t0) + " milliseconds."); } else { parser2 = (0, import_peggy.generate)(grammar); } } else { if (debugParser) { console.log("Parser already exists. No need to generate a new parser."); } } return parser2; } function generateGrammar(options2) { let clozes_grammar = ""; const card_rules_list = ["html_comment", "tilde_code", "backprime_code"]; if (options2.singleLineCardSeparator.trim() !== "") card_rules_list.push("inline_rev_card"); if (options2.singleLineCardSeparator.trim() !== "") card_rules_list.push("inline_card"); if (options2.multilineReversedCardSeparator.trim() !== "") card_rules_list.push("multiline_rev_card"); if (options2.multilineCardSeparator.trim() !== "") card_rules_list.push("multiline_card"); const cloze_rules_list = []; if (options2.convertHighlightsToClozes) cloze_rules_list.push("cloze_equal"); if (options2.convertBoldTextToClozes) cloze_rules_list.push("cloze_star"); if (options2.convertCurlyBracketsToClozes) cloze_rules_list.push("cloze_bracket"); if (cloze_rules_list.length > 0) { card_rules_list.push("cloze_card"); const cloze_rules = cloze_rules_list.join(" / "); clozes_grammar = ` cloze_card = $(multiline_before_cloze? cloze_line (multiline_after_cloze)? (newline annotation)?) { return createParsedQuestionInfo(CardType.Cloze,text().trimEnd(),location().start.line-1,location().end.line-1); } cloze_line = ((!cloze_text (inline_code / non_newline))* cloze_text) text_line_nonterminated? multiline_before_cloze = (!cloze_line nonempty_text_line)+ multiline_after_cloze = e:(!(newline separator_line) text_line1)+ cloze_text = ${cloze_rules} cloze_equal = cloze_mark_equal (!cloze_mark_equal non_newline)+ cloze_mark_equal cloze_mark_equal = "==" cloze_star = cloze_mark_star (!cloze_mark_star non_newline)+ cloze_mark_star cloze_mark_star = "**" cloze_bracket = cloze_mark_bracket_open (!cloze_mark_bracket_close non_newline)+ cloze_mark_bracket_close cloze_mark_bracket_open = "{{" cloze_mark_bracket_close = "}}" `; } card_rules_list.push("loose_line"); const card_rules = card_rules_list.join(" / "); return `{ // The fallback case is important if we want to test the rules with https://peggyjs.org/online.html const CardTypeFallBack = { SingleLineBasic: 0, SingleLineReversed: 1, MultiLineBasic: 2, MultiLineReversed: 3, Cloze: 4, }; // The fallback case is important if we want to test the rules with https://peggyjs.org/online.html const createParsedQuestionInfoFallBack = (cardType, text, firstLineNum, lastLineNum) => { return {cardType, text, firstLineNum, lastLineNum}; }; const CardType = options.CardType ? options.CardType : CardTypeFallBack; const createParsedQuestionInfo = options.createParsedQuestionInfo ? options.createParsedQuestionInfo : createParsedQuestionInfoFallBack; function filterBlocks(b) { return b.filter( (d) => d !== null ) } } main = blocks:block* { return filterBlocks(blocks); } /* The input text to the parser contains arbitrary text, not just card definitions. Hence we fallback to matching on loose_line. The result from loose_line is filtered out by filterBlocks() */ block = ${card_rules} html_comment = $("" (html_comment / .))* "-->" newline?) { return null; } /* Obsidian tag definition: https://help.obsidian.md/Editing+and+formatting/Tags#Tag+format */ tag = $("#" + name:([a-zA-Z/\\-_] { return 1; } / [0-9]{ return 0;})+ &{ // check if it is a valid Obsidian tag - (Tags must contain at least one non-numerical character) return name.includes(1); }) inline_card = e:inline newline? { return e; } inline = $(left:(!inline_mark (inline_code / non_newline))+ inline_mark right:text_till_newline (newline annotation)?) { return createParsedQuestionInfo(CardType.SingleLineBasic,text(),location().start.line-1,location().end.line-1); } inline_rev_card = e:inline_rev newline? { return e; } inline_rev = left:(!inline_rev_mark (inline_code / non_newline))+ inline_rev_mark right:text_till_newline (newline annotation)? { return createParsedQuestionInfo(CardType.SingleLineReversed,text(),location().start.line-1,location().end.line-1); } multiline_card = c:multiline separator_line { return c; } multiline = arg1:multiline_before multiline_mark arg2:multiline_after { return createParsedQuestionInfo(CardType.MultiLineBasic,(arg1+"${options2.multilineCardSeparator}\\n"+arg2.trimEnd()),location().start.line-1,location().end.line-2); } multiline_before = $(!multiline_mark nonempty_text_line)+ multiline_after = $(!separator_line (tilde_code / backprime_code / text_line))+ inline_code = $("\`" (!"\`" .)* "\`") tilde_code = $( " "* left:$tilde_marker text_line (!(middle:$tilde_marker &{ return left.length===middle.length;}) (tilde_code / text_line))* (right:$tilde_marker &{ return left.length===right.length; }) newline ) { return null; } tilde_marker = "~~~" "~"* backprime_code = $( " "* left:$backprime_marker text_line (!(middle:$backprime_marker &{ return left.length===middle.length;}) (backprime_code / text_line))* (right:$backprime_marker &{ return left.length===right.length; }) newline ) { return null; } backprime_marker = "\`\`\`" "\`"* multiline_rev_card = @multiline_rev separator_line multiline_rev = arg1:multiline_rev_before multiline_rev_mark arg2:multiline_rev_after { return createParsedQuestionInfo(CardType.MultiLineReversed,(arg1+"${options2.multilineReversedCardSeparator}\\n"+arg2.trimEnd()),location().start.line-1,location().end.line-2); } multiline_rev_before = $(!multiline_rev_mark nonempty_text_line)+ multiline_rev_after = $(!separator_line text_line)+ ${clozes_grammar} inline_mark = "${options2.singleLineCardSeparator}" inline_rev_mark = "${options2.singleLineReversedCardSeparator}" multiline_mark = optional_whitespaces "${options2.multilineCardSeparator}" optional_whitespaces newline multiline_rev_mark = optional_whitespaces "${options2.multilineReversedCardSeparator}" optional_whitespaces newline end_card_mark = "${options2.multilineCardEndMarker}" separator_line = end_card_mark optional_whitespaces newline text_line_nonterminated = $nonempty_text_till_newline nonempty_text_line = nonempty_text_till_newline newline text_line = @$text_till_newline newline // very likely, it is possible to homogeneize/modify the rules to use only either 'text_line1' or 'text_line' text_line1 = newline @$text_till_newline loose_line = $((text_till_newline newline) / nonempty_text_till_newline) { return null; } annotation = $("" .)+ "-->") nonempty_text_till_newline = $(inline_code / non_newline)+ text_till_newline = $non_newline* non_newline = [^\\n] newline = $[\\n] empty_line = $(whitespace_char* [\\n]) nonemptyspace = [^ \\f\\t\\v\\u0020\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff] optional_whitespaces = whitespace_char* whitespace_char = ([ \\f\\t\\v\\u0020\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]) `; } function setDebugParser(value) { debugParser = value; } var ParsedQuestionInfo = class { constructor(cardType, text, firstLineNum, lastLineNum) { this.cardType = cardType; this.text = text; this.firstLineNum = firstLineNum; this.lastLineNum = lastLineNum; } isQuestionLineNum(lineNum) { return lineNum >= this.firstLineNum && lineNum <= this.lastLineNum; } }; function parseEx(text, options2) { if (debugParser) { console.log("Text to parse:\n<<<" + text + ">>>"); } let cards = []; try { if (!options2) throw new Error("No parser options provided."); const parser3 = generateParser(options2); cards = parser3.parse(text + "\n\n\n", { CardType, createParsedQuestionInfo: (cardType, text2, firstLineNum, lastLineNum) => { return new ParsedQuestionInfo(cardType, text2, firstLineNum, lastLineNum); } }); } catch (error) { console.error("Unexpected error:", error); } if (debugParser) { console.log("Parsed cards:\n", cards); } return cards; } // src/question-type.ts var CardFrontBack = class { // The caller is responsible for any required trimming of leading/trailing spaces constructor(front, back) { this.front = front; this.back = back; } }; var CardFrontBackUtil = class { static expand(questionType, questionText, settings) { const handler = QuestionTypeFactory.create(questionType); return handler.expand(questionText, settings); } }; var QuestionType_SingleLineBasic = class { expand(questionText, settings) { const idx = questionText.indexOf(settings.singleLineCardSeparator); const item = new CardFrontBack( questionText.substring(0, idx), questionText.substring(idx + settings.singleLineCardSeparator.length) ); const result = [item]; return result; } }; var QuestionType_SingleLineReversed = class { expand(questionText, settings) { const idx = questionText.indexOf(settings.singleLineReversedCardSeparator); const side1 = questionText.substring(0, idx), side2 = questionText.substring( idx + settings.singleLineReversedCardSeparator.length ); const result = [ new CardFrontBack(side1, side2), new CardFrontBack(side2, side1) ]; return result; } }; var QuestionType_MultiLineBasic = class { expand(questionText, settings) { const questionLines = questionText.split("\n"); const lineIdx = findLineIndexOfSearchStringIgnoringWs( questionLines, settings.multilineCardSeparator ); const side1 = questionLines.slice(0, lineIdx).join("\n"); const side2 = questionLines.slice(lineIdx + 1).join("\n"); const result = [new CardFrontBack(side1, side2)]; return result; } }; var QuestionType_MultiLineReversed = class { expand(questionText, settings) { const questionLines = questionText.split("\n"); const lineIdx = findLineIndexOfSearchStringIgnoringWs( questionLines, settings.multilineReversedCardSeparator ); const side1 = questionLines.slice(0, lineIdx).join("\n"); const side2 = questionLines.slice(lineIdx + 1).join("\n"); const result = [ new CardFrontBack(side1, side2), new CardFrontBack(side2, side1) ]; return result; } }; var QuestionType_Cloze = class { expand(questionText, settings) { const siblings = []; if (settings.convertHighlightsToClozes) { siblings.push(...questionText.matchAll(/==(.*?)==/gm)); } if (settings.convertBoldTextToClozes) { siblings.push(...questionText.matchAll(/\*\*(.*?)\*\*/gm)); } if (settings.convertCurlyBracketsToClozes) { siblings.push(...questionText.matchAll(/{{(.*?)}}/gm)); } siblings.sort((a, b) => { if (a.index < b.index) { return -1; } if (a.index > b.index) { return 1; } return 0; }); let front, back; const result = []; for (const m of siblings) { const deletionStart = m.index, deletionEnd = deletionStart + m[0].length; front = questionText.substring(0, deletionStart) + QuestionType_ClozeUtil.renderClozeFront() + questionText.substring(deletionEnd); front = QuestionType_ClozeUtil.removeClozeTokens(front, settings); back = questionText.substring(0, deletionStart) + QuestionType_ClozeUtil.renderClozeBack( questionText.substring(deletionStart, deletionEnd) ) + questionText.substring(deletionEnd); back = QuestionType_ClozeUtil.removeClozeTokens(back, settings); result.push(new CardFrontBack(front, back)); } return result; } }; var QuestionType_ClozeUtil = class { static renderClozeFront() { return "[...]"; } static renderClozeBack(str) { return "" + str + ""; } static removeClozeTokens(text, settings) { let result = text; if (settings.convertHighlightsToClozes) result = result.replace(/==/gm, ""); if (settings.convertBoldTextToClozes) result = result.replace(/\*\*/gm, ""); if (settings.convertCurlyBracketsToClozes) { result = result.replace(/{{/gm, "").replace(/}}/gm, ""); } return result; } }; var QuestionTypeFactory = class { static create(questionType) { let handler; switch (questionType) { case 0 /* SingleLineBasic */: handler = new QuestionType_SingleLineBasic(); break; case 1 /* SingleLineReversed */: handler = new QuestionType_SingleLineReversed(); break; case 2 /* MultiLineBasic */: handler = new QuestionType_MultiLineBasic(); break; case 3 /* MultiLineReversed */: handler = new QuestionType_MultiLineReversed(); break; case 4 /* Cloze */: handler = new QuestionType_Cloze(); break; } return handler; } }; // src/settings.ts var import_obsidian3 = require("obsidian"); // src/gui/tabs.tsx var import_obsidian2 = require("obsidian"); function createTabs(container_element, tabs, activateTabId) { const tab_header = container_element.createEl("div", { attr: { class: "sr-tab-header" } }); const tab_content_containers = {}; const tab_buttons = {}; const tab_structure = { header: tab_header, active_tab_id: Object.keys(tabs)[0], // Indicate that the first tab is active. This does not affect what tab is active in practise, it just reports the active tab. buttons: tab_buttons, contentContainers: tab_content_containers, contentGeneratorPromises: {} }; let first_button; for (const tab_id in tabs) { const tab = tabs[tab_id]; const button = tab_header.createEl("button", { attr: { class: "sr-tab-header-button", activateTab: "sr-tab-" + tab_id } }); button.onclick = function(event) { var _a2; const tab_button = this; let max_width = 0; let max_height = 0; const tab_header2 = tab_button.parentElement; if (null === tab_header2) { throw new Error("Tab header is missing. Did not get a parent from tab button."); } const container_element2 = tab_header2.parentElement; if (null === container_element2) { throw new Error( "Container element is missing. Did not get a parent from tab header." ); } const tab_contents = container_element2.findAll("div.sr-tab-content"); const is_main_settings_modal = container_element2.hasClass("vertical-tab-content"); for (const index in tab_contents) { const tab_content2 = tab_contents[index]; if (!is_main_settings_modal) { tab_content2.addClass("sr-tab-active"); if (tab_content2.offsetHeight > max_height) { max_height = tab_content2.offsetHeight; } if (tab_content2.offsetWidth > max_width) { max_width = tab_content2.offsetWidth; } } tab_content2.removeClass("sr-tab-active"); } const adjacent_tab_buttons = tab_header2.findAll(".sr-tab-header-button"); for (const index in adjacent_tab_buttons) { const tab_button2 = adjacent_tab_buttons[index]; tab_button2.removeClass("sr-tab-active"); } tab_button.addClass("sr-tab-active"); const activateTabAttribute = tab_button.attributes.getNamedItem("activateTab"); if (null === activateTabAttribute) { throw new Error("Tab button has no 'activateTab' HTML attribute! Murr!"); } const activate_tab_id = activateTabAttribute.value; const tab_content = document.getElementById(activate_tab_id); if (null === tab_content) { throw new Error( "No tab content was found with activate_tab_id '" + activate_tab_id + "'! Hmph!" ); } tab_content.addClass("sr-tab-active"); tab_structure.active_tab_id = activate_tab_id.replace(/^sr-tab-/, ""); (_a2 = tab_content.find(".sr-focus-element-on-tab-opening")) == null ? void 0 : _a2.focus(); if (!is_main_settings_modal) { tab_content.style.width = max_width + "px"; tab_content.style.height = max_height + "px"; } event.preventDefault(); }; if (tab.icon) (0, import_obsidian2.setIcon)(button, tab.icon); button.insertAdjacentText("beforeend", " " + tab.title); tab_buttons[tab_id] = button; tab_content_containers[tab_id] = container_element.createEl("div", { attr: { class: "sr-tab-content", id: "sr-tab-" + tab_id } }); tab_structure.contentGeneratorPromises[tab_id] = tab.content_generator( tab_content_containers[tab_id] ); if (void 0 === first_button) { first_button = button; } } tab_buttons[activateTabId].click(); return tab_structure; } // src/settings.ts var DEFAULT_SETTINGS = { // flashcards flashcardEasyText: t("EASY"), flashcardGoodText: t("GOOD"), flashcardHardText: t("HARD"), reviewButtonDelay: 0, flashcardTags: ["#flashcards"], convertFoldersToDecks: false, cardCommentOnSameLine: false, burySiblingCards: false, showContextInCards: true, flashcardHeightPercentage: import_obsidian3.Platform.isMobile ? 100 : 80, flashcardWidthPercentage: import_obsidian3.Platform.isMobile ? 100 : 40, randomizeCardOrder: null, flashcardCardOrder: "DueFirstRandom", flashcardDeckOrder: "PrevDeckComplete_Sequential", convertHighlightsToClozes: true, convertBoldTextToClozes: false, convertCurlyBracketsToClozes: false, singleLineCardSeparator: "::", singleLineReversedCardSeparator: ":::", multilineCardSeparator: "?", multilineReversedCardSeparator: "??", multilineCardEndMarker: "", editLaterTag: "#edit-later", // notes enableNoteReviewPaneOnStartup: true, tagsToReview: ["#review"], noteFoldersToIgnore: ["**/*.excalidraw.md"], openRandomNote: false, autoNextNote: false, disableFileMenuReviewOptions: false, maxNDaysNotesReviewQueue: 365, // UI settings showRibbonIcon: true, showStatusBar: true, initiallyExpandAllSubdecksInTree: false, // algorithm baseEase: 250, lapsesIntervalChange: 0.5, easyBonus: 1.3, maximumInterval: 36525, maxLinkFactor: 1, // logging showDebugMessages: false, showPaserDebugMessages: false }; function upgradeSettings(settings) { if (settings.randomizeCardOrder != null && settings.flashcardCardOrder == null && settings.flashcardDeckOrder == null) { console.log(`loadPluginData: Upgrading settings: ${settings.randomizeCardOrder}`); settings.flashcardCardOrder = settings.randomizeCardOrder ? "DueFirstRandom" : "DueFirstSequential"; settings.flashcardDeckOrder = "PrevDeckComplete_Sequential"; settings.randomizeCardOrder = null; } } var SettingsUtil = class _SettingsUtil { static isFlashcardTag(settings, tag) { return _SettingsUtil.isTagInList(settings.flashcardTags, tag); } static isPathInNoteIgnoreFolder(settings, path2) { return settings.noteFoldersToIgnore.some((folder) => pathMatchesPattern(path2, folder)); } static isAnyTagANoteReviewTag(settings, tags) { for (const tag of tags) { if (settings.tagsToReview.some( (tagToReview) => tag === tagToReview || tag.startsWith(tagToReview + "/") )) { return true; } } return false; } // Given a list of tags, return the subset that is in settings.tagsToReview static filterForNoteReviewTag(settings, tags) { const result = []; for (const tagToReview of settings.tagsToReview) { if (tags.some((tag) => tag === tagToReview || tag.startsWith(tagToReview + "/"))) { result.push(tagToReview); } } return result; } static isTagInList(tagList, tag) { for (const tagFromList of tagList) { if (tag === tagFromList || tag.startsWith(tagFromList + "/")) { return true; } } return false; } }; var applyDebounceTimer = 0; function applySettingsUpdate(callback2) { clearTimeout(applyDebounceTimer); applyDebounceTimer = window.setTimeout(callback2, 512); } var SRSettingTab = class extends import_obsidian3.PluginSettingTab { constructor(app, plugin) { super(app, plugin); this.last_position = { scroll_position: 0, tab_name: "main-flashcards" }; this.plugin = plugin; } display() { const { containerEl } = this; containerEl.empty(); const header = containerEl.createEl("h4", { text: `${t("SETTINGS_HEADER")}` }); header.addClass("sr-centered"); this.tab_structure = createTabs( containerEl, { "main-flashcards": { title: t("FLASHCARDS"), icon: null, // "SpacedRepIcon", content_generator: (container_element) => this.tabFlashcards(container_element) }, "main-notes": { title: t("NOTES"), icon: null, // "note-glyph", content_generator: (container_element) => this.tabNotes(container_element) }, "main-algorithm": { title: "Algorithm", icon: null, // "dot-network", content_generator: (container_element) => this.tabAlgorithm(container_element) }, "main-ui-preferences": { title: t("UI_PREFERENCES"), icon: null, // "presentation", content_generator: (container_element) => this.tabUiPreferences(container_element) }, "main-developer": { title: "Developer", icon: null, // "code-glyph", content_generator: (container_element) => this.tabDeveloper(container_element) }, "main-help": { title: "Help", icon: null, // "help", content_generator: (container_element) => this.tabHelp(container_element) } }, this.last_position.tab_name ); this.tab_structure.contentGeneratorPromises[this.tab_structure.active_tab_id].then(() => { this.rememberLastPosition(containerEl); }); } async tabFlashcards(containerEl) { containerEl.createEl("h3", { text: t("GROUP_TAGS_FOLDERS") }); { new import_obsidian3.Setting(containerEl).setName(t("FLASHCARD_TAGS")).setDesc(t("FLASHCARD_TAGS_DESC")).addTextArea( (text) => text.setValue(this.plugin.data.settings.flashcardTags.join(" ")).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.flashcardTags = value.split(/\s+/); await this.plugin.savePluginData(); }); }) ); new import_obsidian3.Setting(containerEl).setName(t("CONVERT_FOLDERS_TO_DECKS")).setDesc(t("CONVERT_FOLDERS_TO_DECKS_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.convertFoldersToDecks).onChange(async (value) => { this.plugin.data.settings.convertFoldersToDecks = value; await this.plugin.savePluginData(); }) ); this.createSetting_FoldersToIgnore(containerEl); } containerEl.createEl("h3", { text: t("GROUP_FLASHCARD_REVIEW") }); { new import_obsidian3.Setting(containerEl).setName(t("BURY_SIBLINGS_TILL_NEXT_DAY")).setDesc(t("BURY_SIBLINGS_TILL_NEXT_DAY_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.burySiblingCards).onChange(async (value) => { this.plugin.data.settings.burySiblingCards = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("REVIEW_CARD_ORDER_WITHIN_DECK")).addDropdown( (dropdown) => dropdown.addOptions({ NewFirstSequential: t("REVIEW_CARD_ORDER_NEW_FIRST_SEQUENTIAL"), DueFirstSequential: t("REVIEW_CARD_ORDER_DUE_FIRST_SEQUENTIAL"), NewFirstRandom: t("REVIEW_CARD_ORDER_NEW_FIRST_RANDOM"), DueFirstRandom: t("REVIEW_CARD_ORDER_DUE_FIRST_RANDOM"), EveryCardRandomDeckAndCard: t("REVIEW_CARD_ORDER_RANDOM_DECK_AND_CARD") }).setValue(this.plugin.data.settings.flashcardCardOrder).onChange(async (value) => { this.plugin.data.settings.flashcardCardOrder = value; await this.plugin.savePluginData(); this.display(); }) ); const deckOrderEnabled = this.plugin.data.settings.flashcardCardOrder != "EveryCardRandomDeckAndCard"; new import_obsidian3.Setting(containerEl).setName(t("REVIEW_DECK_ORDER")).addDropdown( (dropdown) => dropdown.addOptions( deckOrderEnabled ? { PrevDeckComplete_Sequential: t( "REVIEW_DECK_ORDER_PREV_DECK_COMPLETE_SEQUENTIAL" ), PrevDeckComplete_Random: t( "REVIEW_DECK_ORDER_PREV_DECK_COMPLETE_RANDOM" ) } : { EveryCardRandomDeckAndCard: t( "REVIEW_DECK_ORDER_RANDOM_DECK_AND_CARD" ) } ).setValue( deckOrderEnabled ? this.plugin.data.settings.flashcardDeckOrder : "EveryCardRandomDeckAndCard" ).setDisabled(!deckOrderEnabled).onChange(async (value) => { this.plugin.data.settings.flashcardDeckOrder = value; await this.plugin.savePluginData(); }) ); } containerEl.createEl("h3", { text: t("GROUP_FLASHCARD_SEPARATORS") }); { new import_obsidian3.Setting(containerEl).setName(t("CONVERT_HIGHLIGHTS_TO_CLOZES")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.convertHighlightsToClozes).onChange(async (value) => { this.plugin.data.settings.convertHighlightsToClozes = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("CONVERT_BOLD_TEXT_TO_CLOZES")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.convertBoldTextToClozes).onChange(async (value) => { this.plugin.data.settings.convertBoldTextToClozes = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("CONVERT_CURLY_BRACKETS_TO_CLOZES")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.convertCurlyBracketsToClozes).onChange(async (value) => { this.plugin.data.settings.convertCurlyBracketsToClozes = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("INLINE_CARDS_SEPARATOR")).setDesc(t("FIX_SEPARATORS_MANUALLY_WARNING")).addText( (text) => text.setValue(this.plugin.data.settings.singleLineCardSeparator).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.singleLineCardSeparator = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.singleLineCardSeparator = DEFAULT_SETTINGS.singleLineCardSeparator; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("INLINE_REVERSED_CARDS_SEPARATOR")).setDesc(t("FIX_SEPARATORS_MANUALLY_WARNING")).addText( (text) => text.setValue(this.plugin.data.settings.singleLineReversedCardSeparator).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.singleLineReversedCardSeparator = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.singleLineReversedCardSeparator = DEFAULT_SETTINGS.singleLineReversedCardSeparator; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("MULTILINE_CARDS_SEPARATOR")).setDesc(t("FIX_SEPARATORS_MANUALLY_WARNING")).addText( (text) => text.setValue(this.plugin.data.settings.multilineCardSeparator).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.multilineCardSeparator = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.multilineCardSeparator = DEFAULT_SETTINGS.multilineCardSeparator; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("MULTILINE_REVERSED_CARDS_SEPARATOR")).setDesc(t("FIX_SEPARATORS_MANUALLY_WARNING")).addText( (text) => text.setValue(this.plugin.data.settings.multilineReversedCardSeparator).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.multilineReversedCardSeparator = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.multilineReversedCardSeparator = DEFAULT_SETTINGS.multilineReversedCardSeparator; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("MULTILINE_CARDS_END_MARKER")).setDesc(t("FIX_SEPARATORS_MANUALLY_WARNING")).addText( (text) => text.setValue(this.plugin.data.settings.multilineCardEndMarker).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.multilineCardEndMarker = value; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.multilineCardEndMarker = DEFAULT_SETTINGS.multilineCardEndMarker; this.plugin.debouncedGenerateParser(); await this.plugin.savePluginData(); this.display(); }); }); } containerEl.createEl("h3", { text: t("GROUP_DATA_STORAGE") }); { new import_obsidian3.Setting(containerEl).setName(t("INLINE_SCHEDULING_COMMENTS")).setDesc(t("INLINE_SCHEDULING_COMMENTS_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.cardCommentOnSameLine).onChange(async (value) => { this.plugin.data.settings.cardCommentOnSameLine = value; await this.plugin.savePluginData(); }) ); } } async tabNotes(containerEl) { containerEl.createEl("br"); new import_obsidian3.Setting(containerEl).setName(t("REVIEW_PANE_ON_STARTUP")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.enableNoteReviewPaneOnStartup).onChange(async (value) => { this.plugin.data.settings.enableNoteReviewPaneOnStartup = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("TAGS_TO_REVIEW")).setDesc(t("TAGS_TO_REVIEW_DESC")).addTextArea( (text) => text.setValue(this.plugin.data.settings.tagsToReview.join(" ")).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.tagsToReview = value.split(/\s+/); await this.plugin.savePluginData(); }); }) ); this.createSetting_FoldersToIgnore(containerEl); new import_obsidian3.Setting(containerEl).setName(t("OPEN_RANDOM_NOTE")).setDesc(t("OPEN_RANDOM_NOTE_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.openRandomNote).onChange(async (value) => { this.plugin.data.settings.openRandomNote = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("AUTO_NEXT_NOTE")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.autoNextNote).onChange(async (value) => { this.plugin.data.settings.autoNextNote = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("MAX_N_DAYS_REVIEW_QUEUE")).addText( (text) => text.setValue(this.plugin.data.settings.maxNDaysNotesReviewQueue.toString()).onChange((value) => { applySettingsUpdate(async () => { const numValue = Number.parseInt(value); if (!isNaN(numValue)) { if (numValue < 1) { new import_obsidian3.Notice(t("MIN_ONE_DAY")); text.setValue( this.plugin.data.settings.maxNDaysNotesReviewQueue.toString() ); return; } this.plugin.data.settings.maxNDaysNotesReviewQueue = numValue; await this.plugin.savePluginData(); } else { new import_obsidian3.Notice(t("VALID_NUMBER_WARNING")); } }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.maxNDaysNotesReviewQueue = DEFAULT_SETTINGS.maxNDaysNotesReviewQueue; await this.plugin.savePluginData(); this.display(); }); }); } async createSetting_FoldersToIgnore(containerEl) { new import_obsidian3.Setting(containerEl).setName(t("FOLDERS_TO_IGNORE")).setDesc(t("FOLDERS_TO_IGNORE_DESC")).addTextArea( (text) => text.setValue(this.plugin.data.settings.noteFoldersToIgnore.join("\n")).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.noteFoldersToIgnore = value.split(/\n+/).map((v) => v.trim()).filter((v) => v); await this.plugin.savePluginData(); }); }) ); } async tabUiPreferences(containerEl) { containerEl.createEl("h3", { text: t("OBSIDIAN_INTEGRATION") }); new import_obsidian3.Setting(containerEl).setName(t("SHOW_RIBBON_ICON")).setDesc(t("SHOW_RIBBON_ICON_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.showRibbonIcon).onChange(async (value) => { this.plugin.data.settings.showRibbonIcon = value; await this.plugin.savePluginData(); this.plugin.showRibbonIcon(value); }) ); new import_obsidian3.Setting(containerEl).setName(t("SHOW_STATUS_BAR")).setDesc(t("SHOW_STATUS_BAR_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.showStatusBar).onChange(async (value) => { this.plugin.data.settings.showStatusBar = value; await this.plugin.savePluginData(); this.plugin.showStatusBar(value); }) ); new import_obsidian3.Setting(containerEl).setName(t("ENABLE_FILE_MENU_REVIEW_OPTIONS")).setDesc(t("ENABLE_FILE_MENU_REVIEW_OPTIONS_DESC")).addToggle( (toggle) => toggle.setValue(!this.plugin.data.settings.disableFileMenuReviewOptions).onChange(async (value) => { this.plugin.data.settings.disableFileMenuReviewOptions = !value; await this.plugin.savePluginData(); this.plugin.showFileMenuItems(value); }) ); containerEl.createEl("h3", { text: t("FLASHCARDS") }); new import_obsidian3.Setting(containerEl).setName(t("INITIALLY_EXPAND_SUBDECKS_IN_TREE")).setDesc(t("INITIALLY_EXPAND_SUBDECKS_IN_TREE_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.initiallyExpandAllSubdecksInTree).onChange(async (value) => { this.plugin.data.settings.initiallyExpandAllSubdecksInTree = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("SHOW_CARD_CONTEXT")).setDesc(t("SHOW_CARD_CONTEXT_DESC")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.showContextInCards).onChange(async (value) => { this.plugin.data.settings.showContextInCards = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("CARD_MODAL_HEIGHT_PERCENT")).setDesc(t("CARD_MODAL_SIZE_PERCENT_DESC")).addSlider( (slider) => slider.setLimits(10, 100, 5).setValue(this.plugin.data.settings.flashcardHeightPercentage).setDynamicTooltip().onChange(async (value) => { this.plugin.data.settings.flashcardHeightPercentage = value; await this.plugin.savePluginData(); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.flashcardHeightPercentage = DEFAULT_SETTINGS.flashcardHeightPercentage; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("CARD_MODAL_WIDTH_PERCENT")).setDesc(t("CARD_MODAL_SIZE_PERCENT_DESC")).addSlider( (slider) => slider.setLimits(10, 100, 5).setValue(this.plugin.data.settings.flashcardWidthPercentage).setDynamicTooltip().onChange(async (value) => { this.plugin.data.settings.flashcardWidthPercentage = value; await this.plugin.savePluginData(); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.flashcardWidthPercentage = DEFAULT_SETTINGS.flashcardWidthPercentage; await this.plugin.savePluginData(); this.display(); }); }); containerEl.createEl("h3", { text: t("GROUP_FLASHCARDS_NOTES") }); new import_obsidian3.Setting(containerEl).setName(t("FLASHCARD_EASY_LABEL")).setDesc(t("FLASHCARD_EASY_DESC")).addText( (text) => text.setValue(this.plugin.data.settings.flashcardEasyText).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.flashcardEasyText = value; await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.flashcardEasyText = DEFAULT_SETTINGS.flashcardEasyText; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("FLASHCARD_GOOD_LABEL")).setDesc(t("FLASHCARD_GOOD_DESC")).addText( (text) => text.setValue(this.plugin.data.settings.flashcardGoodText).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.flashcardGoodText = value; await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.flashcardGoodText = DEFAULT_SETTINGS.flashcardGoodText; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("FLASHCARD_HARD_LABEL")).setDesc(t("FLASHCARD_HARD_DESC")).addText( (text) => text.setValue(this.plugin.data.settings.flashcardHardText).onChange((value) => { applySettingsUpdate(async () => { this.plugin.data.settings.flashcardHardText = value; await this.plugin.savePluginData(); }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.flashcardHardText = DEFAULT_SETTINGS.flashcardHardText; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("REVIEW_BUTTON_DELAY")).setDesc(t("REVIEW_BUTTON_DELAY_DESC")).addSlider( (slider) => slider.setLimits(0, 5e3, 100).setValue(this.plugin.data.settings.reviewButtonDelay).setDynamicTooltip().onChange(async (value) => { this.plugin.data.settings.reviewButtonDelay = value; await this.plugin.savePluginData(); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.reviewButtonDelay = DEFAULT_SETTINGS.reviewButtonDelay; await this.plugin.savePluginData(); this.display(); }); }); } async tabAlgorithm(containerEl) { containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("CHECK_ALGORITHM_WIKI", { algo_url: "https://www.stephenmwangi.com/obsidian-spaced-repetition/" }) ); new import_obsidian3.Setting(containerEl).setName(t("BASE_EASE")).setDesc(t("BASE_EASE_DESC")).addText( (text) => text.setValue(this.plugin.data.settings.baseEase.toString()).onChange((value) => { applySettingsUpdate(async () => { const numValue = Number.parseInt(value); if (!isNaN(numValue)) { if (numValue < 130) { new import_obsidian3.Notice(t("BASE_EASE_MIN_WARNING")); text.setValue(this.plugin.data.settings.baseEase.toString()); return; } this.plugin.data.settings.baseEase = numValue; await this.plugin.savePluginData(); } else { new import_obsidian3.Notice(t("VALID_NUMBER_WARNING")); } }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.baseEase = DEFAULT_SETTINGS.baseEase; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("LAPSE_INTERVAL_CHANGE")).setDesc(t("LAPSE_INTERVAL_CHANGE_DESC")).addSlider( (slider) => slider.setLimits(1, 99, 1).setValue(this.plugin.data.settings.lapsesIntervalChange * 100).setDynamicTooltip().onChange(async (value) => { this.plugin.data.settings.lapsesIntervalChange = value / 100; await this.plugin.savePluginData(); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.lapsesIntervalChange = DEFAULT_SETTINGS.lapsesIntervalChange; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("EASY_BONUS")).setDesc(t("EASY_BONUS_DESC")).addText( (text) => text.setValue((this.plugin.data.settings.easyBonus * 100).toString()).onChange((value) => { applySettingsUpdate(async () => { const numValue = Number.parseInt(value) / 100; if (!isNaN(numValue)) { if (numValue < 1) { new import_obsidian3.Notice(t("EASY_BONUS_MIN_WARNING")); text.setValue( (this.plugin.data.settings.easyBonus * 100).toString() ); return; } this.plugin.data.settings.easyBonus = numValue; await this.plugin.savePluginData(); } else { new import_obsidian3.Notice(t("VALID_NUMBER_WARNING")); } }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.easyBonus = DEFAULT_SETTINGS.easyBonus; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("MAX_INTERVAL")).setDesc(t("MAX_INTERVAL_DESC")).addText( (text) => text.setValue(this.plugin.data.settings.maximumInterval.toString()).onChange((value) => { applySettingsUpdate(async () => { const numValue = Number.parseInt(value); if (!isNaN(numValue)) { if (numValue < 1) { new import_obsidian3.Notice(t("MAX_INTERVAL_MIN_WARNING")); text.setValue( this.plugin.data.settings.maximumInterval.toString() ); return; } this.plugin.data.settings.maximumInterval = numValue; await this.plugin.savePluginData(); } else { new import_obsidian3.Notice(t("VALID_NUMBER_WARNING")); } }); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.maximumInterval = DEFAULT_SETTINGS.maximumInterval; await this.plugin.savePluginData(); this.display(); }); }); new import_obsidian3.Setting(containerEl).setName(t("MAX_LINK_CONTRIB")).setDesc(t("MAX_LINK_CONTRIB_DESC")).addSlider( (slider) => slider.setLimits(0, 100, 1).setValue(this.plugin.data.settings.maxLinkFactor * 100).setDynamicTooltip().onChange(async (value) => { this.plugin.data.settings.maxLinkFactor = value / 100; await this.plugin.savePluginData(); }) ).addExtraButton((button) => { button.setIcon("reset").setTooltip(t("RESET_DEFAULT")).onClick(async () => { this.plugin.data.settings.maxLinkFactor = DEFAULT_SETTINGS.maxLinkFactor; await this.plugin.savePluginData(); this.display(); }); }); } async tabDeveloper(containerEl) { containerEl.createEl("h3", { text: `${t("LOGGING")}` }); new import_obsidian3.Setting(containerEl).setName(t("DISPLAY_DEBUG_INFO")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.showDebugMessages).onChange(async (value) => { this.plugin.data.settings.showDebugMessages = value; await this.plugin.savePluginData(); }) ); new import_obsidian3.Setting(containerEl).setName(t("DISPLAY_PARSER_DEBUG_INFO")).addToggle( (toggle) => toggle.setValue(this.plugin.data.settings.showPaserDebugMessages).onChange(async (value) => { this.plugin.data.settings.showPaserDebugMessages = value; setDebugParser(this.plugin.data.settings.showPaserDebugMessages); await this.plugin.savePluginData(); }) ); containerEl.createEl("h3", { text: t("GROUP_CONTRIBUTING") }); containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("GITHUB_SOURCE_CODE", { github_project_url: "https://github.com/st3v3nmw/obsidian-spaced-repetition" }) ); containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("CODE_CONTRIBUTION_INFO", { code_contribution_url: "https://www.stephenmwangi.com/obsidian-spaced-repetition/contributing/#code" }) ); containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("TRANSLATION_CONTRIBUTION_INFO", { translation_contribution_url: "https://www.stephenmwangi.com/obsidian-spaced-repetition/contributing/#translating" }) ); } async tabHelp(containerEl) { containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("CHECK_WIKI", { wiki_url: "https://www.stephenmwangi.com/obsidian-spaced-repetition/" }) ); containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("GITHUB_DISCUSSIONS", { discussions_url: "https://github.com/st3v3nmw/obsidian-spaced-repetition/discussions/" }) ); containerEl.createEl("p").insertAdjacentHTML( "beforeend", t("GITHUB_ISSUES", { issues_url: "https://github.com/st3v3nmw/obsidian-spaced-repetition/issues/" }) ); } rememberLastPosition(container_element) { const last_position = this.last_position; this.tab_structure.buttons[last_position.tab_name].click(); container_element.scrollTo({ top: this.last_position.scroll_position, behavior: "auto" }); container_element.addEventListener("scroll", (_) => { this.last_position.scroll_position = container_element.scrollTop; }); for (const tab_name in this.tab_structure.buttons) { const button = this.tab_structure.buttons[tab_name]; button.onClickEvent((_) => { last_position.tab_name = tab_name; }); } } }; // src/sr-file.ts var import_obsidian4 = require("obsidian"); var frontmatterTagPseudoLineNum = -1; var SrTFile = class { constructor(vault, metadataCache, file) { this.vault = vault; this.metadataCache = metadataCache; this.file = file; } get path() { return this.file.path; } get basename() { return this.file.basename; } get tfile() { return this.file; } async getFrontmatter() { const fileCachedData = this.metadataCache.getFileCache(this.file) || {}; const frontmatter = fileCachedData.frontmatter || {}; const result = /* @__PURE__ */ new Map(); for (const [key, value] of Object.entries(frontmatter)) { const v = Array.isArray(value) && value.length > 0 ? value[0] : value; const vStr = v + ""; result.set(key, vStr); } return result; } getAllTagsFromCache() { const fileCachedData = this.metadataCache.getFileCache(this.file) || {}; const result = (0, import_obsidian4.getAllTags)(fileCachedData) || []; return result; } getAllTagsFromText() { var _a2; const result = []; const fileCachedData = this.metadataCache.getFileCache(this.file) || {}; if (((_a2 = fileCachedData.tags) == null ? void 0 : _a2.length) > 0) { result.push(...fileCachedData.tags); } result.push(...this.getFrontmatterTags(fileCachedData.frontmatter)); return result; } getFrontmatterTags(frontmatter) { const result = []; const frontmatterTags = frontmatter != null ? frontmatter["tags"] + "" : null; if (frontmatterTags) { const tagStrList = parseObsidianFrontmatterTag(frontmatterTags); for (const str of tagStrList) { const tag = { tag: str, position: { start: { line: frontmatterTagPseudoLineNum, col: null, offset: null }, end: { line: frontmatterTagPseudoLineNum, col: null, offset: null } } }; result.push(tag); } } return result; } getQuestionContext(cardLine) { const fileCachedData = this.metadataCache.getFileCache(this.file) || {}; const headings = fileCachedData.headings || []; const stack2 = []; for (const heading of headings) { if (heading.position.start.line > cardLine) { break; } while (stack2.length > 0 && stack2[stack2.length - 1].level >= heading.level) { stack2.pop(); } stack2.push(heading); } const result = []; for (const headingObj of stack2) { headingObj.heading = headingObj.heading.replace(/\[\^\d+\]/gm, "").trim(); result.push(headingObj.heading); } return result; } getTextDirection() { let result = 0 /* Unspecified */; const fileCache = this.metadataCache.getFileCache(this.file); const frontMatter = fileCache == null ? void 0 : fileCache.frontmatter; if (frontMatter && (frontMatter == null ? void 0 : frontMatter.direction)) { const str = (frontMatter.direction + "").toLowerCase(); result = str == "rtl" ? 2 /* Rtl */ : 1 /* Ltr */; } return result; } async read() { return await this.vault.read(this.file); } async write(content) { await this.vault.modify(this.file, content); } }; // src/note-question-parser.ts var NoteQuestionParser = class { constructor(settings) { this.settings = settings; } async createQuestionList(noteFile, defaultTextDirection, folderTopicPath, onlyKeepQuestionsWithTopicPath) { this.noteFile = noteFile; const tagCacheList = noteFile.getAllTagsFromCache(); const hasTopicPaths = tagCacheList.some((item) => SettingsUtil.isFlashcardTag(this.settings, item)) || folderTopicPath.hasPath; if (hasTopicPaths) { const noteText = await noteFile.read(); const tagCompleteList = noteFile.getAllTagsFromText(); [this.frontmatterText, this.contentText] = splitNoteIntoFrontmatterAndContent(noteText); let textDirection = noteFile.getTextDirection(); if (textDirection == 0 /* Unspecified */) textDirection = defaultTextDirection; this.questionList = this.doCreateQuestionList( noteText, textDirection, folderTopicPath, this.tagCacheList ); [this.frontmatterTopicPathList, this.contentTopicPathInfo] = this.analyseTagCacheList(tagCompleteList); for (const question of this.questionList) { question.topicPathList = this.determineQuestionTopicPathList(question); } if (onlyKeepQuestionsWithTopicPath) { this.questionList = this.questionList.filter((q) => q.topicPathList); } } else { this.questionList = []; } return this.questionList; } doCreateQuestionList(noteText, textDirection, folderTopicPath, tagCacheList) { this.noteText = noteText; this.noteLines = splitTextIntoLineArray(noteText); this.folderTopicPath = folderTopicPath; this.tagCacheList = tagCacheList; const result = []; const parsedQuestionInfoList = this.parseQuestions(); for (const parsedQuestionInfo of parsedQuestionInfoList) { const question = this.createQuestionObject(parsedQuestionInfo, textDirection); const cardFrontBackList = CardFrontBackUtil.expand( question.questionType, question.questionText.actualQuestion, this.settings ); let cardScheduleInfoList = DataStore.getInstance().questionCreateSchedule( question.questionText.original, null ); const correctLength = cardFrontBackList.length; if (cardScheduleInfoList.length > correctLength) { question.hasChanged = true; cardScheduleInfoList = cardScheduleInfoList.slice(0, correctLength); } const cardList = this.createCardList(cardFrontBackList, cardScheduleInfoList); question.setCardList(cardList); result.push(question); } return result; } parseQuestions() { const parserOptions = { singleLineCardSeparator: this.settings.singleLineCardSeparator, singleLineReversedCardSeparator: this.settings.singleLineReversedCardSeparator, multilineCardSeparator: this.settings.multilineCardSeparator, multilineReversedCardSeparator: this.settings.multilineReversedCardSeparator, multilineCardEndMarker: this.settings.multilineCardEndMarker, convertHighlightsToClozes: this.settings.convertHighlightsToClozes, convertBoldTextToClozes: this.settings.convertBoldTextToClozes, convertCurlyBracketsToClozes: this.settings.convertCurlyBracketsToClozes }; const result = parseEx(this.contentText, parserOptions); return result; } createQuestionObject(parsedQuestionInfo, textDirection) { const questionContext = this.noteFile.getQuestionContext( parsedQuestionInfo.firstLineNum ); const result = Question.Create( this.settings, parsedQuestionInfo, null, // We haven't worked out the TopicPathList yet textDirection, questionContext ); return result; } createCardList(cardFrontBackList, cardScheduleInfoList) { const siblings = []; for (let i = 0; i < cardFrontBackList.length; i++) { const { front, back } = cardFrontBackList[i]; const hasScheduleInfo = i < cardScheduleInfoList.length; const schedule = cardScheduleInfoList[i]; const cardObj = new Card({ front, back, cardIdx: i }); cardObj.scheduleInfo = hasScheduleInfo ? schedule : null; siblings.push(cardObj); } return siblings; } // // Given the complete list of tags within a note: // 1. Only keep tags that are specified in the user settings as flashcardTags // 2. Filter out tags that are question specific // (these will be parsed separately by class QuestionText) // 3. Combine all tags present logically grouped together into a single entry // - All tags present on the same line grouped together // - All tags within frontmatter grouped together (note that multiple tags // within frontmatter appear on separate lines) // analyseTagCacheList(tagCacheList) { this.flashcardTagList = tagCacheList.filter( (item) => SettingsUtil.isFlashcardTag(this.settings, item.tag) ); if (this.flashcardTagList.length > 0) { this.flashcardTagList.sort((a, b) => a.position.start.line - b.position.start.line); } let frontmatterLineCount = 0; if (this.frontmatterText) { frontmatterLineCount = splitTextIntoLineArray(this.frontmatterText).length; } const frontmatterTopicPathList = this.determineFrontmatterTopicPathList( this.flashcardTagList, frontmatterLineCount ); const contentTopicPathList = this.determineContentTopicPathList( this.flashcardTagList, frontmatterLineCount ); return [frontmatterTopicPathList, contentTopicPathList]; } determineFrontmatterTopicPathList(flashcardTagList, frontmatterLineCount) { let result = null; const noteLevelTagList = flashcardTagList.filter( (item) => item.position.start.line == frontmatterTagPseudoLineNum && this.isNoteLevelFlashcardTag(item) ); if (noteLevelTagList.length > 0) { if (this.frontmatterText) { const frontmatterTagCacheList = noteLevelTagList.filter( (item) => item.position.start.line < frontmatterLineCount ); if (frontmatterTagCacheList.length > 0) result = this.createTopicPathList( frontmatterTagCacheList, frontmatterTagPseudoLineNum ); } } return result; } determineContentTopicPathList(flashcardTagList, frontmatterLineCount) { const result = []; const contentStartLineNum = frontmatterLineCount; const contentTagCacheList = flashcardTagList.filter( (item) => item.position.start.line >= contentStartLineNum && this.isNoteLevelFlashcardTag(item) ); let list = []; for (const tag of contentTagCacheList) { if (list.length != 0) { const startLineNum = list[0].position.start.line; if (startLineNum != tag.position.start.line) { result.push(this.createTopicPathList(list, startLineNum)); list = []; } } list.push(tag); } if (list.length > 0) { const startLineNum = list[0].position.start.line; result.push(this.createTopicPathList(list, startLineNum)); } return result; } isNoteLevelFlashcardTag(tagItem) { const tagLineNum = tagItem.position.start.line; const isQuestionSpecific = this.questionList.some( (q) => q.parsedQuestionInfo.isQuestionLineNum(tagLineNum) ); return !isQuestionSpecific; } createTopicPathList(tagCacheList, lineNum) { const list = []; for (const tagCache of tagCacheList) { list.push(TopicPath.getTopicPathFromTag(tagCache.tag)); } return new TopicPathList(list, lineNum); } createTopicPathList_FromSingleTag(tagCache) { const list = [TopicPath.getTopicPathFromTag(tagCache.tag)]; return new TopicPathList(list, tagCache.position.start.line); } // // A question can be associated with multiple topics (hence returning TopicPathList and not just TopicPath). // // If the question has an associated question specific TopicPath, then that is returned. // // Else the first TopicPathList prior to the question (in the order present in the file) is returned. // That could be either the tags within the note's frontmatter, or tags on lines within the note's content. // determineQuestionTopicPathList(question) { let result; if (this.settings.convertFoldersToDecks) { result = new TopicPathList([this.folderTopicPath]); } else { const questionText = question.questionText; if (questionText.topicPathWithWs) result = new TopicPathList( [questionText.topicPathWithWs.topicPath], question.parsedQuestionInfo.firstLineNum ); else { result = this.frontmatterTopicPathList; for (let i = this.contentTopicPathInfo.length - 1; i >= 0; i--) { const topicPathList = this.contentTopicPathInfo[i]; if (topicPathList.lineNum < question.parsedQuestionInfo.firstLineNum) { result = topicPathList; break; } } if (!result && this.flashcardTagList.length > 0) { result = this.createTopicPathList_FromSingleTag(this.flashcardTagList[0]); } } } return result; } }; // src/note-file-loader.ts var NoteFileLoader = class { constructor(settings) { this.settings = settings; } async load(noteFile, defaultTextDirection, folderTopicPath) { this.noteFile = noteFile; const questionParser = new NoteQuestionParser(this.settings); const onlyKeepQuestionsWithTopicPath = true; const questionList = await questionParser.createQuestionList( noteFile, defaultTextDirection, folderTopicPath, onlyKeepQuestionsWithTopicPath ); const result = new Note(noteFile, questionList); return result; } }; // src/note-review-deck.ts var SchedNote = class { constructor(note, dueUnix) { this.note = note; this.dueUnix = dueUnix; } isDue(todayUnix) { return this.dueUnix <= todayUnix; } }; var NoteReviewDeck = class { constructor(name) { this._newNotes = []; this._scheduledNotes = []; this._dueNotesCount = 0; this._deckName = name; this._activeFolders = /* @__PURE__ */ new Set([this._deckName, t("TODAY")]); } get deckName() { return this._deckName; } get newNotes() { return this._newNotes; } get scheduledNotes() { return this._scheduledNotes; } get dueNotesCount() { return this._dueNotesCount; } get activeFolders() { return this._activeFolders; } calcDueNotesCount(todayUnix) { this._dueNotesCount = 0; this.scheduledNotes.forEach((scheduledNote) => { if (scheduledNote.isDue(todayUnix)) { this._dueNotesCount++; } }); } sortNotesByDateAndImportance(pageranks) { this._newNotes = this.newNotes.sort( (a, b) => (pageranks[b.path] || 0) - (pageranks[a.path] || 0) ); this._scheduledNotes = this.scheduledNotes.sort((a, b) => { const result = a.dueUnix - b.dueUnix; if (result != 0) { return result; } return (pageranks[b.note.path] || 0) - (pageranks[a.note.path] || 0); }); } determineNextNote(openRandomNote) { const todayUnix = globalDateProvider.today.valueOf(); const dueNotes = this.scheduledNotes.filter((note) => note.isDue(todayUnix)); if (dueNotes.length > 0) { const index = openRandomNote ? globalRandomNumberProvider.getInteger(0, dueNotes.length - 1) : 0; return dueNotes[index].note; } if (this.newNotes.length > 0) { const index = openRandomNote ? globalRandomNumberProvider.getInteger(0, this.newNotes.length - 1) : 0; return this.newNotes[index]; } return null; } }; // src/note-review-queue.ts var NoteReviewQueue = class { get reviewDecks() { return this._reviewDecks; } get dueNotesCount() { return this._dueNotesCount; } get reviewDeckNameList() { return [...this._reviewDecks.keys()]; } init() { this._reviewDecks = /* @__PURE__ */ new Map(); } calcDueNotesCount(todayUnix) { this._dueNotesCount = 0; this._reviewDecks.forEach((reviewDeck) => { reviewDeck.calcDueNotesCount(todayUnix); this._dueNotesCount += reviewDeck.dueNotesCount; }); } addNoteToQueue(noteFile, noteSchedule, matchedNoteTags) { for (const matchedNoteTag of matchedNoteTags) { if (!this.reviewDecks.has(matchedNoteTag)) { this.reviewDecks.set(matchedNoteTag, new NoteReviewDeck(matchedNoteTag)); } } if (noteSchedule == null) { for (const matchedNoteTag of matchedNoteTags) { this.reviewDecks.get(matchedNoteTag).newNotes.push(noteFile); } } else { for (const matchedNoteTag of matchedNoteTags) { this.reviewDecks.get(matchedNoteTag).scheduledNotes.push(new SchedNote(noteFile, noteSchedule.dueDateAsUnix)); } } } updateScheduleInfo(note, scheduleInfo) { this.reviewDecks.forEach((reviewDeck) => { let wasDueInDeck = false; for (const scheduledNote of reviewDeck.scheduledNotes) { if (scheduledNote.note.path === note.path) { scheduledNote.dueUnix = scheduleInfo.dueDate.valueOf(); wasDueInDeck = true; break; } } if (!wasDueInDeck) { reviewDeck.newNotes.splice( reviewDeck.newNotes.findIndex((newNote) => newNote.path === note.path), 1 ); reviewDeck.scheduledNotes.push(new SchedNote(note, scheduleInfo.dueDate.valueOf())); } }); } }; // src/core.ts var OsrCore = class { constructor() { this._reviewableDeckTree = new Deck2("root", null); } get noteReviewQueue() { return this._noteReviewQueue; } get remainingDeckTree() { return this._remainingDeckTree; } get reviewableDeckTree() { return this._reviewableDeckTree; } get questionPostponementList() { return this._questionPostponementList; } /* c8 ignore start */ get dueDateFlashcardHistogram() { return this._dueDateFlashcardHistogram; } get dueDateNoteHistogram() { return this._dueDateNoteHistogram; } get easeByPath() { return this._easeByPath; } get cardStats() { return this._cardStats; } /* c8 ignore stop */ init(questionPostponementList, osrNoteLinkInfoFinder, settings, dataChangedHandler) { this.settings = settings; this.osrNoteLinkInfoFinder = osrNoteLinkInfoFinder; this.dataChangedHandler = dataChangedHandler; this._noteReviewQueue = new NoteReviewQueue(); this._questionPostponementList = questionPostponementList; this._dueDateFlashcardHistogram = new CardDueDateHistogram(); this._dueDateNoteHistogram = new NoteDueDateHistogram(); } loadInit() { this.osrNoteGraph = new OsrNoteGraph(this.osrNoteLinkInfoFinder); this._noteReviewQueue.init(); this.fullDeckTree = new Deck2("root", null); } async processFile(noteFile) { const schedule = await DataStoreAlgorithm.getInstance().noteGetSchedule(noteFile); let note = null; this.osrNoteGraph.processLinks(noteFile.path); const topicPath = this.findTopicPath(noteFile); if (topicPath.hasPath) { note = await this.loadNote(noteFile, topicPath); note.appendCardsToDeck(this.fullDeckTree); } SrsAlgorithm.getInstance().noteOnLoadedNote(noteFile.path, note, schedule == null ? void 0 : schedule.latestEase); const tags = noteFile.getAllTagsFromCache(); const matchedNoteTags = SettingsUtil.filterForNoteReviewTag(this.settings, tags); if (matchedNoteTags.length == 0) { return; } const noteSchedule = await DataStoreAlgorithm.getInstance().noteGetSchedule(noteFile); this._noteReviewQueue.addNoteToQueue(noteFile, noteSchedule, matchedNoteTags); } finaliseLoad() { this.osrNoteGraph.generatePageRanks(); this._reviewableDeckTree = DeckTreeFilter.filterForReviewableCards(this.fullDeckTree); this._reviewableDeckTree.sortSubdecksList(); this._remainingDeckTree = DeckTreeFilter.filterForRemainingCards( this._questionPostponementList, this._reviewableDeckTree, 1 /* Review */ ); const calc = new DeckTreeStatsCalculator(); this._cardStats = calc.calculate(this._reviewableDeckTree); this.calculateDerivedInfo(); this._dueDateFlashcardHistogram.calculateFromDeckTree(this._reviewableDeckTree); if (this.dataChangedHandler) this.dataChangedHandler(); } async saveNoteReviewResponse(noteFile, response, settings) { const originalNoteSchedule = await DataStoreAlgorithm.getInstance().noteGetSchedule(noteFile); let noteSchedule; if (originalNoteSchedule == null) { noteSchedule = SrsAlgorithm.getInstance().noteCalcNewSchedule( noteFile.path, this.osrNoteGraph, response, this._dueDateNoteHistogram ); } else { noteSchedule = SrsAlgorithm.getInstance().noteCalcUpdatedSchedule( noteFile.path, originalNoteSchedule, response, this._dueDateNoteHistogram ); } await DataStoreAlgorithm.getInstance().noteSetSchedule(noteFile, noteSchedule); this._noteReviewQueue.updateScheduleInfo(noteFile, noteSchedule); this.calculateDerivedInfo(); await this.buryAllCardsInNote(settings, noteFile); if (this.dataChangedHandler) this.dataChangedHandler(); } calculateDerivedInfo() { const todayUnix = globalDateProvider.today.valueOf(); this.noteReviewQueue.calcDueNotesCount(todayUnix); this._dueDateNoteHistogram.calculateFromReviewDecksAndSort( this.noteReviewQueue.reviewDecks, this.osrNoteGraph ); } async buryAllCardsInNote(settings, noteFile) { if (settings.burySiblingCards) { const topicPath = this.findTopicPath(noteFile); const noteX = await this.loadNote(noteFile, topicPath); if (noteX.questionList.length > 0) { for (const question of noteX.questionList) { this._questionPostponementList.add(question); } await this._questionPostponementList.write(); } } } async loadNote(noteFile, topicPath) { const loader = new NoteFileLoader(this.settings); const note = await loader.load(noteFile, this.defaultTextDirection, topicPath); if (note.hasChanged) { await note.writeNoteFile(this.settings); } return note; } findTopicPath(note) { return TopicPath.getTopicPathOfFile(note, this.settings); } }; // src/app-core.ts var OsrAppCore = class extends OsrCore { constructor(app) { super(); this._syncLock = false; this.app = app; } get syncLock() { return this._syncLock; } async loadVault() { if (this._syncLock) { return; } this._syncLock = true; try { this.loadInit(); const notes = this.app.vault.getMarkdownFiles(); for (const noteFile of notes) { if (SettingsUtil.isPathInNoteIgnoreFolder(this.settings, noteFile.path)) { continue; } const file = this.createSrTFile(noteFile); await this.processFile(file); } this.finaliseLoad(); } finally { this._syncLock = false; } } createSrTFile(note) { return new SrTFile(this.app.vault, this.app.metadataCache, note); } }; // src/data-store-algorithm/data-store-in-note-algorithm-osr.ts var import_moment3 = __toESM(require_moment()); var DataStoreInNote_AlgorithmOsr = class { constructor(settings) { this.settings = settings; } async noteGetSchedule(note) { let result = null; const frontmatter = await note.getFrontmatter(); if (frontmatter && frontmatter.has("sr-due") && frontmatter.has("sr-interval") && frontmatter.has("sr-ease")) { const dueDate = (0, import_moment3.default)(frontmatter.get("sr-due"), ALLOWED_DATE_FORMATS); const interval = parseFloat(frontmatter.get("sr-interval")); const ease = parseFloat(frontmatter.get("sr-ease")); result = new RepItemScheduleInfo_Osr(dueDate, interval, ease); } return result; } async noteSetSchedule(note, repItemScheduleInfo) { let fileText = await note.read(); const schedInfo = repItemScheduleInfo; const dueString = formatDate_YYYY_MM_DD(schedInfo.dueDate); const interval = schedInfo.interval; const ease = schedInfo.latestEase; if (SCHEDULING_INFO_REGEX.test(fileText)) { const schedulingInfo = SCHEDULING_INFO_REGEX.exec(fileText); fileText = fileText.replace( SCHEDULING_INFO_REGEX, `--- ${schedulingInfo[1]}sr-due: ${dueString} sr-interval: ${interval} sr-ease: ${ease} ${schedulingInfo[5]}---` ); } else if (YAML_FRONT_MATTER_REGEX.test(fileText)) { const existingYaml = YAML_FRONT_MATTER_REGEX.exec(fileText); fileText = fileText.replace( YAML_FRONT_MATTER_REGEX, `--- ${existingYaml[1]}sr-due: ${dueString} sr-interval: ${interval} sr-ease: ${ease} ---` ); } else { fileText = `--- sr-due: ${dueString} sr-interval: ${interval} sr-ease: ${ease} --- ${fileText}`; } await note.write(fileText); } questionFormatScheduleAsHtmlComment(question) { let result = SR_HTML_COMMENT_BEGIN; for (let i = 0; i < question.cards.length; i++) { const card = question.cards[i]; result += this.formatCardSchedule(card); } result += SR_HTML_COMMENT_END; return result; } formatCardSchedule(card) { let result; if (card.hasSchedule) { const schedule = card.scheduleInfo; const dateStr = schedule.dueDate ? formatDate_YYYY_MM_DD(schedule.dueDate) : RepItemScheduleInfo_Osr.dummyDueDateForNewCard; result = `!${dateStr},${schedule.interval},${schedule.latestEase}`; } else { result = `!${RepItemScheduleInfo_Osr.dummyDueDateForNewCard},${RepItemScheduleInfo_Osr.initialInterval},${this.settings.baseEase}`; } return result; } }; // src/data-stores/store-in-note/note.ts var StoreInNote = class { constructor(settings) { this.settings = settings; } questionCreateSchedule(originalQuestionText, _) { let scheduling = [ ...originalQuestionText.matchAll(MULTI_SCHEDULING_EXTRACTOR) ]; if (scheduling.length === 0) scheduling = [...originalQuestionText.matchAll(LEGACY_SCHEDULING_EXTRACTOR)]; const result = []; for (let i = 0; i < scheduling.length; i++) { const match2 = scheduling[i]; const dueDateStr = match2[1]; const interval = parseInt(match2[2]); const ease = parseInt(match2[3]); const dueDate = DateUtil.dateStrToMoment(dueDateStr); let info; if (dueDate == null || formatDate_YYYY_MM_DD(dueDate) == RepItemScheduleInfo_Osr.dummyDueDateForNewCard) { info = null; } else { const delayBeforeReviewTicks = dueDate.valueOf() - globalDateProvider.today.valueOf(); info = new RepItemScheduleInfo_Osr(dueDate, interval, ease, delayBeforeReviewTicks); } result.push(info); } return result; } questionRemoveScheduleInfo(questionText) { return questionText.replace(//gm, ""); } async questionWriteSchedule(question) { await this.questionWrite(question); } async questionWrite(question) { const fileText = await question.note.file.read(); const newText = question.updateQuestionWithinNoteText(fileText, this.settings); await question.note.file.write(newText); question.hasChanged = false; } }; // src/gui/flashcard-modal.tsx var import_obsidian8 = require("obsidian"); // src/gui/deck-list-view.tsx var import_vhtml = __toESM(require_vhtml()); var DeckListView = class { constructor(plugin, settings, reviewSequencer, contentEl, startReviewOfDeck) { this.plugin = plugin; this.settings = settings; this.reviewSequencer = reviewSequencer; this.modalContentEl = contentEl; this.startReviewOfDeck = startReviewOfDeck; this.init(); } /** * Initializes all static elements in the DeckListView */ init() { this.view = this.modalContentEl.createDiv(); this.view.addClasses(["sr-deck-list", "sr-is-hidden"]); this.header = this.view.createDiv(); this.header.addClass("sr-header"); this.title = this.header.createDiv(); this.title.addClass("sr-title"); this.title.setText(t("DECKS")); this.stats = this.header.createDiv(); this.stats.addClass("sr-header-stats-container"); this._createHeaderStats(); this.content = this.view.createDiv(); this.content.addClass("sr-content"); } /** * Shows the DeckListView & rerenders dynamic elements */ show() { this.mode = 0 /* DecksList */; this._createHeaderStats(); this.content.empty(); for (const deck of this.reviewSequencer.originalDeckTree.subdecks) { this._createTree(deck, this.content); } if (this.view.hasClass("sr-is-hidden")) { this.view.removeClass("sr-is-hidden"); } } /** * Hides the DeckListView */ hide() { if (!this.view.hasClass("sr-is-hidden")) { this.view.addClass("sr-is-hidden"); } } /** * Closes the DeckListView */ close() { this.hide(); } // -> Header _createHeaderStats() { const statistics = this.reviewSequencer.getDeckStats(TopicPath.emptyPath); this.stats.empty(); this._createHeaderStatsContainer(t("DUE_CARDS"), statistics.dueCount, "sr-bg-green"); this._createHeaderStatsContainer(t("NEW_CARDS"), statistics.newCount, "sr-bg-blue"); this._createHeaderStatsContainer(t("TOTAL_CARDS"), statistics.totalCount, "sr-bg-red"); } _createHeaderStatsContainer(statsLable, statsNumber, statsClass) { const statsContainer = this.stats.createDiv(); statsContainer.ariaLabel = statsLable; statsContainer.addClasses([ "tag-pane-tag-count", "tree-item-flair", "sr-header-stats-count", statsClass ]); const lable = statsContainer.createDiv(); lable.setText(statsLable + ":"); const number = statsContainer.createDiv(); number.setText(statsNumber.toString()); } // -> Tree content _createTree(deck, container) { const deckTree = container.createDiv("tree-item sr-tree-item-container"); const deckTreeSelf = deckTree.createDiv( "tree-item-self tag-pane-tag is-clickable sr-tree-item-row" ); const shouldBeInitiallyExpanded = this.settings.initiallyExpandAllSubdecksInTree; let collapsed = !shouldBeInitiallyExpanded; let collapseIconEl = null; if (deck.subdecks.length > 0) { collapseIconEl = deckTreeSelf.createDiv("tree-item-icon collapse-icon"); collapseIconEl.innerHTML = COLLAPSE_ICON; collapseIconEl.childNodes[0].style.transform = collapsed ? "rotate(-90deg)" : ""; } const deckTreeInner = deckTreeSelf.createDiv("tree-item-inner"); const deckTreeInnerText = deckTreeInner.createDiv("tag-pane-tag-text"); deckTreeInnerText.innerHTML += /* @__PURE__ */ (0, import_vhtml.default)("span", { class: "tag-pane-tag-self" }, deck.deckName); const deckTreeOuter = deckTreeSelf.createDiv(); deckTreeOuter.addClasses(["tree-item-flair-outer", "sr-tree-stats-container"]); const deckStats = this.reviewSequencer.getDeckStats(deck.getTopicPath()); this._createStats(deckStats, deckTreeOuter); const deckTreeChildren = deckTree.createDiv("tree-item-children"); deckTreeChildren.style.display = collapsed ? "none" : "block"; if (deck.subdecks.length > 0) { collapseIconEl.addEventListener("click", (e) => { if (collapsed) { collapseIconEl.childNodes[0].style.transform = ""; deckTreeChildren.style.display = "block"; } else { collapseIconEl.childNodes[0].style.transform = "rotate(-90deg)"; deckTreeChildren.style.display = "none"; } e.stopPropagation(); collapsed = !collapsed; }); } deckTreeSelf.addEventListener("click", () => { this.startReviewOfDeck(deck); }); for (const subdeck of deck.subdecks) { this._createTree(subdeck, deckTreeChildren); } } _createStats(statistics, statsWrapper) { statsWrapper.empty(); this._createStatsContainer( t("DUE_CARDS"), statistics.dueCount, "sr-bg-green", statsWrapper ); this._createStatsContainer(t("NEW_CARDS"), statistics.newCount, "sr-bg-blue", statsWrapper); this._createStatsContainer( t("TOTAL_CARDS"), statistics.totalCount, "sr-bg-red", statsWrapper ); } _createStatsContainer(statsLable, statsNumber, statsClass, statsWrapper) { const statsContainer = statsWrapper.createDiv(); statsContainer.ariaLabel = statsLable; statsContainer.addClasses([ "tag-pane-tag-count", "tree-item-flair", "sr-tree-stats-count", statsClass ]); statsContainer.setText(statsNumber.toString()); } }; // src/gui/edit-modal.tsx var import_obsidian5 = require("obsidian"); var FlashcardEditModal = class _FlashcardEditModal extends import_obsidian5.Modal { constructor(app, existingText, textDirection) { super(app); this.didSaveChanges = false; // -> Functions & helpers this.saveClickCallback = (_) => this.save(); this.cancelClickCallback = (_) => this.cancel(); this.saveOnEnterCallback = (evt) => { if ((evt.ctrlKey || evt.metaKey) && evt.key === "Enter") { evt.preventDefault(); this.save(); } }; this.modalText = existingText; this.changedText = existingText; this.textDirection = textDirection; this.waitForClose = new Promise((resolve2, reject) => { this.resolvePromise = resolve2; this.rejectPromise = reject; }); this.modalEl.addClasses(["sr-modal", "sr-edit-modal"]); this.init(); this.open(); } static Prompt(app, placeholder, textDirection) { const newPromptModal = new _FlashcardEditModal(app, placeholder, textDirection); return newPromptModal.waitForClose; } /** * Initializes all components of the EditModal */ init() { var _a2; this.contentEl.empty(); this.contentEl.addClass("sr-edit-view"); this.title = this.contentEl.createDiv(); this.title.setText(t("EDIT_CARD")); this.title.addClass("sr-title"); this.textArea = this.contentEl.createEl("textarea"); this.textArea.addClass("sr-input"); this.textArea.setText((_a2 = this.modalText) != null ? _a2 : ""); this.textArea.addEventListener("keydown", this.saveOnEnterCallback); if (this.textDirection == 2 /* Rtl */) { this.textArea.setAttribute("dir", "rtl"); } this._createResponse(this.contentEl); } /** * Opens the EditModal */ onOpen() { super.onOpen(); this.textArea.focus(); } /** * Closes the EditModal */ onClose() { super.onClose(); this.resolveInput(); this.removeInputListener(); } save() { this.didSaveChanges = true; this.changedText = this.textArea.value; this.close(); } cancel() { this.close(); } resolveInput() { if (!this.didSaveChanges) this.rejectPromise(t("NO_INPUT")); else this.resolvePromise(this.changedText); } removeInputListener() { this.textArea.removeEventListener("keydown", this.saveOnEnterCallback); } // -> Response section _createResponseButton(container, text, colorClass, callback2) { const button = container.createEl("button"); button.addClasses(["sr-response-button", colorClass]); button.setText(text); button.addEventListener("click", callback2); } _createResponse(mainContentContainer) { const response = mainContentContainer.createDiv(); response.addClass("sr-response"); this._createResponseButton(response, t("CANCEL"), "sr-bg-red", this.cancelClickCallback); this._createResponseButton(response, "", "sr-spacer", () => { }); this._createResponseButton(response, t("SAVE"), "sr-bg-green", this.saveClickCallback); } }; // src/gui/flashcard-review-view.tsx var import_moment4 = __toESM(require_moment()); var import_obsidian7 = require("obsidian"); // src/utils/renderers.ts var import_obsidian6 = require("obsidian"); var RenderMarkdownWrapper = class { constructor(app, plugin, notePath) { this.app = app; this.notePath = notePath; this.plugin = plugin; } // slightly modified version of the renderMarkdown function in // https://github.com/mgmeyers/obsidian-kanban/blob/main/src/KanbanView.tsx async renderMarkdownWrapper(markdownString, containerEl, textDirection, recursiveDepth = 0) { if (recursiveDepth > 4) return; let el; if (textDirection == 2 /* Rtl */) { el = containerEl.createDiv(); el.setAttribute("dir", "rtl"); } else el = containerEl; import_obsidian6.MarkdownRenderer.render(this.app, markdownString, el, this.notePath, this.plugin); el.findAll(".internal-embed").forEach((el2) => { const link2 = this.parseLink(el2.getAttribute("src")); if (!link2.target) { el2.innerText = link2.text; } else if (link2.target instanceof import_obsidian6.TFile) { if (link2.target.extension !== "md") { this.embedMediaFile(el2, link2.target); } else { } } }); } parseLink(src) { const linkComponentsRegex = /^(? [^#^]+)?(?:#(?!\^)(? .+)|#\^(? .+)|#)?$/; const matched = typeof src === "string" && src.match(linkComponentsRegex); const file = matched.groups.file || this.notePath; const target = this.plugin.app.metadataCache.getFirstLinkpathDest(file, this.notePath); return { text: matched[0], file: matched.groups.file, heading: matched.groups.heading, blockId: matched.groups.blockId, target }; } embedMediaFile(el, target) { el.innerText = ""; if (IMAGE_FORMATS.includes(target.extension)) { el.createEl( "img", { attr: { src: this.plugin.app.vault.getResourcePath(target) } }, (img) => { if (el.hasAttribute("width")) img.setAttribute("width", el.getAttribute("width")); else img.setAttribute("width", "100%"); if (el.hasAttribute("alt")) img.setAttribute("alt", el.getAttribute("alt")); el.addEventListener( "click", (ev) => ev.target.style.minWidth = ev.target.style.minWidth === "100%" ? null : "100%" ); } ); el.addClasses(["image-embed", "is-loaded"]); } else if (AUDIO_FORMATS.includes(target.extension) || VIDEO_FORMATS.includes(target.extension)) { el.createEl( AUDIO_FORMATS.includes(target.extension) ? "audio" : "video", { attr: { controls: "", src: this.plugin.app.vault.getResourcePath(target) } }, (audio) => { if (el.hasAttribute("alt")) audio.setAttribute("alt", el.getAttribute("alt")); } ); el.addClasses(["media-embed", "is-loaded"]); } else { el.innerText = target.path; } } }; // src/gui/flashcard-review-view.tsx var FlashcardReviewView = class { constructor(app, plugin, settings, reviewSequencer, reviewMode, contentEl, modalEl, backClickHandler, editClickHandler) { this._keydownHandler = (e) => { if (document.activeElement.nodeName === "TEXTAREA" || this.mode === 3 /* Closed */) { return; } const consumeKeyEvent = () => { e.preventDefault(); e.stopPropagation(); }; switch (e.code) { case "KeyS": this._skipCurrentCard(); consumeKeyEvent(); break; case "Space": if (this.mode === 1 /* Front */) { this._showAnswer(); consumeKeyEvent(); } else if (this.mode === 2 /* Back */) { this._processReview(1 /* Good */); consumeKeyEvent(); } break; case "Enter": case "NumpadEnter": if (this.mode !== 1 /* Front */) { break; } this._showAnswer(); consumeKeyEvent(); break; case "Numpad1": case "Digit1": if (this.mode !== 2 /* Back */) { break; } this._processReview(2 /* Hard */); consumeKeyEvent(); break; case "Numpad2": case "Digit2": if (this.mode !== 2 /* Back */) { break; } this._processReview(1 /* Good */); consumeKeyEvent(); break; case "Numpad3": case "Digit3": if (this.mode !== 2 /* Back */) { break; } this._processReview(0 /* Easy */); consumeKeyEvent(); break; case "Numpad0": case "Digit0": if (this.mode !== 2 /* Back */) { break; } this._processReview(3 /* Reset */); consumeKeyEvent(); break; default: break; } }; this.app = app; this.plugin = plugin; this.settings = settings; this.reviewSequencer = reviewSequencer; this.reviewMode = reviewMode; this.backClickHandler = backClickHandler; this.editClickHandler = editClickHandler; this.modalContentEl = contentEl; this.modalEl = modalEl; this.chosenDeck = null; this.init(); } /** * Initializes all static elements in the FlashcardView */ init() { this._createBackButton(); this.view = this.modalContentEl.createDiv(); this.view.addClasses(["sr-flashcard", "sr-is-hidden"]); this.header = this.view.createDiv(); this.header.addClass("sr-header"); this.titleWrapper = this.header.createDiv(); this.titleWrapper.addClass("sr-title-wrapper"); this.title = this.titleWrapper.createDiv(); this.title.addClass("sr-title"); this.subTitle = this.titleWrapper.createDiv(); this.subTitle.addClasses(["sr-sub-title", "sr-is-hidden"]); this.controls = this.header.createDiv(); this.controls.addClass("sr-controls"); this._createCardControls(); if (this.settings.showContextInCards) { this.context = this.view.createDiv(); this.context.addClass("sr-context"); } this.content = this.view.createDiv(); this.content.addClass("sr-content"); this.response = this.view.createDiv(); this.response.addClass("sr-response"); this._createResponseButtons(); } /** * Shows the FlashcardView if it is hidden */ async show(chosenDeck) { if (!this.view.hasClass("sr-is-hidden")) { return; } this.chosenDeck = chosenDeck; await this._drawContent(); this.view.removeClass("sr-is-hidden"); this.backButton.removeClass("sr-is-hidden"); document.addEventListener("keydown", this._keydownHandler); } /** * Refreshes all dynamic elements */ async refresh() { await this._drawContent(); } /** * Hides the FlashcardView if it is visible */ hide() { if (this.view.hasClass("sr-is-hidden")) { return; } document.removeEventListener("keydown", this._keydownHandler); this.view.addClass("sr-is-hidden"); this.backButton.addClass("sr-is-hidden"); } /** * Closes the FlashcardView */ close() { this.hide(); document.removeEventListener("keydown", this._keydownHandler); } // #region -> Functions & helpers async _drawContent() { this.mode = 1 /* Front */; const currentDeck = this.reviewSequencer.currentDeck; this._setTitle(this.chosenDeck); this._setSubTitle(this.chosenDeck, currentDeck); this.resetButton.disabled = true; if (this.settings.showContextInCards) { this.context.setText( this._formatQuestionContextText(this._currentQuestion.questionContext) ); } this.content.empty(); const wrapper = new RenderMarkdownWrapper( this.app, this.plugin, this._currentNote.filePath ); await wrapper.renderMarkdownWrapper( this._currentCard.front, this.content, this._currentQuestion.questionText.textDirection ); this.content.scrollTop = 0; this._resetResponseButtons(); } _displayCurrentCardInfoNotice() { var _a2; const schedule = this._currentCard.scheduleInfo; const currentEaseStr = t("CURRENT_EASE_HELP_TEXT") + ((_a2 = schedule == null ? void 0 : schedule.latestEase) != null ? _a2 : t("NEW")); const currentIntervalStr = t("CURRENT_INTERVAL_HELP_TEXT") + textInterval(schedule == null ? void 0 : schedule.interval, false); const generatedFromStr = t("CARD_GENERATED_FROM", { notePath: this._currentQuestion.note.filePath }); new import_obsidian7.Notice(currentEaseStr + "\n" + currentIntervalStr + "\n" + generatedFromStr); } get _currentCard() { return this.reviewSequencer.currentCard; } get _currentQuestion() { return this.reviewSequencer.currentQuestion; } get _currentNote() { return this.reviewSequencer.currentNote; } _showAnswer() { const timeNow = (0, import_moment4.now)(); if (this.lastPressed && timeNow - this.lastPressed < this.plugin.data.settings.reviewButtonDelay) { return; } this.lastPressed = timeNow; this.mode = 2 /* Back */; this.resetButton.disabled = false; if (this._currentQuestion.questionType !== 4 /* Cloze */) { const hr = document.createElement("hr"); hr.addClass("sr-card-divide"); this.content.appendChild(hr); } else { this.content.empty(); } const wrapper = new RenderMarkdownWrapper( this.app, this.plugin, this._currentNote.filePath ); wrapper.renderMarkdownWrapper( this._currentCard.back, this.content, this._currentQuestion.questionText.textDirection ); this.answerButton.addClass("sr-is-hidden"); this.hardButton.removeClass("sr-is-hidden"); this.easyButton.removeClass("sr-is-hidden"); if (this.reviewMode === 0 /* Cram */) { this.response.addClass("is-cram"); this.hardButton.setText(`${this.settings.flashcardHardText}`); this.easyButton.setText(`${this.settings.flashcardEasyText}`); } else { this.goodButton.removeClass("sr-is-hidden"); this._setupEaseButton( this.hardButton, this.settings.flashcardHardText, 2 /* Hard */ ); this._setupEaseButton( this.goodButton, this.settings.flashcardGoodText, 1 /* Good */ ); this._setupEaseButton( this.easyButton, this.settings.flashcardEasyText, 0 /* Easy */ ); } } async _processReview(response) { const timeNow = (0, import_moment4.now)(); if (this.lastPressed && timeNow - this.lastPressed < this.plugin.data.settings.reviewButtonDelay) { return; } this.lastPressed = timeNow; await this.reviewSequencer.processReview(response); await this._handleSkipCard(); } async _skipCurrentCard() { this.reviewSequencer.skipCurrentCard(); await this._handleSkipCard(); } async _handleSkipCard() { if (this._currentCard != null) await this.refresh(); else this.backClickHandler(); } _formatQuestionContextText(questionContext) { const separator = " > "; let result = this._currentNote.file.basename; questionContext.forEach((context) => { if (context.startsWith("[[") && context.endsWith("]]")) { context = context.replace("[[", "").replace("]]", ""); if (context.contains("|")) { context = context.split("|")[1]; } } result += separator + context; }); return result; } // -> Header _createBackButton() { this.backButton = this.modalEl.createDiv(); this.backButton.addClasses(["sr-back-button", "sr-is-hidden"]); (0, import_obsidian7.setIcon)(this.backButton, "arrow-left"); this.backButton.setAttribute("aria-label", t("BACK")); this.backButton.addEventListener("click", () => { this.backClickHandler(); }); } _setTitle(deck) { let text = deck.deckName; const deckStats = this.reviewSequencer.getDeckStats(deck.getTopicPath()); const cardsInQueue = deckStats.dueCount + deckStats.newCount; text += `: ${cardsInQueue}`; this.title.setText(text); } _setSubTitle(chosenDeck, currentDeck) { if (chosenDeck.subdecks.length === 0) { if (!this.subTitle.hasClass("sr-is-hidden")) { this.subTitle.addClass("sr-is-hidden"); } return; } if (this.subTitle.hasClass("sr-is-hidden")) { this.subTitle.removeClass("sr-is-hidden"); } let text = `${currentDeck.deckName}`; const isRandomMode = this.settings.flashcardCardOrder === "EveryCardRandomDeckAndCard"; if (!isRandomMode) { const subDecksWithCardsInQueue = chosenDeck.subdecks.filter((subDeck) => { const deckStats = this.reviewSequencer.getDeckStats(subDeck.getTopicPath()); return deckStats.dueCount + deckStats.newCount > 0; }); text = `${t("DECKS")}: ${subDecksWithCardsInQueue.length} | ${text}`; text += `: ${currentDeck.getCardCount(2 /* All */, false)}`; } this.subTitle.setText(text); } // -> Controls _createCardControls() { this._createEditButton(); this._createResetButton(); this._createCardInfoButton(); this._createSkipButton(); } _createEditButton() { this.editButton = this.controls.createEl("button"); this.editButton.addClasses(["sr-button", "sr-edit-button"]); (0, import_obsidian7.setIcon)(this.editButton, "edit"); this.editButton.setAttribute("aria-label", t("EDIT_CARD")); this.editButton.addEventListener("click", async () => { this.editClickHandler(); }); } _createResetButton() { this.resetButton = this.controls.createEl("button"); this.resetButton.addClasses(["sr-button", "sr-reset-button"]); (0, import_obsidian7.setIcon)(this.resetButton, "refresh-cw"); this.resetButton.setAttribute("aria-label", t("RESET_CARD_PROGRESS")); this.resetButton.addEventListener("click", () => { this._processReview(3 /* Reset */); }); } _createCardInfoButton() { this.infoButton = this.controls.createEl("button"); this.infoButton.addClasses(["sr-button", "sr-info-button"]); (0, import_obsidian7.setIcon)(this.infoButton, "info"); this.infoButton.setAttribute("aria-label", "View Card Info"); this.infoButton.addEventListener("click", async () => { this._displayCurrentCardInfoNotice(); }); } _createSkipButton() { this.skipButton = this.controls.createEl("button"); this.skipButton.addClasses(["sr-button", "sr-skip-button"]); (0, import_obsidian7.setIcon)(this.skipButton, "chevrons-right"); this.skipButton.setAttribute("aria-label", t("SKIP")); this.skipButton.addEventListener("click", () => { this._skipCurrentCard(); }); } // -> Response _createResponseButtons() { this._createShowAnswerButton(); this._createHardButton(); this._createGoodButton(); this._createEasyButton(); } _resetResponseButtons() { this.answerButton.removeClass("sr-is-hidden"); this.hardButton.addClass("sr-is-hidden"); this.goodButton.addClass("sr-is-hidden"); this.easyButton.addClass("sr-is-hidden"); } _createShowAnswerButton() { this.answerButton = this.response.createEl("button"); this.answerButton.addClasses(["sr-response-button", "sr-show-answer-button", "sr-bg-blue"]); this.answerButton.setText(t("SHOW_ANSWER")); this.answerButton.addEventListener("click", () => { this._showAnswer(); }); } _createHardButton() { this.hardButton = this.response.createEl("button"); this.hardButton.addClasses([ "sr-response-button", "sr-hard-button", "sr-bg-red", "sr-is-hidden" ]); this.hardButton.setText(this.settings.flashcardHardText); this.hardButton.addEventListener("click", () => { this._processReview(2 /* Hard */); }); } _createGoodButton() { this.goodButton = this.response.createEl("button"); this.goodButton.addClasses([ "sr-response-button", "sr-good-button", "sr-bg-blue", "sr-is-hidden" ]); this.goodButton.setText(this.settings.flashcardGoodText); this.goodButton.addEventListener("click", () => { this._processReview(1 /* Good */); }); } _createEasyButton() { this.easyButton = this.response.createEl("button"); this.easyButton.addClasses([ "sr-response-button", "sr-hard-button", "sr-bg-green", "sr-is-hidden" ]); this.easyButton.setText(this.settings.flashcardEasyText); this.easyButton.addEventListener("click", () => { this._processReview(0 /* Easy */); }); } _setupEaseButton(button, buttonName, reviewResponse) { const schedule = this.reviewSequencer.determineCardSchedule( reviewResponse, this._currentCard ); const interval = schedule.interval; if (import_obsidian7.Platform.isMobile) { button.setText(textInterval(interval, true)); } else { button.setText(`${buttonName} - ${textInterval(interval, false)}`); } } }; // src/gui/flashcard-modal.tsx var FlashcardModal = class extends import_obsidian8.Modal { constructor(app, plugin, settings, reviewSequencer, reviewMode) { super(app); this.plugin = plugin; this.settings = settings; this.reviewSequencer = reviewSequencer; this.reviewMode = reviewMode; this.modalEl.style.height = this.settings.flashcardHeightPercentage + "%"; this.modalEl.style.maxHeight = this.settings.flashcardHeightPercentage + "%"; this.modalEl.style.width = this.settings.flashcardWidthPercentage + "%"; this.modalEl.style.maxWidth = this.settings.flashcardWidthPercentage + "%"; this.modalEl.setAttribute("id", "sr-modal"); this.contentEl.addClass("sr-modal-content"); this.deckView = new DeckListView( this.plugin, this.settings, this.reviewSequencer, this.contentEl, this._startReviewOfDeck.bind(this) ); this.flashcardView = new FlashcardReviewView( this.app, this.plugin, this.settings, this.reviewSequencer, this.reviewMode, this.contentEl, this.modalEl, this._showDecksList.bind(this), this._doEditQuestionText.bind(this) ); } onOpen() { this._showDecksList(); } onClose() { this.mode = 3 /* Closed */; this.deckView.close(); this.flashcardView.close(); } _showDecksList() { this._hideFlashcard(); this.deckView.show(); } _hideDecksList() { this.deckView.hide(); } _showFlashcard(deck) { this._hideDecksList(); this.flashcardView.show(deck); } _hideFlashcard() { this.flashcardView.hide(); } _startReviewOfDeck(deck) { this.reviewSequencer.setCurrentDeck(deck.getTopicPath()); if (this.reviewSequencer.hasCurrentCard) { this._showFlashcard(deck); } else { this._showDecksList(); } } async _doEditQuestionText() { const currentQ = this.reviewSequencer.currentQuestion; const textPrompt = currentQ.questionText.actualQuestion; const editModal = FlashcardEditModal.Prompt( this.app, textPrompt, currentQ.questionText.textDirection ); editModal.then(async (modifiedCardText) => { this.reviewSequencer.updateCurrentQuestionText(modifiedCardText); }).catch((reason) => console.log(reason)); } }; // src/gui/review-queue-list-view.tsx var import_obsidian9 = require("obsidian"); var REVIEW_QUEUE_VIEW_TYPE = "review-queue-list-view"; var ReviewQueueListView = class extends import_obsidian9.ItemView { get noteReviewQueue() { return this.nextNoteReviewHandler.noteReviewQueue; } constructor(leaf, app, nextNoteReviewHandler, settings) { super(leaf); this.nextNoteReviewHandler = nextNoteReviewHandler; this.settings = settings; this.registerEvent(this.app.workspace.on("file-open", () => this.redraw())); this.registerEvent(this.app.vault.on("rename", () => this.redraw())); } getViewType() { return REVIEW_QUEUE_VIEW_TYPE; } getDisplayText() { return t("NOTES_REVIEW_QUEUE"); } getIcon() { return "SpacedRepIcon"; } onHeaderMenu(menu) { menu.addItem((item) => { item.setTitle(t("CLOSE")).setIcon("cross").onClick(() => { this.app.workspace.detachLeavesOfType(REVIEW_QUEUE_VIEW_TYPE); }); }); } redraw() { const activeFile = this.app.workspace.getActiveFile(); const rootEl = createDiv("tree-item nav-folder mod-root"); const childrenEl = rootEl.createDiv("tree-item-children nav-folder-children"); for (const [deckKey, deck] of this.noteReviewQueue.reviewDecks) { const deckCollapsed = !deck.activeFolders.has(deck.deckName); const deckFolderEl = this.createRightPaneFolder( childrenEl, deckKey, deckCollapsed, false, deck ).getElementsByClassName("tree-item-children nav-folder-children")[0]; if (deck.newNotes.length > 0) { const newNotesFolderEl = this.createRightPaneFolder( deckFolderEl, t("NEW"), !deck.activeFolders.has(t("NEW")), deckCollapsed, deck ); for (const newFile of deck.newNotes) { const fileIsOpen = activeFile && newFile.path === activeFile.path; if (fileIsOpen) { deck.activeFolders.add(deck.deckName); deck.activeFolders.add(t("NEW")); this.changeFolderFolding(newNotesFolderEl); this.changeFolderFolding(deckFolderEl); } this.createRightPaneFile( newNotesFolderEl, newFile.tfile, fileIsOpen, !deck.activeFolders.has(t("NEW")), deck ); } } if (deck.scheduledNotes.length > 0) { const now2 = Date.now(); let currUnix = -1; let schedFolderEl = null, folderTitle = ""; const maxDaysToRender = this.settings.maxNDaysNotesReviewQueue; for (const sNote of deck.scheduledNotes) { if (sNote.dueUnix != currUnix) { const nDays = Math.ceil((sNote.dueUnix - now2) / TICKS_PER_DAY); if (nDays > maxDaysToRender) { break; } if (nDays === -1) { folderTitle = t("YESTERDAY"); } else if (nDays === 0) { folderTitle = t("TODAY"); } else if (nDays === 1) { folderTitle = t("TOMORROW"); } else { folderTitle = new Date(sNote.dueUnix).toDateString(); } schedFolderEl = this.createRightPaneFolder( deckFolderEl, folderTitle, !deck.activeFolders.has(folderTitle), deckCollapsed, deck ); currUnix = sNote.dueUnix; } const fileIsOpen = activeFile && sNote.note.path === activeFile.path; if (fileIsOpen) { deck.activeFolders.add(deck.deckName); deck.activeFolders.add(folderTitle); this.changeFolderFolding(schedFolderEl); this.changeFolderFolding(deckFolderEl); } this.createRightPaneFile( schedFolderEl, sNote.note.tfile, fileIsOpen, !deck.activeFolders.has(folderTitle), deck ); } } } const contentEl = this.containerEl.children[1]; contentEl.empty(); contentEl.appendChild(rootEl); } createRightPaneFolder(parentEl, folderTitle, collapsed, hidden, deck) { const folderEl = parentEl.createDiv("tree-item nav-folder"); const folderTitleEl = folderEl.createDiv("tree-item-self nav-folder-title"); const childrenEl = folderEl.createDiv( "tree-item-children nav-folder-children" ); const collapseIconEl = folderTitleEl.createDiv( "tree-item-icon collapse-icon nav-folder-collapse-indicator" ); collapseIconEl.innerHTML = COLLAPSE_ICON; this.changeFolderFolding(folderEl, collapsed); folderTitleEl.createDiv("tree-item-inner nav-folder-title-content").setText(folderTitle); if (hidden) { folderEl.style.display = "none"; } folderTitleEl.onClickEvent(() => { this.changeFolderFolding(folderEl, !folderEl.hasClass("is-collapsed")); childrenEl.style.display = !folderEl.hasClass("is-collapsed") ? "block" : "none"; if (!folderEl.hasClass("is-collapsed")) { deck.activeFolders.delete(folderTitle); } else { deck.activeFolders.add(folderTitle); } }); return folderEl; } createRightPaneFile(folderEl, file, fileElActive, hidden, deck) { const navFileEl = folderEl.getElementsByClassName("tree-item-children nav-folder-children")[0].createDiv("nav-file"); if (hidden) { navFileEl.style.display = "none"; } const navFileTitle = navFileEl.createDiv("tree-item-self nav-file-title"); if (fileElActive) { navFileTitle.addClass("is-active"); } navFileTitle.createDiv("tree-item-inner nav-file-title-content").setText(file.basename); navFileTitle.addEventListener( "click", async (event) => { event.preventDefault(); await this.nextNoteReviewHandler.openNote(deck.deckName, file); return false; }, false ); navFileTitle.addEventListener( "contextmenu", (event) => { event.preventDefault(); const fileMenu = new import_obsidian9.Menu(); this.app.workspace.trigger("file-menu", fileMenu, file, "my-context-menu", null); fileMenu.showAtPosition({ x: event.pageX, y: event.pageY }); return false; }, false ); } changeFolderFolding(folderEl, collapsed = false) { if (collapsed) { folderEl.addClass("is-collapsed"); const collapseIconEl = folderEl.find("div.nav-folder-collapse-indicator"); collapseIconEl.addClass("is-collapsed"); } else { folderEl.removeClass("is-collapsed"); const collapseIconEl = folderEl.find("div.nav-folder-collapse-indicator"); collapseIconEl.removeClass("is-collapsed"); } } }; // src/gui/sidebar.tsx var OsrSidebar = class { get app() { return this.plugin.app; } constructor(plugin, settings, nextNoteReviewHandler) { this.plugin = plugin; this.settings = settings; this.nextNoteReviewHandler = nextNoteReviewHandler; } redraw() { if (this.getActiveLeaf(REVIEW_QUEUE_VIEW_TYPE)) this.reviewQueueListView.redraw(); } getActiveLeaf(type) { const leaves = this.app.workspace.getLeavesOfType(type); if (leaves.length == 0) { return null; } return leaves[0]; } async init() { this.plugin.registerView(REVIEW_QUEUE_VIEW_TYPE, (leaf) => { return this.reviewQueueListView = new ReviewQueueListView( leaf, this.app, this.nextNoteReviewHandler, this.settings ); }); if (this.settings.enableNoteReviewPaneOnStartup && this.getActiveLeaf(REVIEW_QUEUE_VIEW_TYPE) == null) { await this.activateReviewQueueViewPanel(); } } async activateReviewQueueViewPanel() { await this.app.workspace.getRightLeaf(false).setViewState({ type: REVIEW_QUEUE_VIEW_TYPE, active: true }); } async openReviewQueueView() { let reviewQueueLeaf = this.getActiveLeaf(REVIEW_QUEUE_VIEW_TYPE); if (reviewQueueLeaf == null) { await this.activateReviewQueueViewPanel(); reviewQueueLeaf = this.getActiveLeaf(REVIEW_QUEUE_VIEW_TYPE); } if (reviewQueueLeaf !== null) { this.app.workspace.revealLeaf(reviewQueueLeaf); } } }; // node_modules/.pnpm/@kurkle+color@0.3.2/node_modules/@kurkle/color/dist/color.esm.js function round(v) { return v + 0.5 | 0; } var lim = (v, l, h4) => Math.max(Math.min(v, h4), l); function p2b(v) { return lim(round(v * 2.55), 0, 255); } function n2b(v) { return lim(round(v * 255), 0, 255); } function b2n(v) { return lim(round(v / 2.55) / 100, 0, 1); } function n2p(v) { return lim(round(v * 100), 0, 100); } var map$1 = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15 }; var hex2 = [..."0123456789ABCDEF"]; var h1 = (b) => hex2[b & 15]; var h2 = (b) => hex2[(b & 240) >> 4] + hex2[b & 15]; var eq = (b) => (b & 240) >> 4 === (b & 15); var isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a); function hexParse(str) { var len = str.length; var ret; if (str[0] === "#") { if (len === 4 || len === 5) { ret = { r: 255 & map$1[str[1]] * 17, g: 255 & map$1[str[2]] * 17, b: 255 & map$1[str[3]] * 17, a: len === 5 ? map$1[str[4]] * 17 : 255 }; } else if (len === 7 || len === 9) { ret = { r: map$1[str[1]] << 4 | map$1[str[2]], g: map$1[str[3]] << 4 | map$1[str[4]], b: map$1[str[5]] << 4 | map$1[str[6]], a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255 }; } } return ret; } var alpha = (a, f) => a < 255 ? f(a) : ""; function hexString(v) { var f = isShort(v) ? h1 : h2; return v ? "#" + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : void 0; } var HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/; function hsl2rgbn(h4, s, l) { const a = s * Math.min(l, 1 - l); const f = (n, k = (n + h4 / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); return [f(0), f(8), f(4)]; } function hsv2rgbn(h4, s, v) { const f = (n, k = (n + h4 / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0); return [f(5), f(3), f(1)]; } function hwb2rgbn(h4, w, b) { const rgb = hsl2rgbn(h4, 1, 0.5); let i; if (w + b > 1) { i = 1 / (w + b); w *= i; b *= i; } for (i = 0; i < 3; i++) { rgb[i] *= 1 - w - b; rgb[i] += w; } return rgb; } function hueValue(r, g, b, d, max) { if (r === max) { return (g - b) / d + (g < b ? 6 : 0); } if (g === max) { return (b - r) / d + 2; } return (r - g) / d + 4; } function rgb2hsl(v) { const range = 255; const r = v.r / range; const g = v.g / range; const b = v.b / range; const max = Math.max(r, g, b); const min = Math.min(r, g, b); const l = (max + min) / 2; let h4, s, d; if (max !== min) { d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); h4 = hueValue(r, g, b, d, max); h4 = h4 * 60 + 0.5; } return [h4 | 0, s || 0, l]; } function calln(f, a, b, c) { return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b); } function hsl2rgb(h4, s, l) { return calln(hsl2rgbn, h4, s, l); } function hwb2rgb(h4, w, b) { return calln(hwb2rgbn, h4, w, b); } function hsv2rgb(h4, s, v) { return calln(hsv2rgbn, h4, s, v); } function hue(h4) { return (h4 % 360 + 360) % 360; } function hueParse(str) { const m = HUE_RE.exec(str); let a = 255; let v; if (!m) { return; } if (m[5] !== v) { a = m[6] ? p2b(+m[5]) : n2b(+m[5]); } const h4 = hue(+m[2]); const p1 = +m[3] / 100; const p2 = +m[4] / 100; if (m[1] === "hwb") { v = hwb2rgb(h4, p1, p2); } else if (m[1] === "hsv") { v = hsv2rgb(h4, p1, p2); } else { v = hsl2rgb(h4, p1, p2); } return { r: v[0], g: v[1], b: v[2], a }; } function rotate(v, deg) { var h4 = rgb2hsl(v); h4[0] = hue(h4[0] + deg); h4 = hsl2rgb(h4); v.r = h4[0]; v.g = h4[1]; v.b = h4[2]; } function hslString(v) { if (!v) { return; } const a = rgb2hsl(v); const h4 = a[0]; const s = n2p(a[1]); const l = n2p(a[2]); return v.a < 255 ? `hsla(${h4}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h4}, ${s}%, ${l}%)`; } var map = { x: "dark", Z: "light", Y: "re", X: "blu", W: "gr", V: "medium", U: "slate", A: "ee", T: "ol", S: "or", B: "ra", C: "lateg", D: "ights", R: "in", Q: "turquois", E: "hi", P: "ro", O: "al", N: "le", M: "de", L: "yello", F: "en", K: "ch", G: "arks", H: "ea", I: "ightg", J: "wh" }; var names$1 = { OiceXe: "f0f8ff", antiquewEte: "faebd7", aqua: "ffff", aquamarRe: "7fffd4", azuY: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "0", blanKedOmond: "ffebcd", Xe: "ff", XeviTet: "8a2be2", bPwn: "a52a2a", burlywood: "deb887", caMtXe: "5f9ea0", KartYuse: "7fff00", KocTate: "d2691e", cSO: "ff7f50", cSnflowerXe: "6495ed", cSnsilk: "fff8dc", crimson: "dc143c", cyan: "ffff", xXe: "8b", xcyan: "8b8b", xgTMnPd: "b8860b", xWay: "a9a9a9", xgYF: "6400", xgYy: "a9a9a9", xkhaki: "bdb76b", xmagFta: "8b008b", xTivegYF: "556b2f", xSange: "ff8c00", xScEd: "9932cc", xYd: "8b0000", xsOmon: "e9967a", xsHgYF: "8fbc8f", xUXe: "483d8b", xUWay: "2f4f4f", xUgYy: "2f4f4f", xQe: "ced1", xviTet: "9400d3", dAppRk: "ff1493", dApskyXe: "bfff", dimWay: "696969", dimgYy: "696969", dodgerXe: "1e90ff", fiYbrick: "b22222", flSOwEte: "fffaf0", foYstWAn: "228b22", fuKsia: "ff00ff", gaRsbSo: "dcdcdc", ghostwEte: "f8f8ff", gTd: "ffd700", gTMnPd: "daa520", Way: "808080", gYF: "8000", gYFLw: "adff2f", gYy: "808080", honeyMw: "f0fff0", hotpRk: "ff69b4", RdianYd: "cd5c5c", Rdigo: "4b0082", ivSy: "fffff0", khaki: "f0e68c", lavFMr: "e6e6fa", lavFMrXsh: "fff0f5", lawngYF: "7cfc00", NmoncEffon: "fffacd", ZXe: "add8e6", ZcSO: "f08080", Zcyan: "e0ffff", ZgTMnPdLw: "fafad2", ZWay: "d3d3d3", ZgYF: "90ee90", ZgYy: "d3d3d3", ZpRk: "ffb6c1", ZsOmon: "ffa07a", ZsHgYF: "20b2aa", ZskyXe: "87cefa", ZUWay: "778899", ZUgYy: "778899", ZstAlXe: "b0c4de", ZLw: "ffffe0", lime: "ff00", limegYF: "32cd32", lRF: "faf0e6", magFta: "ff00ff", maPon: "800000", VaquamarRe: "66cdaa", VXe: "cd", VScEd: "ba55d3", VpurpN: "9370db", VsHgYF: "3cb371", VUXe: "7b68ee", VsprRggYF: "fa9a", VQe: "48d1cc", VviTetYd: "c71585", midnightXe: "191970", mRtcYam: "f5fffa", mistyPse: "ffe4e1", moccasR: "ffe4b5", navajowEte: "ffdead", navy: "80", Tdlace: "fdf5e6", Tive: "808000", TivedBb: "6b8e23", Sange: "ffa500", SangeYd: "ff4500", ScEd: "da70d6", pOegTMnPd: "eee8aa", pOegYF: "98fb98", pOeQe: "afeeee", pOeviTetYd: "db7093", papayawEp: "ffefd5", pHKpuff: "ffdab9", peru: "cd853f", pRk: "ffc0cb", plum: "dda0dd", powMrXe: "b0e0e6", purpN: "800080", YbeccapurpN: "663399", Yd: "ff0000", Psybrown: "bc8f8f", PyOXe: "4169e1", saddNbPwn: "8b4513", sOmon: "fa8072", sandybPwn: "f4a460", sHgYF: "2e8b57", sHshell: "fff5ee", siFna: "a0522d", silver: "c0c0c0", skyXe: "87ceeb", UXe: "6a5acd", UWay: "708090", UgYy: "708090", snow: "fffafa", sprRggYF: "ff7f", stAlXe: "4682b4", tan: "d2b48c", teO: "8080", tEstN: "d8bfd8", tomato: "ff6347", Qe: "40e0d0", viTet: "ee82ee", JHt: "f5deb3", wEte: "ffffff", wEtesmoke: "f5f5f5", Lw: "ffff00", LwgYF: "9acd32" }; function unpack() { const unpacked = {}; const keys = Object.keys(names$1); const tkeys = Object.keys(map); let i, j, k, ok, nk; for (i = 0; i < keys.length; i++) { ok = nk = keys[i]; for (j = 0; j < tkeys.length; j++) { k = tkeys[j]; nk = nk.replace(k, map[k]); } k = parseInt(names$1[ok], 16); unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255]; } return unpacked; } var names; function nameParse(str) { if (!names) { names = unpack(); names.transparent = [0, 0, 0, 0]; } const a = names[str.toLowerCase()]; return a && { r: a[0], g: a[1], b: a[2], a: a.length === 4 ? a[3] : 255 }; } var RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/; function rgbParse(str) { const m = RGB_RE.exec(str); let a = 255; let r, g, b; if (!m) { return; } if (m[7] !== r) { const v = +m[7]; a = m[8] ? p2b(v) : lim(v * 255, 0, 255); } r = +m[1]; g = +m[3]; b = +m[5]; r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255)); g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255)); b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255)); return { r, g, b, a }; } function rgbString(v) { return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`); } var to = (v) => v <= 31308e-7 ? v * 12.92 : Math.pow(v, 1 / 2.4) * 1.055 - 0.055; var from = (v) => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); function interpolate2(rgb1, rgb2, t2) { const r = from(b2n(rgb1.r)); const g = from(b2n(rgb1.g)); const b = from(b2n(rgb1.b)); return { r: n2b(to(r + t2 * (from(b2n(rgb2.r)) - r))), g: n2b(to(g + t2 * (from(b2n(rgb2.g)) - g))), b: n2b(to(b + t2 * (from(b2n(rgb2.b)) - b))), a: rgb1.a + t2 * (rgb2.a - rgb1.a) }; } function modHSL(v, i, ratio) { if (v) { let tmp = rgb2hsl(v); tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1)); tmp = hsl2rgb(tmp); v.r = tmp[0]; v.g = tmp[1]; v.b = tmp[2]; } } function clone(v, proto) { return v ? Object.assign(proto || {}, v) : v; } function fromObject(input) { var v = { r: 0, g: 0, b: 0, a: 255 }; if (Array.isArray(input)) { if (input.length >= 3) { v = { r: input[0], g: input[1], b: input[2], a: 255 }; if (input.length > 3) { v.a = n2b(input[3]); } } } else { v = clone(input, { r: 0, g: 0, b: 0, a: 1 }); v.a = n2b(v.a); } return v; } function functionParse(str) { if (str.charAt(0) === "r") { return rgbParse(str); } return hueParse(str); } var Color = class _Color { constructor(input) { if (input instanceof _Color) { return input; } const type = typeof input; let v; if (type === "object") { v = fromObject(input); } else if (type === "string") { v = hexParse(input) || nameParse(input) || functionParse(input); } this._rgb = v; this._valid = !!v; } get valid() { return this._valid; } get rgb() { var v = clone(this._rgb); if (v) { v.a = b2n(v.a); } return v; } set rgb(obj) { this._rgb = fromObject(obj); } rgbString() { return this._valid ? rgbString(this._rgb) : void 0; } hexString() { return this._valid ? hexString(this._rgb) : void 0; } hslString() { return this._valid ? hslString(this._rgb) : void 0; } mix(color2, weight) { if (color2) { const c1 = this.rgb; const c2 = color2.rgb; let w2; const p = weight === w2 ? 0.5 : weight; const w = 2 * p - 1; const a = c1.a - c2.a; const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2; w2 = 1 - w1; c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5; c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5; c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5; c1.a = p * c1.a + (1 - p) * c2.a; this.rgb = c1; } return this; } interpolate(color2, t2) { if (color2) { this._rgb = interpolate2(this._rgb, color2._rgb, t2); } return this; } clone() { return new _Color(this.rgb); } alpha(a) { this._rgb.a = n2b(a); return this; } clearer(ratio) { const rgb = this._rgb; rgb.a *= 1 - ratio; return this; } greyscale() { const rgb = this._rgb; const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11); rgb.r = rgb.g = rgb.b = val; return this; } opaquer(ratio) { const rgb = this._rgb; rgb.a *= 1 + ratio; return this; } negate() { const v = this._rgb; v.r = 255 - v.r; v.g = 255 - v.g; v.b = 255 - v.b; return this; } lighten(ratio) { modHSL(this._rgb, 2, ratio); return this; } darken(ratio) { modHSL(this._rgb, 2, -ratio); return this; } saturate(ratio) { modHSL(this._rgb, 1, ratio); return this; } desaturate(ratio) { modHSL(this._rgb, 1, -ratio); return this; } rotate(deg) { rotate(this._rgb, deg); return this; } }; // node_modules/.pnpm/chart.js@4.4.4/node_modules/chart.js/dist/chunks/helpers.segment.js function noop() { } var uid = /* @__PURE__ */ (() => { let id = 0; return () => id++; })(); function isNullOrUndef(value) { return value === null || typeof value === "undefined"; } function isArray(value) { if (Array.isArray && Array.isArray(value)) { return true; } const type = Object.prototype.toString.call(value); if (type.slice(0, 7) === "[object" && type.slice(-6) === "Array]") { return true; } return false; } function isObject(value) { return value !== null && Object.prototype.toString.call(value) === "[object Object]"; } function isNumberFinite(value) { return (typeof value === "number" || value instanceof Number) && isFinite(+value); } function finiteOrDefault(value, defaultValue) { return isNumberFinite(value) ? value : defaultValue; } function valueOrDefault(value, defaultValue) { return typeof value === "undefined" ? defaultValue : value; } var toPercentage = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 : +value / dimension; var toDimension = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 * dimension : +value; function callback(fn, args, thisArg) { if (fn && typeof fn.call === "function") { return fn.apply(thisArg, args); } } function each(loopable, fn, thisArg, reverse) { let i, len, keys; if (isArray(loopable)) { len = loopable.length; if (reverse) { for (i = len - 1; i >= 0; i--) { fn.call(thisArg, loopable[i], i); } } else { for (i = 0; i < len; i++) { fn.call(thisArg, loopable[i], i); } } } else if (isObject(loopable)) { keys = Object.keys(loopable); len = keys.length; for (i = 0; i < len; i++) { fn.call(thisArg, loopable[keys[i]], keys[i]); } } } function _elementsEqual(a0, a1) { let i, ilen, v0, v1; if (!a0 || !a1 || a0.length !== a1.length) { return false; } for (i = 0, ilen = a0.length; i < ilen; ++i) { v0 = a0[i]; v1 = a1[i]; if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) { return false; } } return true; } function clone2(source) { if (isArray(source)) { return source.map(clone2); } if (isObject(source)) { const target = /* @__PURE__ */ Object.create(null); const keys = Object.keys(source); const klen = keys.length; let k = 0; for (; k < klen; ++k) { target[keys[k]] = clone2(source[keys[k]]); } return target; } return source; } function isValidKey(key) { return [ "__proto__", "prototype", "constructor" ].indexOf(key) === -1; } function _merger(key, target, source, options2) { if (!isValidKey(key)) { return; } const tval = target[key]; const sval = source[key]; if (isObject(tval) && isObject(sval)) { merge(tval, sval, options2); } else { target[key] = clone2(sval); } } function merge(target, source, options2) { const sources = isArray(source) ? source : [ source ]; const ilen = sources.length; if (!isObject(target)) { return target; } options2 = options2 || {}; const merger = options2.merger || _merger; let current; for (let i = 0; i < ilen; ++i) { current = sources[i]; if (!isObject(current)) { continue; } const keys = Object.keys(current); for (let k = 0, klen = keys.length; k < klen; ++k) { merger(keys[k], target, current, options2); } } return target; } function mergeIf(target, source) { return merge(target, source, { merger: _mergerIf }); } function _mergerIf(key, target, source) { if (!isValidKey(key)) { return; } const tval = target[key]; const sval = source[key]; if (isObject(tval) && isObject(sval)) { mergeIf(tval, sval); } else if (!Object.prototype.hasOwnProperty.call(target, key)) { target[key] = clone2(sval); } } var keyResolvers = { // Chart.helpers.core resolveObjectKey should resolve empty key to root object "": (v) => v, // default resolvers x: (o) => o.x, y: (o) => o.y }; function _splitKey(key) { const parts = key.split("."); const keys = []; let tmp = ""; for (const part of parts) { tmp += part; if (tmp.endsWith("\\")) { tmp = tmp.slice(0, -1) + "."; } else { keys.push(tmp); tmp = ""; } } return keys; } function _getKeyResolver(key) { const keys = _splitKey(key); return (obj) => { for (const k of keys) { if (k === "") { break; } obj = obj && obj[k]; } return obj; }; } function resolveObjectKey(obj, key) { const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key)); return resolver(obj); } function _capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1); } var defined = (value) => typeof value !== "undefined"; var isFunction = (value) => typeof value === "function"; var setsEqual = (a, b) => { if (a.size !== b.size) { return false; } for (const item of a) { if (!b.has(item)) { return false; } } return true; }; function _isClickEvent(e) { return e.type === "mouseup" || e.type === "click" || e.type === "contextmenu"; } var PI = Math.PI; var TAU = 2 * PI; var PITAU = TAU + PI; var INFINITY = Number.POSITIVE_INFINITY; var RAD_PER_DEG = PI / 180; var HALF_PI = PI / 2; var QUARTER_PI = PI / 4; var TWO_THIRDS_PI = PI * 2 / 3; var log10 = Math.log10; var sign = Math.sign; function almostEquals(x, y, epsilon) { return Math.abs(x - y) < epsilon; } function niceNum(range) { const roundedRange = Math.round(range); range = almostEquals(range, roundedRange, range / 1e3) ? roundedRange : range; const niceRange = Math.pow(10, Math.floor(log10(range))); const fraction = range / niceRange; const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10; return niceFraction * niceRange; } function _factorize(value) { const result = []; const sqrt = Math.sqrt(value); let i; for (i = 1; i < sqrt; i++) { if (value % i === 0) { result.push(i); result.push(value / i); } } if (sqrt === (sqrt | 0)) { result.push(sqrt); } result.sort((a, b) => a - b).pop(); return result; } function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } function almostWhole(x, epsilon) { const rounded = Math.round(x); return rounded - epsilon <= x && rounded + epsilon >= x; } function _setMinAndMaxByKey(array, target, property) { let i, ilen, value; for (i = 0, ilen = array.length; i < ilen; i++) { value = array[i][property]; if (!isNaN(value)) { target.min = Math.min(target.min, value); target.max = Math.max(target.max, value); } } } function toRadians(degrees) { return degrees * (PI / 180); } function toDegrees(radians) { return radians * (180 / PI); } function _decimalPlaces(x) { if (!isNumberFinite(x)) { return; } let e = 1; let p = 0; while (Math.round(x * e) / e !== x) { e *= 10; p++; } return p; } function getAngleFromPoint(centrePoint, anglePoint) { const distanceFromXCenter = anglePoint.x - centrePoint.x; const distanceFromYCenter = anglePoint.y - centrePoint.y; const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); if (angle < -0.5 * PI) { angle += TAU; } return { angle, distance: radialDistanceFromCenter }; } function distanceBetweenPoints(pt1, pt2) { return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); } function _normalizeAngle(a) { return (a % TAU + TAU) % TAU; } function _angleBetween(angle, start, end, sameAngleIsFullCircle) { const a = _normalizeAngle(angle); const s = _normalizeAngle(start); const e = _normalizeAngle(end); const angleToStart = _normalizeAngle(s - a); const angleToEnd = _normalizeAngle(e - a); const startToAngle = _normalizeAngle(a - s); const endToAngle = _normalizeAngle(a - e); return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle; } function _limitValue(value, min, max) { return Math.max(min, Math.min(max, value)); } function _int16Range(value) { return _limitValue(value, -32768, 32767); } function _isBetween(value, start, end, epsilon = 1e-6) { return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon; } function _lookup(table, value, cmp) { cmp = cmp || ((index) => table[index] < value); let hi = table.length - 1; let lo = 0; let mid; while (hi - lo > 1) { mid = lo + hi >> 1; if (cmp(mid)) { lo = mid; } else { hi = mid; } } return { lo, hi }; } var _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? (index) => { const ti = table[index][key]; return ti < value || ti === value && table[index + 1][key] === value; } : (index) => table[index][key] < value); var _rlookupByKey = (table, key, value) => _lookup(table, value, (index) => table[index][key] >= value); function _filterBetween(values, min, max) { let start = 0; let end = values.length; while (start < end && values[start] < min) { start++; } while (end > start && values[end - 1] > max) { end--; } return start > 0 || end < values.length ? values.slice(start, end) : values; } var arrayEvents = [ "push", "pop", "shift", "splice", "unshift" ]; function listenArrayEvents(array, listener) { if (array._chartjs) { array._chartjs.listeners.push(listener); return; } Object.defineProperty(array, "_chartjs", { configurable: true, enumerable: false, value: { listeners: [ listener ] } }); arrayEvents.forEach((key) => { const method = "_onData" + _capitalize(key); const base = array[key]; Object.defineProperty(array, key, { configurable: true, enumerable: false, value(...args) { const res = base.apply(this, args); array._chartjs.listeners.forEach((object) => { if (typeof object[method] === "function") { object[method](...args); } }); return res; } }); }); } function unlistenArrayEvents(array, listener) { const stub = array._chartjs; if (!stub) { return; } const listeners = stub.listeners; const index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); } if (listeners.length > 0) { return; } arrayEvents.forEach((key) => { delete array[key]; }); delete array._chartjs; } function _arrayUnique(items) { const set2 = new Set(items); if (set2.size === items.length) { return items; } return Array.from(set2); } var requestAnimFrame = function() { if (typeof window === "undefined") { return function(callback2) { return callback2(); }; } return window.requestAnimationFrame; }(); function throttled(fn, thisArg) { let argsToUse = []; let ticking = false; return function(...args) { argsToUse = args; if (!ticking) { ticking = true; requestAnimFrame.call(window, () => { ticking = false; fn.apply(thisArg, argsToUse); }); } }; } function debounce(fn, delay) { let timeout; return function(...args) { if (delay) { clearTimeout(timeout); timeout = setTimeout(fn, delay, args); } else { fn.apply(this, args); } return delay; }; } var _toLeftRightCenter = (align) => align === "start" ? "left" : align === "end" ? "right" : "center"; var _alignStartEnd = (align, start, end) => align === "start" ? start : align === "end" ? end : (start + end) / 2; var _textX = (align, left, right, rtl) => { const check = rtl ? "left" : "right"; return align === check ? right : align === "center" ? (left + right) / 2 : left; }; var atEdge = (t2) => t2 === 0 || t2 === 1; var elasticIn = (t2, s, p) => -(Math.pow(2, 10 * (t2 -= 1)) * Math.sin((t2 - s) * TAU / p)); var elasticOut = (t2, s, p) => Math.pow(2, -10 * t2) * Math.sin((t2 - s) * TAU / p) + 1; var effects = { linear: (t2) => t2, easeInQuad: (t2) => t2 * t2, easeOutQuad: (t2) => -t2 * (t2 - 2), easeInOutQuad: (t2) => (t2 /= 0.5) < 1 ? 0.5 * t2 * t2 : -0.5 * (--t2 * (t2 - 2) - 1), easeInCubic: (t2) => t2 * t2 * t2, easeOutCubic: (t2) => (t2 -= 1) * t2 * t2 + 1, easeInOutCubic: (t2) => (t2 /= 0.5) < 1 ? 0.5 * t2 * t2 * t2 : 0.5 * ((t2 -= 2) * t2 * t2 + 2), easeInQuart: (t2) => t2 * t2 * t2 * t2, easeOutQuart: (t2) => -((t2 -= 1) * t2 * t2 * t2 - 1), easeInOutQuart: (t2) => (t2 /= 0.5) < 1 ? 0.5 * t2 * t2 * t2 * t2 : -0.5 * ((t2 -= 2) * t2 * t2 * t2 - 2), easeInQuint: (t2) => t2 * t2 * t2 * t2 * t2, easeOutQuint: (t2) => (t2 -= 1) * t2 * t2 * t2 * t2 + 1, easeInOutQuint: (t2) => (t2 /= 0.5) < 1 ? 0.5 * t2 * t2 * t2 * t2 * t2 : 0.5 * ((t2 -= 2) * t2 * t2 * t2 * t2 + 2), easeInSine: (t2) => -Math.cos(t2 * HALF_PI) + 1, easeOutSine: (t2) => Math.sin(t2 * HALF_PI), easeInOutSine: (t2) => -0.5 * (Math.cos(PI * t2) - 1), easeInExpo: (t2) => t2 === 0 ? 0 : Math.pow(2, 10 * (t2 - 1)), easeOutExpo: (t2) => t2 === 1 ? 1 : -Math.pow(2, -10 * t2) + 1, easeInOutExpo: (t2) => atEdge(t2) ? t2 : t2 < 0.5 ? 0.5 * Math.pow(2, 10 * (t2 * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t2 * 2 - 1)) + 2), easeInCirc: (t2) => t2 >= 1 ? t2 : -(Math.sqrt(1 - t2 * t2) - 1), easeOutCirc: (t2) => Math.sqrt(1 - (t2 -= 1) * t2), easeInOutCirc: (t2) => (t2 /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t2 * t2) - 1) : 0.5 * (Math.sqrt(1 - (t2 -= 2) * t2) + 1), easeInElastic: (t2) => atEdge(t2) ? t2 : elasticIn(t2, 0.075, 0.3), easeOutElastic: (t2) => atEdge(t2) ? t2 : elasticOut(t2, 0.075, 0.3), easeInOutElastic(t2) { const s = 0.1125; const p = 0.45; return atEdge(t2) ? t2 : t2 < 0.5 ? 0.5 * elasticIn(t2 * 2, s, p) : 0.5 + 0.5 * elasticOut(t2 * 2 - 1, s, p); }, easeInBack(t2) { const s = 1.70158; return t2 * t2 * ((s + 1) * t2 - s); }, easeOutBack(t2) { const s = 1.70158; return (t2 -= 1) * t2 * ((s + 1) * t2 + s) + 1; }, easeInOutBack(t2) { let s = 1.70158; if ((t2 /= 0.5) < 1) { return 0.5 * (t2 * t2 * (((s *= 1.525) + 1) * t2 - s)); } return 0.5 * ((t2 -= 2) * t2 * (((s *= 1.525) + 1) * t2 + s) + 2); }, easeInBounce: (t2) => 1 - effects.easeOutBounce(1 - t2), easeOutBounce(t2) { const m = 7.5625; const d = 2.75; if (t2 < 1 / d) { return m * t2 * t2; } if (t2 < 2 / d) { return m * (t2 -= 1.5 / d) * t2 + 0.75; } if (t2 < 2.5 / d) { return m * (t2 -= 2.25 / d) * t2 + 0.9375; } return m * (t2 -= 2.625 / d) * t2 + 0.984375; }, easeInOutBounce: (t2) => t2 < 0.5 ? effects.easeInBounce(t2 * 2) * 0.5 : effects.easeOutBounce(t2 * 2 - 1) * 0.5 + 0.5 }; function isPatternOrGradient(value) { if (value && typeof value === "object") { const type = value.toString(); return type === "[object CanvasPattern]" || type === "[object CanvasGradient]"; } return false; } function color(value) { return isPatternOrGradient(value) ? value : new Color(value); } function getHoverColor(value) { return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString(); } var numbers = [ "x", "y", "borderWidth", "radius", "tension" ]; var colors = [ "color", "borderColor", "backgroundColor" ]; function applyAnimationsDefaults(defaults3) { defaults3.set("animation", { delay: void 0, duration: 1e3, easing: "easeOutQuart", fn: void 0, from: void 0, loop: void 0, to: void 0, type: void 0 }); defaults3.describe("animation", { _fallback: false, _indexable: false, _scriptable: (name) => name !== "onProgress" && name !== "onComplete" && name !== "fn" }); defaults3.set("animations", { colors: { type: "color", properties: colors }, numbers: { type: "number", properties: numbers } }); defaults3.describe("animations", { _fallback: "animation" }); defaults3.set("transitions", { active: { animation: { duration: 400 } }, resize: { animation: { duration: 0 } }, show: { animations: { colors: { from: "transparent" }, visible: { type: "boolean", duration: 0 } } }, hide: { animations: { colors: { to: "transparent" }, visible: { type: "boolean", easing: "linear", fn: (v) => v | 0 } } } }); } function applyLayoutsDefaults(defaults3) { defaults3.set("layout", { autoPadding: true, padding: { top: 0, right: 0, bottom: 0, left: 0 } }); } var intlCache = /* @__PURE__ */ new Map(); function getNumberFormat(locale2, options2) { options2 = options2 || {}; const cacheKey = locale2 + JSON.stringify(options2); let formatter = intlCache.get(cacheKey); if (!formatter) { formatter = new Intl.NumberFormat(locale2, options2); intlCache.set(cacheKey, formatter); } return formatter; } function formatNumber(num, locale2, options2) { return getNumberFormat(locale2, options2).format(num); } var formatters = { values(value) { return isArray(value) ? value : "" + value; }, numeric(tickValue, index, ticks) { if (tickValue === 0) { return "0"; } const locale2 = this.chart.options.locale; let notation; let delta = tickValue; if (ticks.length > 1) { const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value)); if (maxTick < 1e-4 || maxTick > 1e15) { notation = "scientific"; } delta = calculateDelta(tickValue, ticks); } const logDelta = log10(Math.abs(delta)); const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); const options2 = { notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal }; Object.assign(options2, this.options.ticks.format); return formatNumber(tickValue, locale2, options2); }, logarithmic(tickValue, index, ticks) { if (tickValue === 0) { return "0"; } const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue))); if ([ 1, 2, 3, 5, 10, 15 ].includes(remain) || index > 0.8 * ticks.length) { return formatters.numeric.call(this, tickValue, index, ticks); } return ""; } }; function calculateDelta(tickValue, ticks) { let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value; if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) { delta = tickValue - Math.floor(tickValue); } return delta; } var Ticks = { formatters }; function applyScaleDefaults(defaults3) { defaults3.set("scale", { display: true, offset: false, reverse: false, beginAtZero: false, bounds: "ticks", clip: true, grace: 0, grid: { display: true, lineWidth: 1, drawOnChartArea: true, drawTicks: true, tickLength: 8, tickWidth: (_ctx, options2) => options2.lineWidth, tickColor: (_ctx, options2) => options2.color, offset: false }, border: { display: true, dash: [], dashOffset: 0, width: 1 }, title: { display: false, text: "", padding: { top: 4, bottom: 4 } }, ticks: { minRotation: 0, maxRotation: 50, mirror: false, textStrokeWidth: 0, textStrokeColor: "", padding: 3, display: true, autoSkip: true, autoSkipPadding: 3, labelOffset: 0, callback: Ticks.formatters.values, minor: {}, major: {}, align: "center", crossAlign: "near", showLabelBackdrop: false, backdropColor: "rgba(255, 255, 255, 0.75)", backdropPadding: 2 } }); defaults3.route("scale.ticks", "color", "", "color"); defaults3.route("scale.grid", "color", "", "borderColor"); defaults3.route("scale.border", "color", "", "borderColor"); defaults3.route("scale.title", "color", "", "color"); defaults3.describe("scale", { _fallback: false, _scriptable: (name) => !name.startsWith("before") && !name.startsWith("after") && name !== "callback" && name !== "parser", _indexable: (name) => name !== "borderDash" && name !== "tickBorderDash" && name !== "dash" }); defaults3.describe("scales", { _fallback: "scale" }); defaults3.describe("scale.ticks", { _scriptable: (name) => name !== "backdropPadding" && name !== "callback", _indexable: (name) => name !== "backdropPadding" }); } var overrides = /* @__PURE__ */ Object.create(null); var descriptors = /* @__PURE__ */ Object.create(null); function getScope$1(node, key) { if (!key) { return node; } const keys = key.split("."); for (let i = 0, n = keys.length; i < n; ++i) { const k = keys[i]; node = node[k] || (node[k] = /* @__PURE__ */ Object.create(null)); } return node; } function set(root, scope, values) { if (typeof scope === "string") { return merge(getScope$1(root, scope), values); } return merge(getScope$1(root, ""), scope); } var Defaults2 = class { constructor(_descriptors2, _appliers) { this.animation = void 0; this.backgroundColor = "rgba(0,0,0,0.1)"; this.borderColor = "rgba(0,0,0,0.1)"; this.color = "#666"; this.datasets = {}; this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio(); this.elements = {}; this.events = [ "mousemove", "mouseout", "click", "touchstart", "touchmove" ]; this.font = { family: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", size: 12, style: "normal", lineHeight: 1.2, weight: null }; this.hover = {}; this.hoverBackgroundColor = (ctx, options2) => getHoverColor(options2.backgroundColor); this.hoverBorderColor = (ctx, options2) => getHoverColor(options2.borderColor); this.hoverColor = (ctx, options2) => getHoverColor(options2.color); this.indexAxis = "x"; this.interaction = { mode: "nearest", intersect: true, includeInvisible: false }; this.maintainAspectRatio = true; this.onHover = null; this.onClick = null; this.parsing = true; this.plugins = {}; this.responsive = true; this.scale = void 0; this.scales = {}; this.showLine = true; this.drawActiveElementsOnTop = true; this.describe(_descriptors2); this.apply(_appliers); } set(scope, values) { return set(this, scope, values); } get(scope) { return getScope$1(this, scope); } describe(scope, values) { return set(descriptors, scope, values); } override(scope, values) { return set(overrides, scope, values); } route(scope, name, targetScope, targetName) { const scopeObject = getScope$1(this, scope); const targetScopeObject = getScope$1(this, targetScope); const privateName = "_" + name; Object.defineProperties(scopeObject, { [privateName]: { value: scopeObject[name], writable: true }, [name]: { enumerable: true, get() { const local = this[privateName]; const target = targetScopeObject[targetName]; if (isObject(local)) { return Object.assign({}, target, local); } return valueOrDefault(local, target); }, set(value) { this[privateName] = value; } } }); } apply(appliers) { appliers.forEach((apply) => apply(this)); } }; var defaults2 = /* @__PURE__ */ new Defaults2({ _scriptable: (name) => !name.startsWith("on"), _indexable: (name) => name !== "events", hover: { _fallback: "interaction" }, interaction: { _scriptable: false, _indexable: false } }, [ applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults ]); function toFontString(font) { if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) { return null; } return (font.style ? font.style + " " : "") + (font.weight ? font.weight + " " : "") + font.size + "px " + font.family; } function _measureText(ctx, data, gc, longest, string) { let textWidth = data[string]; if (!textWidth) { textWidth = data[string] = ctx.measureText(string).width; gc.push(string); } if (textWidth > longest) { longest = textWidth; } return longest; } function _longestText(ctx, font, arrayOfThings, cache) { cache = cache || {}; let data = cache.data = cache.data || {}; let gc = cache.garbageCollect = cache.garbageCollect || []; if (cache.font !== font) { data = cache.data = {}; gc = cache.garbageCollect = []; cache.font = font; } ctx.save(); ctx.font = font; let longest = 0; const ilen = arrayOfThings.length; let i, j, jlen, thing, nestedThing; for (i = 0; i < ilen; i++) { thing = arrayOfThings[i]; if (thing !== void 0 && thing !== null && !isArray(thing)) { longest = _measureText(ctx, data, gc, longest, thing); } else if (isArray(thing)) { for (j = 0, jlen = thing.length; j < jlen; j++) { nestedThing = thing[j]; if (nestedThing !== void 0 && nestedThing !== null && !isArray(nestedThing)) { longest = _measureText(ctx, data, gc, longest, nestedThing); } } } } ctx.restore(); const gcLen = gc.length / 2; if (gcLen > arrayOfThings.length) { for (i = 0; i < gcLen; i++) { delete data[gc[i]]; } gc.splice(0, gcLen); } return longest; } function _alignPixel(chart, pixel, width) { const devicePixelRatio = chart.currentDevicePixelRatio; const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0; return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; } function clearCanvas(canvas, ctx) { if (!ctx && !canvas) { return; } ctx = ctx || canvas.getContext("2d"); ctx.save(); ctx.resetTransform(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.restore(); } function drawPoint(ctx, options2, x, y) { drawPointLegend(ctx, options2, x, y, null); } function drawPointLegend(ctx, options2, x, y, w) { let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW; const style = options2.pointStyle; const rotation = options2.rotation; const radius = options2.radius; let rad = (rotation || 0) * RAD_PER_DEG; if (style && typeof style === "object") { type = style.toString(); if (type === "[object HTMLImageElement]" || type === "[object HTMLCanvasElement]") { ctx.save(); ctx.translate(x, y); ctx.rotate(rad); ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); ctx.restore(); return; } } if (isNaN(radius) || radius <= 0) { return; } ctx.beginPath(); switch (style) { // Default includes circle default: if (w) { ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU); } else { ctx.arc(x, y, radius, 0, TAU); } ctx.closePath(); break; case "triangle": width = w ? w / 2 : radius; ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); rad += TWO_THIRDS_PI; ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); rad += TWO_THIRDS_PI; ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); ctx.closePath(); break; case "rectRounded": cornerRadius = radius * 0.516; size = radius - cornerRadius; xOffset = Math.cos(rad + QUARTER_PI) * size; xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); yOffset = Math.sin(rad + QUARTER_PI) * size; yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad); ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI); ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); ctx.closePath(); break; case "rect": if (!rotation) { size = Math.SQRT1_2 * radius; width = w ? w / 2 : size; ctx.rect(x - width, y - size, 2 * width, 2 * size); break; } rad += QUARTER_PI; /* falls through */ case "rectRot": xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); xOffset = Math.cos(rad) * radius; yOffset = Math.sin(rad) * radius; yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); ctx.moveTo(x - xOffsetW, y - yOffset); ctx.lineTo(x + yOffsetW, y - xOffset); ctx.lineTo(x + xOffsetW, y + yOffset); ctx.lineTo(x - yOffsetW, y + xOffset); ctx.closePath(); break; case "crossRot": rad += QUARTER_PI; /* falls through */ case "cross": xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); xOffset = Math.cos(rad) * radius; yOffset = Math.sin(rad) * radius; yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); ctx.moveTo(x - xOffsetW, y - yOffset); ctx.lineTo(x + xOffsetW, y + yOffset); ctx.moveTo(x + yOffsetW, y - xOffset); ctx.lineTo(x - yOffsetW, y + xOffset); break; case "star": xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); xOffset = Math.cos(rad) * radius; yOffset = Math.sin(rad) * radius; yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); ctx.moveTo(x - xOffsetW, y - yOffset); ctx.lineTo(x + xOffsetW, y + yOffset); ctx.moveTo(x + yOffsetW, y - xOffset); ctx.lineTo(x - yOffsetW, y + xOffset); rad += QUARTER_PI; xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); xOffset = Math.cos(rad) * radius; yOffset = Math.sin(rad) * radius; yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); ctx.moveTo(x - xOffsetW, y - yOffset); ctx.lineTo(x + xOffsetW, y + yOffset); ctx.moveTo(x + yOffsetW, y - xOffset); ctx.lineTo(x - yOffsetW, y + xOffset); break; case "line": xOffset = w ? w / 2 : Math.cos(rad) * radius; yOffset = Math.sin(rad) * radius; ctx.moveTo(x - xOffset, y - yOffset); ctx.lineTo(x + xOffset, y + yOffset); break; case "dash": ctx.moveTo(x, y); ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius); break; case false: ctx.closePath(); break; } ctx.fill(); if (options2.borderWidth > 0) { ctx.stroke(); } } function _isPointInArea(point, area, margin) { margin = margin || 0.5; return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin; } function clipArea(ctx, area) { ctx.save(); ctx.beginPath(); ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); ctx.clip(); } function unclipArea(ctx) { ctx.restore(); } function setRenderOpts(ctx, opts) { if (opts.translation) { ctx.translate(opts.translation[0], opts.translation[1]); } if (!isNullOrUndef(opts.rotation)) { ctx.rotate(opts.rotation); } if (opts.color) { ctx.fillStyle = opts.color; } if (opts.textAlign) { ctx.textAlign = opts.textAlign; } if (opts.textBaseline) { ctx.textBaseline = opts.textBaseline; } } function decorateText(ctx, x, y, line, opts) { if (opts.strikethrough || opts.underline) { const metrics = ctx.measureText(line); const left = x - metrics.actualBoundingBoxLeft; const right = x + metrics.actualBoundingBoxRight; const top = y - metrics.actualBoundingBoxAscent; const bottom = y + metrics.actualBoundingBoxDescent; const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom; ctx.strokeStyle = ctx.fillStyle; ctx.beginPath(); ctx.lineWidth = opts.decorationWidth || 2; ctx.moveTo(left, yDecoration); ctx.lineTo(right, yDecoration); ctx.stroke(); } } function drawBackdrop(ctx, opts) { const oldColor = ctx.fillStyle; ctx.fillStyle = opts.color; ctx.fillRect(opts.left, opts.top, opts.width, opts.height); ctx.fillStyle = oldColor; } function renderText(ctx, text, x, y, font, opts = {}) { const lines = isArray(text) ? text : [ text ]; const stroke = opts.strokeWidth > 0 && opts.strokeColor !== ""; let i, line; ctx.save(); ctx.font = font.string; setRenderOpts(ctx, opts); for (i = 0; i < lines.length; ++i) { line = lines[i]; if (opts.backdrop) { drawBackdrop(ctx, opts.backdrop); } if (stroke) { if (opts.strokeColor) { ctx.strokeStyle = opts.strokeColor; } if (!isNullOrUndef(opts.strokeWidth)) { ctx.lineWidth = opts.strokeWidth; } ctx.strokeText(line, x, y, opts.maxWidth); } ctx.fillText(line, x, y, opts.maxWidth); decorateText(ctx, x, y, line, opts); y += Number(font.lineHeight); } ctx.restore(); } function addRoundedRectPath(ctx, rect) { const { x, y, w, h: h4, radius } = rect; ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true); ctx.lineTo(x, y + h4 - radius.bottomLeft); ctx.arc(x + radius.bottomLeft, y + h4 - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); ctx.lineTo(x + w - radius.bottomRight, y + h4); ctx.arc(x + w - radius.bottomRight, y + h4 - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); ctx.lineTo(x + w, y + radius.topRight); ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); ctx.lineTo(x + radius.topLeft, y); } var LINE_HEIGHT = /^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/; var FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/; function toLineHeight(value, size) { const matches = ("" + value).match(LINE_HEIGHT); if (!matches || matches[1] === "normal") { return size * 1.2; } value = +matches[2]; switch (matches[3]) { case "px": return value; case "%": value /= 100; break; } return size * value; } var numberOrZero = (v) => +v || 0; function _readValueToProps(value, props) { const ret = {}; const objProps = isObject(props); const keys = objProps ? Object.keys(props) : props; const read = isObject(value) ? objProps ? (prop) => valueOrDefault(value[prop], value[props[prop]]) : (prop) => value[prop] : () => value; for (const prop of keys) { ret[prop] = numberOrZero(read(prop)); } return ret; } function toTRBL(value) { return _readValueToProps(value, { top: "y", right: "x", bottom: "y", left: "x" }); } function toTRBLCorners(value) { return _readValueToProps(value, [ "topLeft", "topRight", "bottomLeft", "bottomRight" ]); } function toPadding(value) { const obj = toTRBL(value); obj.width = obj.left + obj.right; obj.height = obj.top + obj.bottom; return obj; } function toFont(options2, fallback) { options2 = options2 || {}; fallback = fallback || defaults2.font; let size = valueOrDefault(options2.size, fallback.size); if (typeof size === "string") { size = parseInt(size, 10); } let style = valueOrDefault(options2.style, fallback.style); if (style && !("" + style).match(FONT_STYLE)) { console.warn('Invalid font style specified: "' + style + '"'); style = void 0; } const font = { family: valueOrDefault(options2.family, fallback.family), lineHeight: toLineHeight(valueOrDefault(options2.lineHeight, fallback.lineHeight), size), size, style, weight: valueOrDefault(options2.weight, fallback.weight), string: "" }; font.string = toFontString(font); return font; } function resolve(inputs, context, index, info) { let cacheable = true; let i, ilen, value; for (i = 0, ilen = inputs.length; i < ilen; ++i) { value = inputs[i]; if (value === void 0) { continue; } if (context !== void 0 && typeof value === "function") { value = value(context); cacheable = false; } if (index !== void 0 && isArray(value)) { value = value[index % value.length]; cacheable = false; } if (value !== void 0) { if (info && !cacheable) { info.cacheable = false; } return value; } } } function _addGrace(minmax, grace, beginAtZero) { const { min, max } = minmax; const change = toDimension(grace, (max - min) / 2); const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add; return { min: keepZero(min, -Math.abs(change)), max: keepZero(max, change) }; } function createContext(parentContext, context) { return Object.assign(Object.create(parentContext), context); } function _createResolver(scopes, prefixes = [ "" ], rootScopes, fallback, getTarget = () => scopes[0]) { const finalRootScopes = rootScopes || scopes; if (typeof fallback === "undefined") { fallback = _resolve("_fallback", scopes); } const cache = { [Symbol.toStringTag]: "Object", _cacheable: true, _scopes: scopes, _rootScopes: finalRootScopes, _fallback: fallback, _getTarget: getTarget, override: (scope) => _createResolver([ scope, ...scopes ], prefixes, finalRootScopes, fallback) }; return new Proxy(cache, { /** * A trap for the delete operator. */ deleteProperty(target, prop) { delete target[prop]; delete target._keys; delete scopes[0][prop]; return true; }, /** * A trap for getting property values. */ get(target, prop) { return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target)); }, /** * A trap for Object.getOwnPropertyDescriptor. * Also used by Object.hasOwnProperty. */ getOwnPropertyDescriptor(target, prop) { return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop); }, /** * A trap for Object.getPrototypeOf. */ getPrototypeOf() { return Reflect.getPrototypeOf(scopes[0]); }, /** * A trap for the in operator. */ has(target, prop) { return getKeysFromAllScopes(target).includes(prop); }, /** * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. */ ownKeys(target) { return getKeysFromAllScopes(target); }, /** * A trap for setting property values. */ set(target, prop, value) { const storage = target._storage || (target._storage = getTarget()); target[prop] = storage[prop] = value; delete target._keys; return true; } }); } function _attachContext(proxy, context, subProxy, descriptorDefaults) { const cache = { _cacheable: false, _proxy: proxy, _context: context, _subProxy: subProxy, _stack: /* @__PURE__ */ new Set(), _descriptors: _descriptors(proxy, descriptorDefaults), setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults), override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults) }; return new Proxy(cache, { /** * A trap for the delete operator. */ deleteProperty(target, prop) { delete target[prop]; delete proxy[prop]; return true; }, /** * A trap for getting property values. */ get(target, prop, receiver) { return _cached(target, prop, () => _resolveWithContext(target, prop, receiver)); }, /** * A trap for Object.getOwnPropertyDescriptor. * Also used by Object.hasOwnProperty. */ getOwnPropertyDescriptor(target, prop) { return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? { enumerable: true, configurable: true } : void 0 : Reflect.getOwnPropertyDescriptor(proxy, prop); }, /** * A trap for Object.getPrototypeOf. */ getPrototypeOf() { return Reflect.getPrototypeOf(proxy); }, /** * A trap for the in operator. */ has(target, prop) { return Reflect.has(proxy, prop); }, /** * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. */ ownKeys() { return Reflect.ownKeys(proxy); }, /** * A trap for setting property values. */ set(target, prop, value) { proxy[prop] = value; delete target[prop]; return true; } }); } function _descriptors(proxy, defaults3 = { scriptable: true, indexable: true }) { const { _scriptable = defaults3.scriptable, _indexable = defaults3.indexable, _allKeys = defaults3.allKeys } = proxy; return { allKeys: _allKeys, scriptable: _scriptable, indexable: _indexable, isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable, isIndexable: isFunction(_indexable) ? _indexable : () => _indexable }; } var readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name; var needsSubResolver = (prop, value) => isObject(value) && prop !== "adapters" && (Object.getPrototypeOf(value) === null || value.constructor === Object); function _cached(target, prop, resolve2) { if (Object.prototype.hasOwnProperty.call(target, prop) || prop === "constructor") { return target[prop]; } const value = resolve2(); target[prop] = value; return value; } function _resolveWithContext(target, prop, receiver) { const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; let value = _proxy[prop]; if (isFunction(value) && descriptors2.isScriptable(prop)) { value = _resolveScriptable(prop, value, target, receiver); } if (isArray(value) && value.length) { value = _resolveArray(prop, value, target, descriptors2.isIndexable); } if (needsSubResolver(prop, value)) { value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors2); } return value; } function _resolveScriptable(prop, getValue, target, receiver) { const { _proxy, _context, _subProxy, _stack } = target; if (_stack.has(prop)) { throw new Error("Recursion detected: " + Array.from(_stack).join("->") + "->" + prop); } _stack.add(prop); let value = getValue(_context, _subProxy || receiver); _stack.delete(prop); if (needsSubResolver(prop, value)) { value = createSubResolver(_proxy._scopes, _proxy, prop, value); } return value; } function _resolveArray(prop, value, target, isIndexable) { const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; if (typeof _context.index !== "undefined" && isIndexable(prop)) { return value[_context.index % value.length]; } else if (isObject(value[0])) { const arr = value; const scopes = _proxy._scopes.filter((s) => s !== arr); value = []; for (const item of arr) { const resolver = createSubResolver(scopes, _proxy, prop, item); value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors2)); } } return value; } function resolveFallback(fallback, prop, value) { return isFunction(fallback) ? fallback(prop, value) : fallback; } var getScope = (key, parent) => key === true ? parent : typeof key === "string" ? resolveObjectKey(parent, key) : void 0; function addScopes(set2, parentScopes, key, parentFallback, value) { for (const parent of parentScopes) { const scope = getScope(key, parent); if (scope) { set2.add(scope); const fallback = resolveFallback(scope._fallback, key, value); if (typeof fallback !== "undefined" && fallback !== key && fallback !== parentFallback) { return fallback; } } else if (scope === false && typeof parentFallback !== "undefined" && key !== parentFallback) { return null; } } return false; } function createSubResolver(parentScopes, resolver, prop, value) { const rootScopes = resolver._rootScopes; const fallback = resolveFallback(resolver._fallback, prop, value); const allScopes = [ ...parentScopes, ...rootScopes ]; const set2 = /* @__PURE__ */ new Set(); set2.add(value); let key = addScopesFromKey(set2, allScopes, prop, fallback || prop, value); if (key === null) { return false; } if (typeof fallback !== "undefined" && fallback !== prop) { key = addScopesFromKey(set2, allScopes, fallback, key, value); if (key === null) { return false; } } return _createResolver(Array.from(set2), [ "" ], rootScopes, fallback, () => subGetTarget(resolver, prop, value)); } function addScopesFromKey(set2, allScopes, key, fallback, item) { while (key) { key = addScopes(set2, allScopes, key, fallback, item); } return key; } function subGetTarget(resolver, prop, value) { const parent = resolver._getTarget(); if (!(prop in parent)) { parent[prop] = {}; } const target = parent[prop]; if (isArray(target) && isObject(value)) { return value; } return target || {}; } function _resolveWithPrefixes(prop, prefixes, scopes, proxy) { let value; for (const prefix of prefixes) { value = _resolve(readKey(prefix, prop), scopes); if (typeof value !== "undefined") { return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value; } } } function _resolve(key, scopes) { for (const scope of scopes) { if (!scope) { continue; } const value = scope[key]; if (typeof value !== "undefined") { return value; } } } function getKeysFromAllScopes(target) { let keys = target._keys; if (!keys) { keys = target._keys = resolveKeysFromAllScopes(target._scopes); } return keys; } function resolveKeysFromAllScopes(scopes) { const set2 = /* @__PURE__ */ new Set(); for (const scope of scopes) { for (const key of Object.keys(scope).filter((k) => !k.startsWith("_"))) { set2.add(key); } } return Array.from(set2); } var EPSILON = Number.EPSILON || 1e-14; function _isDomSupported() { return typeof window !== "undefined" && typeof document !== "undefined"; } function _getParentNode(domNode) { let parent = domNode.parentNode; if (parent && parent.toString() === "[object ShadowRoot]") { parent = parent.host; } return parent; } function parseMaxStyle(styleValue, node, parentProperty) { let valueInPixels; if (typeof styleValue === "string") { valueInPixels = parseInt(styleValue, 10); if (styleValue.indexOf("%") !== -1) { valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; } } else { valueInPixels = styleValue; } return valueInPixels; } var getComputedStyle2 = (element) => element.ownerDocument.defaultView.getComputedStyle(element, null); function getStyle(el, property) { return getComputedStyle2(el).getPropertyValue(property); } var positions = [ "top", "right", "bottom", "left" ]; function getPositionedStyle(styles, style, suffix) { const result = {}; suffix = suffix ? "-" + suffix : ""; for (let i = 0; i < 4; i++) { const pos = positions[i]; result[pos] = parseFloat(styles[style + "-" + pos + suffix]) || 0; } result.width = result.left + result.right; result.height = result.top + result.bottom; return result; } var useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot); function getCanvasPosition(e, canvas) { const touches = e.touches; const source = touches && touches.length ? touches[0] : e; const { offsetX, offsetY } = source; let box = false; let x, y; if (useOffsetPos(offsetX, offsetY, e.target)) { x = offsetX; y = offsetY; } else { const rect = canvas.getBoundingClientRect(); x = source.clientX - rect.left; y = source.clientY - rect.top; box = true; } return { x, y, box }; } function getRelativePosition(event, chart) { if ("native" in event) { return event; } const { canvas, currentDevicePixelRatio } = chart; const style = getComputedStyle2(canvas); const borderBox = style.boxSizing === "border-box"; const paddings = getPositionedStyle(style, "padding"); const borders = getPositionedStyle(style, "border", "width"); const { x, y, box } = getCanvasPosition(event, canvas); const xOffset = paddings.left + (box && borders.left); const yOffset = paddings.top + (box && borders.top); let { width, height } = chart; if (borderBox) { width -= paddings.width + borders.width; height -= paddings.height + borders.height; } return { x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio), y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio) }; } function getContainerSize(canvas, width, height) { let maxWidth, maxHeight; if (width === void 0 || height === void 0) { const container = canvas && _getParentNode(canvas); if (!container) { width = canvas.clientWidth; height = canvas.clientHeight; } else { const rect = container.getBoundingClientRect(); const containerStyle = getComputedStyle2(container); const containerBorder = getPositionedStyle(containerStyle, "border", "width"); const containerPadding = getPositionedStyle(containerStyle, "padding"); width = rect.width - containerPadding.width - containerBorder.width; height = rect.height - containerPadding.height - containerBorder.height; maxWidth = parseMaxStyle(containerStyle.maxWidth, container, "clientWidth"); maxHeight = parseMaxStyle(containerStyle.maxHeight, container, "clientHeight"); } } return { width, height, maxWidth: maxWidth || INFINITY, maxHeight: maxHeight || INFINITY }; } var round1 = (v) => Math.round(v * 10) / 10; function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) { const style = getComputedStyle2(canvas); const margins = getPositionedStyle(style, "margin"); const maxWidth = parseMaxStyle(style.maxWidth, canvas, "clientWidth") || INFINITY; const maxHeight = parseMaxStyle(style.maxHeight, canvas, "clientHeight") || INFINITY; const containerSize = getContainerSize(canvas, bbWidth, bbHeight); let { width, height } = containerSize; if (style.boxSizing === "content-box") { const borders = getPositionedStyle(style, "border", "width"); const paddings = getPositionedStyle(style, "padding"); width -= paddings.width + borders.width; height -= paddings.height + borders.height; } width = Math.max(0, width - margins.width); height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height); width = round1(Math.min(width, maxWidth, containerSize.maxWidth)); height = round1(Math.min(height, maxHeight, containerSize.maxHeight)); if (width && !height) { height = round1(width / 2); } const maintainHeight = bbWidth !== void 0 || bbHeight !== void 0; if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) { height = containerSize.height; width = round1(Math.floor(height * aspectRatio)); } return { width, height }; } function retinaScale(chart, forceRatio, forceStyle) { const pixelRatio = forceRatio || 1; const deviceHeight = Math.floor(chart.height * pixelRatio); const deviceWidth = Math.floor(chart.width * pixelRatio); chart.height = Math.floor(chart.height); chart.width = Math.floor(chart.width); const canvas = chart.canvas; if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) { canvas.style.height = `${chart.height}px`; canvas.style.width = `${chart.width}px`; } if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) { chart.currentDevicePixelRatio = pixelRatio; canvas.height = deviceHeight; canvas.width = deviceWidth; chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); return true; } return false; } var supportsEventListenerOptions = function() { let passiveSupported = false; try { const options2 = { get passive() { passiveSupported = true; return false; } }; if (_isDomSupported()) { window.addEventListener("test", null, options2); window.removeEventListener("test", null, options2); } } catch (e) { } return passiveSupported; }(); function readUsedSize(element, property) { const value = getStyle(element, property); const matches = value && value.match(/^(\d+)(\.\d+)?px$/); return matches ? +matches[1] : void 0; } var getRightToLeftAdapter = function(rectX, width) { return { x(x) { return rectX + rectX + width - x; }, setWidth(w) { width = w; }, textAlign(align) { if (align === "center") { return align; } return align === "right" ? "left" : "right"; }, xPlus(x, value) { return x - value; }, leftForLtr(x, itemWidth) { return x - itemWidth; } }; }; var getLeftToRightAdapter = function() { return { x(x) { return x; }, setWidth(w) { }, textAlign(align) { return align; }, xPlus(x, value) { return x + value; }, leftForLtr(x, _itemWidth) { return x; } }; }; function getRtlAdapter(rtl, rectX, width) { return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter(); } function overrideTextDirection(ctx, direction) { let style, original; if (direction === "ltr" || direction === "rtl") { style = ctx.canvas.style; original = [ style.getPropertyValue("direction"), style.getPropertyPriority("direction") ]; style.setProperty("direction", direction, "important"); ctx.prevTextDirection = original; } } function restoreTextDirection(ctx, original) { if (original !== void 0) { delete ctx.prevTextDirection; ctx.canvas.style.setProperty("direction", original[0], original[1]); } } // node_modules/.pnpm/chart.js@4.4.4/node_modules/chart.js/dist/chart.js var Animator = class { constructor() { this._request = null; this._charts = /* @__PURE__ */ new Map(); this._running = false; this._lastDate = void 0; } _notify(chart, anims, date, type) { const callbacks = anims.listeners[type]; const numSteps = anims.duration; callbacks.forEach((fn) => fn({ chart, initial: anims.initial, numSteps, currentStep: Math.min(date - anims.start, numSteps) })); } _refresh() { if (this._request) { return; } this._running = true; this._request = requestAnimFrame.call(window, () => { this._update(); this._request = null; if (this._running) { this._refresh(); } }); } _update(date = Date.now()) { let remaining = 0; this._charts.forEach((anims, chart) => { if (!anims.running || !anims.items.length) { return; } const items = anims.items; let i = items.length - 1; let draw = false; let item; for (; i >= 0; --i) { item = items[i]; if (item._active) { if (item._total > anims.duration) { anims.duration = item._total; } item.tick(date); draw = true; } else { items[i] = items[items.length - 1]; items.pop(); } } if (draw) { chart.draw(); this._notify(chart, anims, date, "progress"); } if (!items.length) { anims.running = false; this._notify(chart, anims, date, "complete"); anims.initial = false; } remaining += items.length; }); this._lastDate = date; if (remaining === 0) { this._running = false; } } _getAnims(chart) { const charts = this._charts; let anims = charts.get(chart); if (!anims) { anims = { running: false, initial: true, items: [], listeners: { complete: [], progress: [] } }; charts.set(chart, anims); } return anims; } listen(chart, event, cb) { this._getAnims(chart).listeners[event].push(cb); } add(chart, items) { if (!items || !items.length) { return; } this._getAnims(chart).items.push(...items); } has(chart) { return this._getAnims(chart).items.length > 0; } start(chart) { const anims = this._charts.get(chart); if (!anims) { return; } anims.running = true; anims.start = Date.now(); anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0); this._refresh(); } running(chart) { if (!this._running) { return false; } const anims = this._charts.get(chart); if (!anims || !anims.running || !anims.items.length) { return false; } return true; } stop(chart) { const anims = this._charts.get(chart); if (!anims || !anims.items.length) { return; } const items = anims.items; let i = items.length - 1; for (; i >= 0; --i) { items[i].cancel(); } anims.items = []; this._notify(chart, anims, Date.now(), "complete"); } remove(chart) { return this._charts.delete(chart); } }; var animator = /* @__PURE__ */ new Animator(); var transparent = "transparent"; var interpolators = { boolean(from2, to2, factor) { return factor > 0.5 ? to2 : from2; }, color(from2, to2, factor) { const c0 = color(from2 || transparent); const c1 = c0.valid && color(to2 || transparent); return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to2; }, number(from2, to2, factor) { return from2 + (to2 - from2) * factor; } }; var Animation = class { constructor(cfg, target, prop, to2) { const currentValue = target[prop]; to2 = resolve([ cfg.to, to2, currentValue, cfg.from ]); const from2 = resolve([ cfg.from, currentValue, to2 ]); this._active = true; this._fn = cfg.fn || interpolators[cfg.type || typeof from2]; this._easing = effects[cfg.easing] || effects.linear; this._start = Math.floor(Date.now() + (cfg.delay || 0)); this._duration = this._total = Math.floor(cfg.duration); this._loop = !!cfg.loop; this._target = target; this._prop = prop; this._from = from2; this._to = to2; this._promises = void 0; } active() { return this._active; } update(cfg, to2, date) { if (this._active) { this._notify(false); const currentValue = this._target[this._prop]; const elapsed = date - this._start; const remain = this._duration - elapsed; this._start = date; this._duration = Math.floor(Math.max(remain, cfg.duration)); this._total += elapsed; this._loop = !!cfg.loop; this._to = resolve([ cfg.to, to2, currentValue, cfg.from ]); this._from = resolve([ cfg.from, currentValue, to2 ]); } } cancel() { if (this._active) { this.tick(Date.now()); this._active = false; this._notify(false); } } tick(date) { const elapsed = date - this._start; const duration = this._duration; const prop = this._prop; const from2 = this._from; const loop = this._loop; const to2 = this._to; let factor; this._active = from2 !== to2 && (loop || elapsed < duration); if (!this._active) { this._target[prop] = to2; this._notify(true); return; } if (elapsed < 0) { this._target[prop] = from2; return; } factor = elapsed / duration % 2; factor = loop && factor > 1 ? 2 - factor : factor; factor = this._easing(Math.min(1, Math.max(0, factor))); this._target[prop] = this._fn(from2, to2, factor); } wait() { const promises = this._promises || (this._promises = []); return new Promise((res, rej) => { promises.push({ res, rej }); }); } _notify(resolved) { const method = resolved ? "res" : "rej"; const promises = this._promises || []; for (let i = 0; i < promises.length; i++) { promises[i][method](); } } }; var Animations = class { constructor(chart, config) { this._chart = chart; this._properties = /* @__PURE__ */ new Map(); this.configure(config); } configure(config) { if (!isObject(config)) { return; } const animationOptions = Object.keys(defaults2.animation); const animatedProps = this._properties; Object.getOwnPropertyNames(config).forEach((key) => { const cfg = config[key]; if (!isObject(cfg)) { return; } const resolved = {}; for (const option of animationOptions) { resolved[option] = cfg[option]; } (isArray(cfg.properties) && cfg.properties || [ key ]).forEach((prop) => { if (prop === key || !animatedProps.has(prop)) { animatedProps.set(prop, resolved); } }); }); } _animateOptions(target, values) { const newOptions = values.options; const options2 = resolveTargetOptions(target, newOptions); if (!options2) { return []; } const animations = this._createAnimations(options2, newOptions); if (newOptions.$shared) { awaitAll(target.options.$animations, newOptions).then(() => { target.options = newOptions; }, () => { }); } return animations; } _createAnimations(target, values) { const animatedProps = this._properties; const animations = []; const running = target.$animations || (target.$animations = {}); const props = Object.keys(values); const date = Date.now(); let i; for (i = props.length - 1; i >= 0; --i) { const prop = props[i]; if (prop.charAt(0) === "$") { continue; } if (prop === "options") { animations.push(...this._animateOptions(target, values)); continue; } const value = values[prop]; let animation = running[prop]; const cfg = animatedProps.get(prop); if (animation) { if (cfg && animation.active()) { animation.update(cfg, value, date); continue; } else { animation.cancel(); } } if (!cfg || !cfg.duration) { target[prop] = value; continue; } running[prop] = animation = new Animation(cfg, target, prop, value); animations.push(animation); } return animations; } update(target, values) { if (this._properties.size === 0) { Object.assign(target, values); return; } const animations = this._createAnimations(target, values); if (animations.length) { animator.add(this._chart, animations); return true; } } }; function awaitAll(animations, properties) { const running = []; const keys = Object.keys(properties); for (let i = 0; i < keys.length; i++) { const anim = animations[keys[i]]; if (anim && anim.active()) { running.push(anim.wait()); } } return Promise.all(running); } function resolveTargetOptions(target, newOptions) { if (!newOptions) { return; } let options2 = target.options; if (!options2) { target.options = newOptions; return; } if (options2.$shared) { target.options = options2 = Object.assign({}, options2, { $shared: false, $animations: {} }); } return options2; } function scaleClip(scale, allowedOverflow) { const opts = scale && scale.options || {}; const reverse = opts.reverse; const min = opts.min === void 0 ? allowedOverflow : 0; const max = opts.max === void 0 ? allowedOverflow : 0; return { start: reverse ? max : min, end: reverse ? min : max }; } function defaultClip(xScale, yScale, allowedOverflow) { if (allowedOverflow === false) { return false; } const x = scaleClip(xScale, allowedOverflow); const y = scaleClip(yScale, allowedOverflow); return { top: y.end, right: x.end, bottom: y.start, left: x.start }; } function toClip(value) { let t2, r, b, l; if (isObject(value)) { t2 = value.top; r = value.right; b = value.bottom; l = value.left; } else { t2 = r = b = l = value; } return { top: t2, right: r, bottom: b, left: l, disabled: value === false }; } function getSortedDatasetIndices(chart, filterVisible) { const keys = []; const metasets = chart._getSortedDatasetMetas(filterVisible); let i, ilen; for (i = 0, ilen = metasets.length; i < ilen; ++i) { keys.push(metasets[i].index); } return keys; } function applyStack(stack2, value, dsIndex, options2 = {}) { const keys = stack2.keys; const singleMode = options2.mode === "single"; let i, ilen, datasetIndex, otherValue; if (value === null) { return; } for (i = 0, ilen = keys.length; i < ilen; ++i) { datasetIndex = +keys[i]; if (datasetIndex === dsIndex) { if (options2.all) { continue; } break; } otherValue = stack2.values[datasetIndex]; if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) { value += otherValue; } } return value; } function convertObjectDataToArray(data, meta) { const { iScale, vScale } = meta; const iAxisKey = iScale.axis === "x" ? "x" : "y"; const vAxisKey = vScale.axis === "x" ? "x" : "y"; const keys = Object.keys(data); const adata = new Array(keys.length); let i, ilen, key; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; adata[i] = { [iAxisKey]: key, [vAxisKey]: data[key] }; } return adata; } function isStacked(scale, meta) { const stacked = scale && scale.options.stacked; return stacked || stacked === void 0 && meta.stack !== void 0; } function getStackKey(indexScale, valueScale, meta) { return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`; } function getUserBounds(scale) { const { min, max, minDefined, maxDefined } = scale.getUserBounds(); return { min: minDefined ? min : Number.NEGATIVE_INFINITY, max: maxDefined ? max : Number.POSITIVE_INFINITY }; } function getOrCreateStack(stacks, stackKey, indexValue) { const subStack = stacks[stackKey] || (stacks[stackKey] = {}); return subStack[indexValue] || (subStack[indexValue] = {}); } function getLastIndexInStack(stack2, vScale, positive, type) { for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) { const value = stack2[meta.index]; if (positive && value > 0 || !positive && value < 0) { return meta.index; } } return null; } function updateStacks(controller, parsed) { const { chart, _cachedMeta: meta } = controller; const stacks = chart._stacks || (chart._stacks = {}); const { iScale, vScale, index: datasetIndex } = meta; const iAxis = iScale.axis; const vAxis = vScale.axis; const key = getStackKey(iScale, vScale, meta); const ilen = parsed.length; let stack2; for (let i = 0; i < ilen; ++i) { const item = parsed[i]; const { [iAxis]: index, [vAxis]: value } = item; const itemStacks = item._stacks || (item._stacks = {}); stack2 = itemStacks[vAxis] = getOrCreateStack(stacks, key, index); stack2[datasetIndex] = value; stack2._top = getLastIndexInStack(stack2, vScale, true, meta.type); stack2._bottom = getLastIndexInStack(stack2, vScale, false, meta.type); const visualValues = stack2._visualValues || (stack2._visualValues = {}); visualValues[datasetIndex] = value; } } function getFirstScaleId(chart, axis) { const scales = chart.scales; return Object.keys(scales).filter((key) => scales[key].axis === axis).shift(); } function createDatasetContext(parent, index) { return createContext(parent, { active: false, dataset: void 0, datasetIndex: index, index, mode: "default", type: "dataset" }); } function createDataContext(parent, index, element) { return createContext(parent, { active: false, dataIndex: index, parsed: void 0, raw: void 0, element, index, mode: "default", type: "data" }); } function clearStacks(meta, items) { const datasetIndex = meta.controller.index; const axis = meta.vScale && meta.vScale.axis; if (!axis) { return; } items = items || meta._parsed; for (const parsed of items) { const stacks = parsed._stacks; if (!stacks || stacks[axis] === void 0 || stacks[axis][datasetIndex] === void 0) { return; } delete stacks[axis][datasetIndex]; if (stacks[axis]._visualValues !== void 0 && stacks[axis]._visualValues[datasetIndex] !== void 0) { delete stacks[axis]._visualValues[datasetIndex]; } } } var isDirectUpdateMode = (mode) => mode === "reset" || mode === "none"; var cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached); var createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && { keys: getSortedDatasetIndices(chart, true), values: null }; var DatasetController = class { constructor(chart, datasetIndex) { this.chart = chart; this._ctx = chart.ctx; this.index = datasetIndex; this._cachedDataOpts = {}; this._cachedMeta = this.getMeta(); this._type = this._cachedMeta.type; this.options = void 0; this._parsing = false; this._data = void 0; this._objectData = void 0; this._sharedOptions = void 0; this._drawStart = void 0; this._drawCount = void 0; this.enableOptionSharing = false; this.supportsDecimation = false; this.$context = void 0; this._syncList = []; this.datasetElementType = new.target.datasetElementType; this.dataElementType = new.target.dataElementType; this.initialize(); } initialize() { const meta = this._cachedMeta; this.configure(); this.linkScales(); meta._stacked = isStacked(meta.vScale, meta); this.addElements(); if (this.options.fill && !this.chart.isPluginEnabled("filler")) { console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options"); } } updateIndex(datasetIndex) { if (this.index !== datasetIndex) { clearStacks(this._cachedMeta); } this.index = datasetIndex; } linkScales() { const chart = this.chart; const meta = this._cachedMeta; const dataset = this.getDataset(); const chooseId = (axis, x, y, r) => axis === "x" ? x : axis === "r" ? r : y; const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, "x")); const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, "y")); const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, "r")); const indexAxis = meta.indexAxis; const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid); const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid); meta.xScale = this.getScaleForId(xid); meta.yScale = this.getScaleForId(yid); meta.rScale = this.getScaleForId(rid); meta.iScale = this.getScaleForId(iid); meta.vScale = this.getScaleForId(vid); } getDataset() { return this.chart.data.datasets[this.index]; } getMeta() { return this.chart.getDatasetMeta(this.index); } getScaleForId(scaleID) { return this.chart.scales[scaleID]; } _getOtherScale(scale) { const meta = this._cachedMeta; return scale === meta.iScale ? meta.vScale : meta.iScale; } reset() { this._update("reset"); } _destroy() { const meta = this._cachedMeta; if (this._data) { unlistenArrayEvents(this._data, this); } if (meta._stacked) { clearStacks(meta); } } _dataCheck() { const dataset = this.getDataset(); const data = dataset.data || (dataset.data = []); const _data = this._data; if (isObject(data)) { const meta = this._cachedMeta; this._data = convertObjectDataToArray(data, meta); } else if (_data !== data) { if (_data) { unlistenArrayEvents(_data, this); const meta = this._cachedMeta; clearStacks(meta); meta._parsed = []; } if (data && Object.isExtensible(data)) { listenArrayEvents(data, this); } this._syncList = []; this._data = data; } } addElements() { const meta = this._cachedMeta; this._dataCheck(); if (this.datasetElementType) { meta.dataset = new this.datasetElementType(); } } buildOrUpdateElements(resetNewElements) { const meta = this._cachedMeta; const dataset = this.getDataset(); let stackChanged = false; this._dataCheck(); const oldStacked = meta._stacked; meta._stacked = isStacked(meta.vScale, meta); if (meta.stack !== dataset.stack) { stackChanged = true; clearStacks(meta); meta.stack = dataset.stack; } this._resyncElements(resetNewElements); if (stackChanged || oldStacked !== meta._stacked) { updateStacks(this, meta._parsed); } } configure() { const config = this.chart.config; const scopeKeys = config.datasetScopeKeys(this._type); const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true); this.options = config.createResolver(scopes, this.getContext()); this._parsing = this.options.parsing; this._cachedDataOpts = {}; } parse(start, count) { const { _cachedMeta: meta, _data: data } = this; const { iScale, _stacked } = meta; const iAxis = iScale.axis; let sorted = start === 0 && count === data.length ? true : meta._sorted; let prev = start > 0 && meta._parsed[start - 1]; let i, cur, parsed; if (this._parsing === false) { meta._parsed = data; meta._sorted = true; parsed = data; } else { if (isArray(data[start])) { parsed = this.parseArrayData(meta, data, start, count); } else if (isObject(data[start])) { parsed = this.parseObjectData(meta, data, start, count); } else { parsed = this.parsePrimitiveData(meta, data, start, count); } const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis]; for (i = 0; i < count; ++i) { meta._parsed[i + start] = cur = parsed[i]; if (sorted) { if (isNotInOrderComparedToPrev()) { sorted = false; } prev = cur; } } meta._sorted = sorted; } if (_stacked) { updateStacks(this, parsed); } } parsePrimitiveData(meta, data, start, count) { const { iScale, vScale } = meta; const iAxis = iScale.axis; const vAxis = vScale.axis; const labels = iScale.getLabels(); const singleScale = iScale === vScale; const parsed = new Array(count); let i, ilen, index; for (i = 0, ilen = count; i < ilen; ++i) { index = i + start; parsed[i] = { [iAxis]: singleScale || iScale.parse(labels[index], index), [vAxis]: vScale.parse(data[index], index) }; } return parsed; } parseArrayData(meta, data, start, count) { const { xScale, yScale } = meta; const parsed = new Array(count); let i, ilen, index, item; for (i = 0, ilen = count; i < ilen; ++i) { index = i + start; item = data[index]; parsed[i] = { x: xScale.parse(item[0], index), y: yScale.parse(item[1], index) }; } return parsed; } parseObjectData(meta, data, start, count) { const { xScale, yScale } = meta; const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; const parsed = new Array(count); let i, ilen, index, item; for (i = 0, ilen = count; i < ilen; ++i) { index = i + start; item = data[index]; parsed[i] = { x: xScale.parse(resolveObjectKey(item, xAxisKey), index), y: yScale.parse(resolveObjectKey(item, yAxisKey), index) }; } return parsed; } getParsed(index) { return this._cachedMeta._parsed[index]; } getDataElement(index) { return this._cachedMeta.data[index]; } applyStack(scale, parsed, mode) { const chart = this.chart; const meta = this._cachedMeta; const value = parsed[scale.axis]; const stack2 = { keys: getSortedDatasetIndices(chart, true), values: parsed._stacks[scale.axis]._visualValues }; return applyStack(stack2, value, meta.index, { mode }); } updateRangeFromParsed(range, scale, parsed, stack2) { const parsedValue = parsed[scale.axis]; let value = parsedValue === null ? NaN : parsedValue; const values = stack2 && parsed._stacks[scale.axis]; if (stack2 && values) { stack2.values = values; value = applyStack(stack2, parsedValue, this._cachedMeta.index); } range.min = Math.min(range.min, value); range.max = Math.max(range.max, value); } getMinMax(scale, canStack) { const meta = this._cachedMeta; const _parsed = meta._parsed; const sorted = meta._sorted && scale === meta.iScale; const ilen = _parsed.length; const otherScale = this._getOtherScale(scale); const stack2 = createStack(canStack, meta, this.chart); const range = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY }; const { min: otherMin, max: otherMax } = getUserBounds(otherScale); let i, parsed; function _skip() { parsed = _parsed[i]; const otherValue = parsed[otherScale.axis]; return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue; } for (i = 0; i < ilen; ++i) { if (_skip()) { continue; } this.updateRangeFromParsed(range, scale, parsed, stack2); if (sorted) { break; } } if (sorted) { for (i = ilen - 1; i >= 0; --i) { if (_skip()) { continue; } this.updateRangeFromParsed(range, scale, parsed, stack2); break; } } return range; } getAllParsedValues(scale) { const parsed = this._cachedMeta._parsed; const values = []; let i, ilen, value; for (i = 0, ilen = parsed.length; i < ilen; ++i) { value = parsed[i][scale.axis]; if (isNumberFinite(value)) { values.push(value); } } return values; } getMaxOverflow() { return false; } getLabelAndValue(index) { const meta = this._cachedMeta; const iScale = meta.iScale; const vScale = meta.vScale; const parsed = this.getParsed(index); return { label: iScale ? "" + iScale.getLabelForValue(parsed[iScale.axis]) : "", value: vScale ? "" + vScale.getLabelForValue(parsed[vScale.axis]) : "" }; } _update(mode) { const meta = this._cachedMeta; this.update(mode || "default"); meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow()))); } update(mode) { } draw() { const ctx = this._ctx; const chart = this.chart; const meta = this._cachedMeta; const elements = meta.data || []; const area = chart.chartArea; const active = []; const start = this._drawStart || 0; const count = this._drawCount || elements.length - start; const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop; let i; if (meta.dataset) { meta.dataset.draw(ctx, area, start, count); } for (i = start; i < start + count; ++i) { const element = elements[i]; if (element.hidden) { continue; } if (element.active && drawActiveElementsOnTop) { active.push(element); } else { element.draw(ctx, area); } } for (i = 0; i < active.length; ++i) { active[i].draw(ctx, area); } } getStyle(index, active) { const mode = active ? "active" : "default"; return index === void 0 && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode); } getContext(index, active, mode) { const dataset = this.getDataset(); let context; if (index >= 0 && index < this._cachedMeta.data.length) { const element = this._cachedMeta.data[index]; context = element.$context || (element.$context = createDataContext(this.getContext(), index, element)); context.parsed = this.getParsed(index); context.raw = dataset.data[index]; context.index = context.dataIndex = index; } else { context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index)); context.dataset = dataset; context.index = context.datasetIndex = this.index; } context.active = !!active; context.mode = mode; return context; } resolveDatasetElementOptions(mode) { return this._resolveElementOptions(this.datasetElementType.id, mode); } resolveDataElementOptions(index, mode) { return this._resolveElementOptions(this.dataElementType.id, mode, index); } _resolveElementOptions(elementType, mode = "default", index) { const active = mode === "active"; const cache = this._cachedDataOpts; const cacheKey = elementType + "-" + mode; const cached = cache[cacheKey]; const sharing = this.enableOptionSharing && defined(index); if (cached) { return cloneIfNotShared(cached, sharing); } const config = this.chart.config; const scopeKeys = config.datasetElementScopeKeys(this._type, elementType); const prefixes = active ? [ `${elementType}Hover`, "hover", elementType, "" ] : [ elementType, "" ]; const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); const names2 = Object.keys(defaults2.elements[elementType]); const context = () => this.getContext(index, active, mode); const values = config.resolveNamedOptions(scopes, names2, context, prefixes); if (values.$shared) { values.$shared = sharing; cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing)); } return values; } _resolveAnimations(index, transition, active) { const chart = this.chart; const cache = this._cachedDataOpts; const cacheKey = `animation-${transition}`; const cached = cache[cacheKey]; if (cached) { return cached; } let options2; if (chart.options.animation !== false) { const config = this.chart.config; const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition); const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); options2 = config.createResolver(scopes, this.getContext(index, active, transition)); } const animations = new Animations(chart, options2 && options2.animations); if (options2 && options2._cacheable) { cache[cacheKey] = Object.freeze(animations); } return animations; } getSharedOptions(options2) { if (!options2.$shared) { return; } return this._sharedOptions || (this._sharedOptions = Object.assign({}, options2)); } includeOptions(mode, sharedOptions) { return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled; } _getSharedOptions(start, mode) { const firstOpts = this.resolveDataElementOptions(start, mode); const previouslySharedOptions = this._sharedOptions; const sharedOptions = this.getSharedOptions(firstOpts); const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions; this.updateSharedOptions(sharedOptions, mode, firstOpts); return { sharedOptions, includeOptions }; } updateElement(element, index, properties, mode) { if (isDirectUpdateMode(mode)) { Object.assign(element, properties); } else { this._resolveAnimations(index, mode).update(element, properties); } } updateSharedOptions(sharedOptions, mode, newOptions) { if (sharedOptions && !isDirectUpdateMode(mode)) { this._resolveAnimations(void 0, mode).update(sharedOptions, newOptions); } } _setStyle(element, index, mode, active) { element.active = active; const options2 = this.getStyle(index, active); this._resolveAnimations(index, mode, active).update(element, { options: !active && this.getSharedOptions(options2) || options2 }); } removeHoverStyle(element, datasetIndex, index) { this._setStyle(element, index, "active", false); } setHoverStyle(element, datasetIndex, index) { this._setStyle(element, index, "active", true); } _removeDatasetHoverStyle() { const element = this._cachedMeta.dataset; if (element) { this._setStyle(element, void 0, "active", false); } } _setDatasetHoverStyle() { const element = this._cachedMeta.dataset; if (element) { this._setStyle(element, void 0, "active", true); } } _resyncElements(resetNewElements) { const data = this._data; const elements = this._cachedMeta.data; for (const [method, arg1, arg2] of this._syncList) { this[method](arg1, arg2); } this._syncList = []; const numMeta = elements.length; const numData = data.length; const count = Math.min(numData, numMeta); if (count) { this.parse(0, count); } if (numData > numMeta) { this._insertElements(numMeta, numData - numMeta, resetNewElements); } else if (numData < numMeta) { this._removeElements(numData, numMeta - numData); } } _insertElements(start, count, resetNewElements = true) { const meta = this._cachedMeta; const data = meta.data; const end = start + count; let i; const move = (arr) => { arr.length += count; for (i = arr.length - 1; i >= end; i--) { arr[i] = arr[i - count]; } }; move(data); for (i = start; i < end; ++i) { data[i] = new this.dataElementType(); } if (this._parsing) { move(meta._parsed); } this.parse(start, count); if (resetNewElements) { this.updateElements(data, start, count, "reset"); } } updateElements(element, start, count, mode) { } _removeElements(start, count) { const meta = this._cachedMeta; if (this._parsing) { const removed = meta._parsed.splice(start, count); if (meta._stacked) { clearStacks(meta, removed); } } meta.data.splice(start, count); } _sync(args) { if (this._parsing) { this._syncList.push(args); } else { const [method, arg1, arg2] = args; this[method](arg1, arg2); } this.chart._dataChanges.push([ this.index, ...args ]); } _onDataPush() { const count = arguments.length; this._sync([ "_insertElements", this.getDataset().data.length - count, count ]); } _onDataPop() { this._sync([ "_removeElements", this._cachedMeta.data.length - 1, 1 ]); } _onDataShift() { this._sync([ "_removeElements", 0, 1 ]); } _onDataSplice(start, count) { if (count) { this._sync([ "_removeElements", start, count ]); } const newCount = arguments.length - 2; if (newCount) { this._sync([ "_insertElements", start, newCount ]); } } _onDataUnshift() { this._sync([ "_insertElements", 0, arguments.length ]); } }; __publicField(DatasetController, "defaults", {}); __publicField(DatasetController, "datasetElementType", null); __publicField(DatasetController, "dataElementType", null); function getAllScaleValues(scale, type) { if (!scale._cache.$bar) { const visibleMetas = scale.getMatchingVisibleMetas(type); let values = []; for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) { values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale)); } scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b)); } return scale._cache.$bar; } function computeMinSampleSize(meta) { const scale = meta.iScale; const values = getAllScaleValues(scale, meta.type); let min = scale._length; let i, ilen, curr, prev; const updateMinAndPrev = () => { if (curr === 32767 || curr === -32768) { return; } if (defined(prev)) { min = Math.min(min, Math.abs(curr - prev) || min); } prev = curr; }; for (i = 0, ilen = values.length; i < ilen; ++i) { curr = scale.getPixelForValue(values[i]); updateMinAndPrev(); } prev = void 0; for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) { curr = scale.getPixelForTick(i); updateMinAndPrev(); } return min; } function computeFitCategoryTraits(index, ruler, options2, stackCount) { const thickness = options2.barThickness; let size, ratio; if (isNullOrUndef(thickness)) { size = ruler.min * options2.categoryPercentage; ratio = options2.barPercentage; } else { size = thickness * stackCount; ratio = 1; } return { chunk: size / stackCount, ratio, start: ruler.pixels[index] - size / 2 }; } function computeFlexCategoryTraits(index, ruler, options2, stackCount) { const pixels = ruler.pixels; const curr = pixels[index]; let prev = index > 0 ? pixels[index - 1] : null; let next = index < pixels.length - 1 ? pixels[index + 1] : null; const percent = options2.categoryPercentage; if (prev === null) { prev = curr - (next === null ? ruler.end - ruler.start : next - curr); } if (next === null) { next = curr + curr - prev; } const start = curr - (curr - Math.min(prev, next)) / 2 * percent; const size = Math.abs(next - prev) / 2 * percent; return { chunk: size / stackCount, ratio: options2.barPercentage, start }; } function parseFloatBar(entry, item, vScale, i) { const startValue = vScale.parse(entry[0], i); const endValue = vScale.parse(entry[1], i); const min = Math.min(startValue, endValue); const max = Math.max(startValue, endValue); let barStart = min; let barEnd = max; if (Math.abs(min) > Math.abs(max)) { barStart = max; barEnd = min; } item[vScale.axis] = barEnd; item._custom = { barStart, barEnd, start: startValue, end: endValue, min, max }; } function parseValue(entry, item, vScale, i) { if (isArray(entry)) { parseFloatBar(entry, item, vScale, i); } else { item[vScale.axis] = vScale.parse(entry, i); } return item; } function parseArrayOrPrimitive(meta, data, start, count) { const iScale = meta.iScale; const vScale = meta.vScale; const labels = iScale.getLabels(); const singleScale = iScale === vScale; const parsed = []; let i, ilen, item, entry; for (i = start, ilen = start + count; i < ilen; ++i) { entry = data[i]; item = {}; item[iScale.axis] = singleScale || iScale.parse(labels[i], i); parsed.push(parseValue(entry, item, vScale, i)); } return parsed; } function isFloatBar(custom) { return custom && custom.barStart !== void 0 && custom.barEnd !== void 0; } function barSign(size, vScale, actualBase) { if (size !== 0) { return sign(size); } return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1); } function borderProps(properties) { let reverse, start, end, top, bottom; if (properties.horizontal) { reverse = properties.base > properties.x; start = "left"; end = "right"; } else { reverse = properties.base < properties.y; start = "bottom"; end = "top"; } if (reverse) { top = "end"; bottom = "start"; } else { top = "start"; bottom = "end"; } return { start, end, reverse, top, bottom }; } function setBorderSkipped(properties, options2, stack2, index) { let edge = options2.borderSkipped; const res = {}; if (!edge) { properties.borderSkipped = res; return; } if (edge === true) { properties.borderSkipped = { top: true, right: true, bottom: true, left: true }; return; } const { start, end, reverse, top, bottom } = borderProps(properties); if (edge === "middle" && stack2) { properties.enableBorderRadius = true; if ((stack2._top || 0) === index) { edge = top; } else if ((stack2._bottom || 0) === index) { edge = bottom; } else { res[parseEdge(bottom, start, end, reverse)] = true; edge = top; } } res[parseEdge(edge, start, end, reverse)] = true; properties.borderSkipped = res; } function parseEdge(edge, a, b, reverse) { if (reverse) { edge = swap(edge, a, b); edge = startEnd(edge, b, a); } else { edge = startEnd(edge, a, b); } return edge; } function swap(orig, v1, v2) { return orig === v1 ? v2 : orig === v2 ? v1 : orig; } function startEnd(v, start, end) { return v === "start" ? start : v === "end" ? end : v; } function setInflateAmount(properties, { inflateAmount }, ratio) { properties.inflateAmount = inflateAmount === "auto" ? ratio === 1 ? 0.33 : 0 : inflateAmount; } var BarController = class extends DatasetController { parsePrimitiveData(meta, data, start, count) { return parseArrayOrPrimitive(meta, data, start, count); } parseArrayData(meta, data, start, count) { return parseArrayOrPrimitive(meta, data, start, count); } parseObjectData(meta, data, start, count) { const { iScale, vScale } = meta; const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; const iAxisKey = iScale.axis === "x" ? xAxisKey : yAxisKey; const vAxisKey = vScale.axis === "x" ? xAxisKey : yAxisKey; const parsed = []; let i, ilen, item, obj; for (i = start, ilen = start + count; i < ilen; ++i) { obj = data[i]; item = {}; item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i); parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i)); } return parsed; } updateRangeFromParsed(range, scale, parsed, stack2) { super.updateRangeFromParsed(range, scale, parsed, stack2); const custom = parsed._custom; if (custom && scale === this._cachedMeta.vScale) { range.min = Math.min(range.min, custom.min); range.max = Math.max(range.max, custom.max); } } getMaxOverflow() { return 0; } getLabelAndValue(index) { const meta = this._cachedMeta; const { iScale, vScale } = meta; const parsed = this.getParsed(index); const custom = parsed._custom; const value = isFloatBar(custom) ? "[" + custom.start + ", " + custom.end + "]" : "" + vScale.getLabelForValue(parsed[vScale.axis]); return { label: "" + iScale.getLabelForValue(parsed[iScale.axis]), value }; } initialize() { this.enableOptionSharing = true; super.initialize(); const meta = this._cachedMeta; meta.stack = this.getDataset().stack; } update(mode) { const meta = this._cachedMeta; this.updateElements(meta.data, 0, meta.data.length, mode); } updateElements(bars, start, count, mode) { const reset2 = mode === "reset"; const { index, _cachedMeta: { vScale } } = this; const base = vScale.getBasePixel(); const horizontal = vScale.isHorizontal(); const ruler = this._getRuler(); const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); for (let i = start; i < start + count; i++) { const parsed = this.getParsed(i); const vpixels = reset2 || isNullOrUndef(parsed[vScale.axis]) ? { base, head: base } : this._calculateBarValuePixels(i); const ipixels = this._calculateBarIndexPixels(i, ruler); const stack2 = (parsed._stacks || {})[vScale.axis]; const properties = { horizontal, base: vpixels.base, enableBorderRadius: !stack2 || isFloatBar(parsed._custom) || index === stack2._top || index === stack2._bottom, x: horizontal ? vpixels.head : ipixels.center, y: horizontal ? ipixels.center : vpixels.head, height: horizontal ? ipixels.size : Math.abs(vpixels.size), width: horizontal ? Math.abs(vpixels.size) : ipixels.size }; if (includeOptions) { properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? "active" : mode); } const options2 = properties.options || bars[i].options; setBorderSkipped(properties, options2, stack2, index); setInflateAmount(properties, options2, ruler.ratio); this.updateElement(bars[i], i, properties, mode); } } _getStacks(last, dataIndex) { const { iScale } = this._cachedMeta; const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta) => meta.controller.options.grouped); const stacked = iScale.options.stacked; const stacks = []; const currentParsed = this._cachedMeta.controller.getParsed(dataIndex); const iScaleValue = currentParsed && currentParsed[iScale.axis]; const skipNull = (meta) => { const parsed = meta._parsed.find((item) => item[iScale.axis] === iScaleValue); const val = parsed && parsed[meta.vScale.axis]; if (isNullOrUndef(val) || isNaN(val)) { return true; } }; for (const meta of metasets) { if (dataIndex !== void 0 && skipNull(meta)) { continue; } if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === void 0 && meta.stack === void 0) { stacks.push(meta.stack); } if (meta.index === last) { break; } } if (!stacks.length) { stacks.push(void 0); } return stacks; } _getStackCount(index) { return this._getStacks(void 0, index).length; } _getStackIndex(datasetIndex, name, dataIndex) { const stacks = this._getStacks(datasetIndex, dataIndex); const index = name !== void 0 ? stacks.indexOf(name) : -1; return index === -1 ? stacks.length - 1 : index; } _getRuler() { const opts = this.options; const meta = this._cachedMeta; const iScale = meta.iScale; const pixels = []; let i, ilen; for (i = 0, ilen = meta.data.length; i < ilen; ++i) { pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i)); } const barThickness = opts.barThickness; const min = barThickness || computeMinSampleSize(meta); return { min, pixels, start: iScale._startPixel, end: iScale._endPixel, stackCount: this._getStackCount(), scale: iScale, grouped: opts.grouped, ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage }; } _calculateBarValuePixels(index) { const { _cachedMeta: { vScale, _stacked, index: datasetIndex }, options: { base: baseValue, minBarLength } } = this; const actualBase = baseValue || 0; const parsed = this.getParsed(index); const custom = parsed._custom; const floating = isFloatBar(custom); let value = parsed[vScale.axis]; let start = 0; let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value; let head, size; if (length !== value) { start = length - value; length = value; } if (floating) { value = custom.barStart; length = custom.barEnd - custom.barStart; if (value !== 0 && sign(value) !== sign(custom.barEnd)) { start = 0; } start += value; } const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start; let base = vScale.getPixelForValue(startValue); if (this.chart.getDataVisibility(index)) { head = vScale.getPixelForValue(start + length); } else { head = base; } size = head - base; if (Math.abs(size) < minBarLength) { size = barSign(size, vScale, actualBase) * minBarLength; if (value === actualBase) { base -= size / 2; } const startPixel = vScale.getPixelForDecimal(0); const endPixel = vScale.getPixelForDecimal(1); const min = Math.min(startPixel, endPixel); const max = Math.max(startPixel, endPixel); base = Math.max(Math.min(base, max), min); head = base + size; if (_stacked && !floating) { parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base); } } if (base === vScale.getPixelForValue(actualBase)) { const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2; base += halfGrid; size -= halfGrid; } return { size, base, head, center: head + size / 2 }; } _calculateBarIndexPixels(index, ruler) { const scale = ruler.scale; const options2 = this.options; const skipNull = options2.skipNull; const maxBarThickness = valueOrDefault(options2.maxBarThickness, Infinity); let center, size; if (ruler.grouped) { const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount; const range = options2.barThickness === "flex" ? computeFlexCategoryTraits(index, ruler, options2, stackCount) : computeFitCategoryTraits(index, ruler, options2, stackCount); const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : void 0); center = range.start + range.chunk * stackIndex + range.chunk / 2; size = Math.min(maxBarThickness, range.chunk * range.ratio); } else { center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index); size = Math.min(maxBarThickness, ruler.min * ruler.ratio); } return { base: center - size / 2, head: center + size / 2, center, size }; } draw() { const meta = this._cachedMeta; const vScale = meta.vScale; const rects = meta.data; const ilen = rects.length; let i = 0; for (; i < ilen; ++i) { if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) { rects[i].draw(this._ctx); } } } }; __publicField(BarController, "id", "bar"); __publicField(BarController, "defaults", { datasetElementType: false, dataElementType: "bar", categoryPercentage: 0.8, barPercentage: 0.9, grouped: true, animations: { numbers: { type: "number", properties: [ "x", "y", "base", "width", "height" ] } } }); __publicField(BarController, "overrides", { scales: { _index_: { type: "category", offset: true, grid: { offset: true } }, _value_: { type: "linear", beginAtZero: true } } }); function getRatioAndOffset(rotation, circumference, cutout) { let ratioX = 1; let ratioY = 1; let offsetX = 0; let offsetY = 0; if (circumference < TAU) { const startAngle = rotation; const endAngle = startAngle + circumference; const startX = Math.cos(startAngle); const startY = Math.sin(startAngle); const endX = Math.cos(endAngle); const endY = Math.sin(endAngle); const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout); const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout); const maxX = calcMax(0, startX, endX); const maxY = calcMax(HALF_PI, startY, endY); const minX = calcMin(PI, startX, endX); const minY = calcMin(PI + HALF_PI, startY, endY); ratioX = (maxX - minX) / 2; ratioY = (maxY - minY) / 2; offsetX = -(maxX + minX) / 2; offsetY = -(maxY + minY) / 2; } return { ratioX, ratioY, offsetX, offsetY }; } var DoughnutController = class extends DatasetController { constructor(chart, datasetIndex) { super(chart, datasetIndex); this.enableOptionSharing = true; this.innerRadius = void 0; this.outerRadius = void 0; this.offsetX = void 0; this.offsetY = void 0; } linkScales() { } parse(start, count) { const data = this.getDataset().data; const meta = this._cachedMeta; if (this._parsing === false) { meta._parsed = data; } else { let getter = (i2) => +data[i2]; if (isObject(data[start])) { const { key = "value" } = this._parsing; getter = (i2) => +resolveObjectKey(data[i2], key); } let i, ilen; for (i = start, ilen = start + count; i < ilen; ++i) { meta._parsed[i] = getter(i); } } } _getRotation() { return toRadians(this.options.rotation - 90); } _getCircumference() { return toRadians(this.options.circumference); } _getRotationExtents() { let min = TAU; let max = -TAU; for (let i = 0; i < this.chart.data.datasets.length; ++i) { if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) { const controller = this.chart.getDatasetMeta(i).controller; const rotation = controller._getRotation(); const circumference = controller._getCircumference(); min = Math.min(min, rotation); max = Math.max(max, rotation + circumference); } } return { rotation: min, circumference: max - min }; } update(mode) { const chart = this.chart; const { chartArea } = chart; const meta = this._cachedMeta; const arcs = meta.data; const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing; const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0); const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1); const chartWeight = this._getRingWeight(this.index); const { circumference, rotation } = this._getRotationExtents(); const { ratioX, ratioY, offsetX, offsetY } = getRatioAndOffset(rotation, circumference, cutout); const maxWidth = (chartArea.width - spacing) / ratioX; const maxHeight = (chartArea.height - spacing) / ratioY; const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); const outerRadius = toDimension(this.options.radius, maxRadius); const innerRadius = Math.max(outerRadius * cutout, 0); const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal(); this.offsetX = offsetX * outerRadius; this.offsetY = offsetY * outerRadius; meta.total = this.calculateTotal(); this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index); this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0); this.updateElements(arcs, 0, arcs.length, mode); } _circumference(i, reset2) { const opts = this.options; const meta = this._cachedMeta; const circumference = this._getCircumference(); if (reset2 && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) { return 0; } return this.calculateCircumference(meta._parsed[i] * circumference / TAU); } updateElements(arcs, start, count, mode) { const reset2 = mode === "reset"; const chart = this.chart; const chartArea = chart.chartArea; const opts = chart.options; const animationOpts = opts.animation; const centerX = (chartArea.left + chartArea.right) / 2; const centerY = (chartArea.top + chartArea.bottom) / 2; const animateScale = reset2 && animationOpts.animateScale; const innerRadius = animateScale ? 0 : this.innerRadius; const outerRadius = animateScale ? 0 : this.outerRadius; const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); let startAngle = this._getRotation(); let i; for (i = 0; i < start; ++i) { startAngle += this._circumference(i, reset2); } for (i = start; i < start + count; ++i) { const circumference = this._circumference(i, reset2); const arc = arcs[i]; const properties = { x: centerX + this.offsetX, y: centerY + this.offsetY, startAngle, endAngle: startAngle + circumference, circumference, outerRadius, innerRadius }; if (includeOptions) { properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? "active" : mode); } startAngle += circumference; this.updateElement(arc, i, properties, mode); } } calculateTotal() { const meta = this._cachedMeta; const metaData = meta.data; let total = 0; let i; for (i = 0; i < metaData.length; i++) { const value = meta._parsed[i]; if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) { total += Math.abs(value); } } return total; } calculateCircumference(value) { const total = this._cachedMeta.total; if (total > 0 && !isNaN(value)) { return TAU * (Math.abs(value) / total); } return 0; } getLabelAndValue(index) { const meta = this._cachedMeta; const chart = this.chart; const labels = chart.data.labels || []; const value = formatNumber(meta._parsed[index], chart.options.locale); return { label: labels[index] || "", value }; } getMaxBorderWidth(arcs) { let max = 0; const chart = this.chart; let i, ilen, meta, controller, options2; if (!arcs) { for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { meta = chart.getDatasetMeta(i); arcs = meta.data; controller = meta.controller; break; } } } if (!arcs) { return 0; } for (i = 0, ilen = arcs.length; i < ilen; ++i) { options2 = controller.resolveDataElementOptions(i); if (options2.borderAlign !== "inner") { max = Math.max(max, options2.borderWidth || 0, options2.hoverBorderWidth || 0); } } return max; } getMaxOffset(arcs) { let max = 0; for (let i = 0, ilen = arcs.length; i < ilen; ++i) { const options2 = this.resolveDataElementOptions(i); max = Math.max(max, options2.offset || 0, options2.hoverOffset || 0); } return max; } _getRingWeightOffset(datasetIndex) { let ringWeightOffset = 0; for (let i = 0; i < datasetIndex; ++i) { if (this.chart.isDatasetVisible(i)) { ringWeightOffset += this._getRingWeight(i); } } return ringWeightOffset; } _getRingWeight(datasetIndex) { return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0); } _getVisibleDatasetWeightTotal() { return this._getRingWeightOffset(this.chart.data.datasets.length) || 1; } }; __publicField(DoughnutController, "id", "doughnut"); __publicField(DoughnutController, "defaults", { datasetElementType: false, dataElementType: "arc", animation: { animateRotate: true, animateScale: false }, animations: { numbers: { type: "number", properties: [ "circumference", "endAngle", "innerRadius", "outerRadius", "startAngle", "x", "y", "offset", "borderWidth", "spacing" ] } }, cutout: "50%", rotation: 0, circumference: 360, radius: "100%", spacing: 0, indexAxis: "r" }); __publicField(DoughnutController, "descriptors", { _scriptable: (name) => name !== "spacing", _indexable: (name) => name !== "spacing" && !name.startsWith("borderDash") && !name.startsWith("hoverBorderDash") }); __publicField(DoughnutController, "overrides", { aspectRatio: 1, plugins: { legend: { labels: { generateLabels(chart) { const data = chart.data; if (data.labels.length && data.datasets.length) { const { labels: { pointStyle, color: color2 } } = chart.legend.options; return data.labels.map((label, i) => { const meta = chart.getDatasetMeta(0); const style = meta.controller.getStyle(i); return { text: label, fillStyle: style.backgroundColor, strokeStyle: style.borderColor, fontColor: color2, lineWidth: style.borderWidth, pointStyle, hidden: !chart.getDataVisibility(i), index: i }; }); } return []; } }, onClick(e, legendItem, legend) { legend.chart.toggleDataVisibility(legendItem.index); legend.chart.update(); } } } }); var PieController = class extends DoughnutController { }; __publicField(PieController, "id", "pie"); __publicField(PieController, "defaults", { cutout: 0, rotation: 0, circumference: 360, radius: "100%" }); function abstract() { throw new Error("This method is not implemented: Check that a complete date adapter is provided."); } var DateAdapterBase = class _DateAdapterBase { constructor(options2) { __publicField(this, "options"); this.options = options2 || {}; } /** * Override default date adapter methods. * Accepts type parameter to define options type. * @example * Chart._adapters._date.override<{myAdapterOption: string}>({ * init() { * console.log(this.options.myAdapterOption); * } * }) */ static override(members) { Object.assign(_DateAdapterBase.prototype, members); } // eslint-disable-next-line @typescript-eslint/no-empty-function init() { } formats() { return abstract(); } parse() { return abstract(); } format() { return abstract(); } add() { return abstract(); } diff() { return abstract(); } startOf() { return abstract(); } endOf() { return abstract(); } }; var adapters = { _date: DateAdapterBase }; function binarySearch(metaset, axis, value, intersect) { const { controller, data, _sorted } = metaset; const iScale = controller._cachedMeta.iScale; if (iScale && axis === iScale.axis && axis !== "r" && _sorted && data.length) { const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey; if (!intersect) { return lookupMethod(data, axis, value); } else if (controller._sharedOptions) { const el = data[0]; const range = typeof el.getRange === "function" && el.getRange(axis); if (range) { const start = lookupMethod(data, axis, value - range); const end = lookupMethod(data, axis, value + range); return { lo: start.lo, hi: end.hi }; } } } return { lo: 0, hi: data.length - 1 }; } function evaluateInteractionItems(chart, axis, position, handler, intersect) { const metasets = chart.getSortedVisibleDatasetMetas(); const value = position[axis]; for (let i = 0, ilen = metasets.length; i < ilen; ++i) { const { index, data } = metasets[i]; const { lo, hi } = binarySearch(metasets[i], axis, value, intersect); for (let j = lo; j <= hi; ++j) { const element = data[j]; if (!element.skip) { handler(element, index, j); } } } } function getDistanceMetricForAxis(axis) { const useX = axis.indexOf("x") !== -1; const useY = axis.indexOf("y") !== -1; return function(pt1, pt2) { const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); }; } function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) { const items = []; if (!includeInvisible && !chart.isPointInArea(position)) { return items; } const evaluationFunc = function(element, datasetIndex, index) { if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) { return; } if (element.inRange(position.x, position.y, useFinalPosition)) { items.push({ element, datasetIndex, index }); } }; evaluateInteractionItems(chart, axis, position, evaluationFunc, true); return items; } function getNearestRadialItems(chart, position, axis, useFinalPosition) { let items = []; function evaluationFunc(element, datasetIndex, index) { const { startAngle, endAngle } = element.getProps([ "startAngle", "endAngle" ], useFinalPosition); const { angle } = getAngleFromPoint(element, { x: position.x, y: position.y }); if (_angleBetween(angle, startAngle, endAngle)) { items.push({ element, datasetIndex, index }); } } evaluateInteractionItems(chart, axis, position, evaluationFunc); return items; } function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { let items = []; const distanceMetric = getDistanceMetricForAxis(axis); let minDistance = Number.POSITIVE_INFINITY; function evaluationFunc(element, datasetIndex, index) { const inRange2 = element.inRange(position.x, position.y, useFinalPosition); if (intersect && !inRange2) { return; } const center = element.getCenterPoint(useFinalPosition); const pointInArea = !!includeInvisible || chart.isPointInArea(center); if (!pointInArea && !inRange2) { return; } const distance = distanceMetric(position, center); if (distance < minDistance) { items = [ { element, datasetIndex, index } ]; minDistance = distance; } else if (distance === minDistance) { items.push({ element, datasetIndex, index }); } } evaluateInteractionItems(chart, axis, position, evaluationFunc); return items; } function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { if (!includeInvisible && !chart.isPointInArea(position)) { return []; } return axis === "r" && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible); } function getAxisItems(chart, position, axis, intersect, useFinalPosition) { const items = []; const rangeMethod = axis === "x" ? "inXRange" : "inYRange"; let intersectsItem = false; evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => { if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) { items.push({ element, datasetIndex, index }); intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition); } }); if (intersect && !intersectsItem) { return []; } return items; } var Interaction = { evaluateInteractionItems, modes: { index(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); const axis = options2.axis || "x"; const includeInvisible = options2.includeInvisible || false; const items = options2.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); const elements = []; if (!items.length) { return []; } chart.getSortedVisibleDatasetMetas().forEach((meta) => { const index = items[0].index; const element = meta.data[index]; if (element && !element.skip) { elements.push({ element, datasetIndex: meta.index, index }); } }); return elements; }, dataset(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); const axis = options2.axis || "xy"; const includeInvisible = options2.includeInvisible || false; let items = options2.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); if (items.length > 0) { const datasetIndex = items[0].datasetIndex; const data = chart.getDatasetMeta(datasetIndex).data; items = []; for (let i = 0; i < data.length; ++i) { items.push({ element: data[i], datasetIndex, index: i }); } } return items; }, point(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); const axis = options2.axis || "xy"; const includeInvisible = options2.includeInvisible || false; return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible); }, nearest(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); const axis = options2.axis || "xy"; const includeInvisible = options2.includeInvisible || false; return getNearestItems(chart, position, axis, options2.intersect, useFinalPosition, includeInvisible); }, x(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); return getAxisItems(chart, position, "x", options2.intersect, useFinalPosition); }, y(chart, e, options2, useFinalPosition) { const position = getRelativePosition(e, chart); return getAxisItems(chart, position, "y", options2.intersect, useFinalPosition); } } }; var STATIC_POSITIONS = [ "left", "top", "right", "bottom" ]; function filterByPosition(array, position) { return array.filter((v) => v.pos === position); } function filterDynamicPositionByAxis(array, axis) { return array.filter((v) => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis); } function sortByWeight(array, reverse) { return array.sort((a, b) => { const v0 = reverse ? b : a; const v1 = reverse ? a : b; return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight; }); } function wrapBoxes(boxes) { const layoutBoxes = []; let i, ilen, box, pos, stack2, stackWeight; for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { box = boxes[i]; ({ position: pos, options: { stack: stack2, stackWeight = 1 } } = box); layoutBoxes.push({ index: i, box, pos, horizontal: box.isHorizontal(), weight: box.weight, stack: stack2 && pos + stack2, stackWeight }); } return layoutBoxes; } function buildStacks(layouts2) { const stacks = {}; for (const wrap of layouts2) { const { stack: stack2, pos, stackWeight } = wrap; if (!stack2 || !STATIC_POSITIONS.includes(pos)) { continue; } const _stack = stacks[stack2] || (stacks[stack2] = { count: 0, placed: 0, weight: 0, size: 0 }); _stack.count++; _stack.weight += stackWeight; } return stacks; } function setLayoutDims(layouts2, params) { const stacks = buildStacks(layouts2); const { vBoxMaxWidth, hBoxMaxHeight } = params; let i, ilen, layout; for (i = 0, ilen = layouts2.length; i < ilen; ++i) { layout = layouts2[i]; const { fullSize } = layout.box; const stack2 = stacks[layout.stack]; const factor = stack2 && layout.stackWeight / stack2.weight; if (layout.horizontal) { layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth; layout.height = hBoxMaxHeight; } else { layout.width = vBoxMaxWidth; layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight; } } return stacks; } function buildLayoutBoxes(boxes) { const layoutBoxes = wrapBoxes(boxes); const fullSize = sortByWeight(layoutBoxes.filter((wrap) => wrap.box.fullSize), true); const left = sortByWeight(filterByPosition(layoutBoxes, "left"), true); const right = sortByWeight(filterByPosition(layoutBoxes, "right")); const top = sortByWeight(filterByPosition(layoutBoxes, "top"), true); const bottom = sortByWeight(filterByPosition(layoutBoxes, "bottom")); const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, "x"); const centerVertical = filterDynamicPositionByAxis(layoutBoxes, "y"); return { fullSize, leftAndTop: left.concat(top), rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal), chartArea: filterByPosition(layoutBoxes, "chartArea"), vertical: left.concat(right).concat(centerVertical), horizontal: top.concat(bottom).concat(centerHorizontal) }; } function getCombinedMax(maxPadding, chartArea, a, b) { return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); } function updateMaxPadding(maxPadding, boxPadding) { maxPadding.top = Math.max(maxPadding.top, boxPadding.top); maxPadding.left = Math.max(maxPadding.left, boxPadding.left); maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); maxPadding.right = Math.max(maxPadding.right, boxPadding.right); } function updateDims(chartArea, params, layout, stacks) { const { pos, box } = layout; const maxPadding = chartArea.maxPadding; if (!isObject(pos)) { if (layout.size) { chartArea[pos] -= layout.size; } const stack2 = stacks[layout.stack] || { size: 0, count: 1 }; stack2.size = Math.max(stack2.size, layout.horizontal ? box.height : box.width); layout.size = stack2.size / stack2.count; chartArea[pos] += layout.size; } if (box.getPadding) { updateMaxPadding(maxPadding, box.getPadding()); } const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, "left", "right")); const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, "top", "bottom")); const widthChanged = newWidth !== chartArea.w; const heightChanged = newHeight !== chartArea.h; chartArea.w = newWidth; chartArea.h = newHeight; return layout.horizontal ? { same: widthChanged, other: heightChanged } : { same: heightChanged, other: widthChanged }; } function handleMaxPadding(chartArea) { const maxPadding = chartArea.maxPadding; function updatePos(pos) { const change = Math.max(maxPadding[pos] - chartArea[pos], 0); chartArea[pos] += change; return change; } chartArea.y += updatePos("top"); chartArea.x += updatePos("left"); updatePos("right"); updatePos("bottom"); } function getMargins(horizontal, chartArea) { const maxPadding = chartArea.maxPadding; function marginForPositions(positions2) { const margin = { left: 0, top: 0, right: 0, bottom: 0 }; positions2.forEach((pos) => { margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); }); return margin; } return horizontal ? marginForPositions([ "left", "right" ]) : marginForPositions([ "top", "bottom" ]); } function fitBoxes(boxes, chartArea, params, stacks) { const refitBoxes = []; let i, ilen, layout, box, refit, changed; for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) { layout = boxes[i]; box = layout.box; box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea)); const { same, other } = updateDims(chartArea, params, layout, stacks); refit |= same && refitBoxes.length; changed = changed || other; if (!box.fullSize) { refitBoxes.push(layout); } } return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed; } function setBoxDims(box, left, top, width, height) { box.top = top; box.left = left; box.right = left + width; box.bottom = top + height; box.width = width; box.height = height; } function placeBoxes(boxes, chartArea, params, stacks) { const userPadding = params.padding; let { x, y } = chartArea; for (const layout of boxes) { const box = layout.box; const stack2 = stacks[layout.stack] || { count: 1, placed: 0, weight: 1 }; const weight = layout.stackWeight / stack2.weight || 1; if (layout.horizontal) { const width = chartArea.w * weight; const height = stack2.size || box.height; if (defined(stack2.start)) { y = stack2.start; } if (box.fullSize) { setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height); } else { setBoxDims(box, chartArea.left + stack2.placed, y, width, height); } stack2.start = y; stack2.placed += width; y = box.bottom; } else { const height = chartArea.h * weight; const width = stack2.size || box.width; if (defined(stack2.start)) { x = stack2.start; } if (box.fullSize) { setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top); } else { setBoxDims(box, x, chartArea.top + stack2.placed, width, height); } stack2.start = x; stack2.placed += height; x = box.right; } } chartArea.x = x; chartArea.y = y; } var layouts = { addBox(chart, item) { if (!chart.boxes) { chart.boxes = []; } item.fullSize = item.fullSize || false; item.position = item.position || "top"; item.weight = item.weight || 0; item._layers = item._layers || function() { return [ { z: 0, draw(chartArea) { item.draw(chartArea); } } ]; }; chart.boxes.push(item); }, removeBox(chart, layoutItem) { const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; if (index !== -1) { chart.boxes.splice(index, 1); } }, configure(chart, item, options2) { item.fullSize = options2.fullSize; item.position = options2.position; item.weight = options2.weight; }, update(chart, width, height, minPadding) { if (!chart) { return; } const padding = toPadding(chart.options.layout.padding); const availableWidth = Math.max(width - padding.width, 0); const availableHeight = Math.max(height - padding.height, 0); const boxes = buildLayoutBoxes(chart.boxes); const verticalBoxes = boxes.vertical; const horizontalBoxes = boxes.horizontal; each(chart.boxes, (box) => { if (typeof box.beforeLayout === "function") { box.beforeLayout(); } }); const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1; const params = Object.freeze({ outerWidth: width, outerHeight: height, padding, availableWidth, availableHeight, vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, hBoxMaxHeight: availableHeight / 2 }); const maxPadding = Object.assign({}, padding); updateMaxPadding(maxPadding, toPadding(minPadding)); const chartArea = Object.assign({ maxPadding, w: availableWidth, h: availableHeight, x: padding.left, y: padding.top }, padding); const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); fitBoxes(boxes.fullSize, chartArea, params, stacks); fitBoxes(verticalBoxes, chartArea, params, stacks); if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) { fitBoxes(verticalBoxes, chartArea, params, stacks); } handleMaxPadding(chartArea); placeBoxes(boxes.leftAndTop, chartArea, params, stacks); chartArea.x += chartArea.w; chartArea.y += chartArea.h; placeBoxes(boxes.rightAndBottom, chartArea, params, stacks); chart.chartArea = { left: chartArea.left, top: chartArea.top, right: chartArea.left + chartArea.w, bottom: chartArea.top + chartArea.h, height: chartArea.h, width: chartArea.w }; each(boxes.chartArea, (layout) => { const box = layout.box; Object.assign(box, chart.chartArea); box.update(chartArea.w, chartArea.h, { left: 0, top: 0, right: 0, bottom: 0 }); }); } }; var BasePlatform = class { acquireContext(canvas, aspectRatio) { } releaseContext(context) { return false; } addEventListener(chart, type, listener) { } removeEventListener(chart, type, listener) { } getDevicePixelRatio() { return 1; } getMaximumSize(element, width, height, aspectRatio) { width = Math.max(0, width || element.width); height = height || element.height; return { width, height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height) }; } isAttached(canvas) { return true; } updateConfig(config) { } }; var BasicPlatform = class extends BasePlatform { acquireContext(item) { return item && item.getContext && item.getContext("2d") || null; } updateConfig(config) { config.options.animation = false; } }; var EXPANDO_KEY = "$chartjs"; var EVENT_TYPES = { touchstart: "mousedown", touchmove: "mousemove", touchend: "mouseup", pointerenter: "mouseenter", pointerdown: "mousedown", pointermove: "mousemove", pointerup: "mouseup", pointerleave: "mouseout", pointerout: "mouseout" }; var isNullOrEmpty = (value) => value === null || value === ""; function initCanvas(canvas, aspectRatio) { const style = canvas.style; const renderHeight = canvas.getAttribute("height"); const renderWidth = canvas.getAttribute("width"); canvas[EXPANDO_KEY] = { initial: { height: renderHeight, width: renderWidth, style: { display: style.display, height: style.height, width: style.width } } }; style.display = style.display || "block"; style.boxSizing = style.boxSizing || "border-box"; if (isNullOrEmpty(renderWidth)) { const displayWidth = readUsedSize(canvas, "width"); if (displayWidth !== void 0) { canvas.width = displayWidth; } } if (isNullOrEmpty(renderHeight)) { if (canvas.style.height === "") { canvas.height = canvas.width / (aspectRatio || 2); } else { const displayHeight = readUsedSize(canvas, "height"); if (displayHeight !== void 0) { canvas.height = displayHeight; } } } return canvas; } var eventListenerOptions = supportsEventListenerOptions ? { passive: true } : false; function addListener(node, type, listener) { if (node) { node.addEventListener(type, listener, eventListenerOptions); } } function removeListener(chart, type, listener) { if (chart && chart.canvas) { chart.canvas.removeEventListener(type, listener, eventListenerOptions); } } function fromNativeEvent(event, chart) { const type = EVENT_TYPES[event.type] || event.type; const { x, y } = getRelativePosition(event, chart); return { type, chart, native: event, x: x !== void 0 ? x : null, y: y !== void 0 ? y : null }; } function nodeListContains(nodeList, canvas) { for (const node of nodeList) { if (node === canvas || node.contains(canvas)) { return true; } } } function createAttachObserver(chart, type, listener) { const canvas = chart.canvas; const observer = new MutationObserver((entries) => { let trigger = false; for (const entry of entries) { trigger = trigger || nodeListContains(entry.addedNodes, canvas); trigger = trigger && !nodeListContains(entry.removedNodes, canvas); } if (trigger) { listener(); } }); observer.observe(document, { childList: true, subtree: true }); return observer; } function createDetachObserver(chart, type, listener) { const canvas = chart.canvas; const observer = new MutationObserver((entries) => { let trigger = false; for (const entry of entries) { trigger = trigger || nodeListContains(entry.removedNodes, canvas); trigger = trigger && !nodeListContains(entry.addedNodes, canvas); } if (trigger) { listener(); } }); observer.observe(document, { childList: true, subtree: true }); return observer; } var drpListeningCharts = /* @__PURE__ */ new Map(); var oldDevicePixelRatio = 0; function onWindowResize() { const dpr = window.devicePixelRatio; if (dpr === oldDevicePixelRatio) { return; } oldDevicePixelRatio = dpr; drpListeningCharts.forEach((resize, chart) => { if (chart.currentDevicePixelRatio !== dpr) { resize(); } }); } function listenDevicePixelRatioChanges(chart, resize) { if (!drpListeningCharts.size) { window.addEventListener("resize", onWindowResize); } drpListeningCharts.set(chart, resize); } function unlistenDevicePixelRatioChanges(chart) { drpListeningCharts.delete(chart); if (!drpListeningCharts.size) { window.removeEventListener("resize", onWindowResize); } } function createResizeObserver(chart, type, listener) { const canvas = chart.canvas; const container = canvas && _getParentNode(canvas); if (!container) { return; } const resize = throttled((width, height) => { const w = container.clientWidth; listener(width, height); if (w < container.clientWidth) { listener(); } }, window); const observer = new ResizeObserver((entries) => { const entry = entries[0]; const width = entry.contentRect.width; const height = entry.contentRect.height; if (width === 0 && height === 0) { return; } resize(width, height); }); observer.observe(container); listenDevicePixelRatioChanges(chart, resize); return observer; } function releaseObserver(chart, type, observer) { if (observer) { observer.disconnect(); } if (type === "resize") { unlistenDevicePixelRatioChanges(chart); } } function createProxyAndListen(chart, type, listener) { const canvas = chart.canvas; const proxy = throttled((event) => { if (chart.ctx !== null) { listener(fromNativeEvent(event, chart)); } }, chart); addListener(canvas, type, proxy); return proxy; } var DomPlatform = class extends BasePlatform { acquireContext(canvas, aspectRatio) { const context = canvas && canvas.getContext && canvas.getContext("2d"); if (context && context.canvas === canvas) { initCanvas(canvas, aspectRatio); return context; } return null; } releaseContext(context) { const canvas = context.canvas; if (!canvas[EXPANDO_KEY]) { return false; } const initial = canvas[EXPANDO_KEY].initial; [ "height", "width" ].forEach((prop) => { const value = initial[prop]; if (isNullOrUndef(value)) { canvas.removeAttribute(prop); } else { canvas.setAttribute(prop, value); } }); const style = initial.style || {}; Object.keys(style).forEach((key) => { canvas.style[key] = style[key]; }); canvas.width = canvas.width; delete canvas[EXPANDO_KEY]; return true; } addEventListener(chart, type, listener) { this.removeEventListener(chart, type); const proxies = chart.$proxies || (chart.$proxies = {}); const handlers = { attach: createAttachObserver, detach: createDetachObserver, resize: createResizeObserver }; const handler = handlers[type] || createProxyAndListen; proxies[type] = handler(chart, type, listener); } removeEventListener(chart, type) { const proxies = chart.$proxies || (chart.$proxies = {}); const proxy = proxies[type]; if (!proxy) { return; } const handlers = { attach: releaseObserver, detach: releaseObserver, resize: releaseObserver }; const handler = handlers[type] || removeListener; handler(chart, type, proxy); proxies[type] = void 0; } getDevicePixelRatio() { return window.devicePixelRatio; } getMaximumSize(canvas, width, height, aspectRatio) { return getMaximumSize(canvas, width, height, aspectRatio); } isAttached(canvas) { const container = canvas && _getParentNode(canvas); return !!(container && container.isConnected); } }; function _detectPlatform(canvas) { if (!_isDomSupported() || typeof OffscreenCanvas !== "undefined" && canvas instanceof OffscreenCanvas) { return BasicPlatform; } return DomPlatform; } var Element = class { constructor() { __publicField(this, "x"); __publicField(this, "y"); __publicField(this, "active", false); __publicField(this, "options"); __publicField(this, "$animations"); } tooltipPosition(useFinalPosition) { const { x, y } = this.getProps([ "x", "y" ], useFinalPosition); return { x, y }; } hasValue() { return isNumber(this.x) && isNumber(this.y); } getProps(props, final) { const anims = this.$animations; if (!final || !anims) { return this; } const ret = {}; props.forEach((prop) => { ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop]; }); return ret; } }; __publicField(Element, "defaults", {}); __publicField(Element, "defaultRoutes"); function autoSkip(scale, ticks) { const tickOpts = scale.options.ticks; const determinedMaxTicks = determineMaxTicks(scale); const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks); const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; const numMajorIndices = majorIndices.length; const first = majorIndices[0]; const last = majorIndices[numMajorIndices - 1]; const newTicks = []; if (numMajorIndices > ticksLimit) { skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit); return newTicks; } const spacing = calculateSpacing(majorIndices, ticks, ticksLimit); if (numMajorIndices > 0) { let i, ilen; const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null; skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]); } skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); return newTicks; } skip(ticks, newTicks, spacing); return newTicks; } function determineMaxTicks(scale) { const offset = scale.options.offset; const tickLength = scale._tickSize(); const maxScale = scale._length / tickLength + (offset ? 0 : 1); const maxChart = scale._maxLength / tickLength; return Math.floor(Math.min(maxScale, maxChart)); } function calculateSpacing(majorIndices, ticks, ticksLimit) { const evenMajorSpacing = getEvenSpacing(majorIndices); const spacing = ticks.length / ticksLimit; if (!evenMajorSpacing) { return Math.max(spacing, 1); } const factors = _factorize(evenMajorSpacing); for (let i = 0, ilen = factors.length - 1; i < ilen; i++) { const factor = factors[i]; if (factor > spacing) { return factor; } } return Math.max(spacing, 1); } function getMajorIndices(ticks) { const result = []; let i, ilen; for (i = 0, ilen = ticks.length; i < ilen; i++) { if (ticks[i].major) { result.push(i); } } return result; } function skipMajors(ticks, newTicks, majorIndices, spacing) { let count = 0; let next = majorIndices[0]; let i; spacing = Math.ceil(spacing); for (i = 0; i < ticks.length; i++) { if (i === next) { newTicks.push(ticks[i]); count++; next = majorIndices[count * spacing]; } } } function skip(ticks, newTicks, spacing, majorStart, majorEnd) { const start = valueOrDefault(majorStart, 0); const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length); let count = 0; let length, i, next; spacing = Math.ceil(spacing); if (majorEnd) { length = majorEnd - majorStart; spacing = length / Math.floor(length / spacing); } next = start; while (next < 0) { count++; next = Math.round(start + count * spacing); } for (i = Math.max(start, 0); i < end; i++) { if (i === next) { newTicks.push(ticks[i]); count++; next = Math.round(start + count * spacing); } } } function getEvenSpacing(arr) { const len = arr.length; let i, diff; if (len < 2) { return false; } for (diff = arr[0], i = 1; i < len; ++i) { if (arr[i] - arr[i - 1] !== diff) { return false; } } return diff; } var reverseAlign = (align) => align === "left" ? "right" : align === "right" ? "left" : align; var offsetFromEdge = (scale, edge, offset) => edge === "top" || edge === "left" ? scale[edge] + offset : scale[edge] - offset; var getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength); function sample(arr, numItems) { const result = []; const increment = arr.length / numItems; const len = arr.length; let i = 0; for (; i < len; i += increment) { result.push(arr[Math.floor(i)]); } return result; } function getPixelForGridLine(scale, index, offsetGridLines) { const length = scale.ticks.length; const validIndex2 = Math.min(index, length - 1); const start = scale._startPixel; const end = scale._endPixel; const epsilon = 1e-6; let lineValue = scale.getPixelForTick(validIndex2); let offset; if (offsetGridLines) { if (length === 1) { offset = Math.max(lineValue - start, end - lineValue); } else if (index === 0) { offset = (scale.getPixelForTick(1) - lineValue) / 2; } else { offset = (lineValue - scale.getPixelForTick(validIndex2 - 1)) / 2; } lineValue += validIndex2 < index ? offset : -offset; if (lineValue < start - epsilon || lineValue > end + epsilon) { return; } } return lineValue; } function garbageCollect(caches, length) { each(caches, (cache) => { const gc = cache.gc; const gcLen = gc.length / 2; let i; if (gcLen > length) { for (i = 0; i < gcLen; ++i) { delete cache.data[gc[i]]; } gc.splice(0, gcLen); } }); } function getTickMarkLength(options2) { return options2.drawTicks ? options2.tickLength : 0; } function getTitleHeight(options2, fallback) { if (!options2.display) { return 0; } const font = toFont(options2.font, fallback); const padding = toPadding(options2.padding); const lines = isArray(options2.text) ? options2.text.length : 1; return lines * font.lineHeight + padding.height; } function createScaleContext(parent, scale) { return createContext(parent, { scale, type: "scale" }); } function createTickContext(parent, index, tick) { return createContext(parent, { tick, index, type: "tick" }); } function titleAlign(align, position, reverse) { let ret = _toLeftRightCenter(align); if (reverse && position !== "right" || !reverse && position === "right") { ret = reverseAlign(ret); } return ret; } function titleArgs(scale, offset, position, align) { const { top, left, bottom, right, chart } = scale; const { chartArea, scales } = chart; let rotation = 0; let maxWidth, titleX, titleY; const height = bottom - top; const width = right - left; if (scale.isHorizontal()) { titleX = _alignStartEnd(align, left, right); if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; titleY = scales[positionAxisID].getPixelForValue(value) + height - offset; } else if (position === "center") { titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset; } else { titleY = offsetFromEdge(scale, position, offset); } maxWidth = right - left; } else { if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; titleX = scales[positionAxisID].getPixelForValue(value) - width + offset; } else if (position === "center") { titleX = (chartArea.left + chartArea.right) / 2 - width + offset; } else { titleX = offsetFromEdge(scale, position, offset); } titleY = _alignStartEnd(align, bottom, top); rotation = position === "left" ? -HALF_PI : HALF_PI; } return { titleX, titleY, maxWidth, rotation }; } var Scale = class _Scale extends Element { constructor(cfg) { super(); this.id = cfg.id; this.type = cfg.type; this.options = void 0; this.ctx = cfg.ctx; this.chart = cfg.chart; this.top = void 0; this.bottom = void 0; this.left = void 0; this.right = void 0; this.width = void 0; this.height = void 0; this._margins = { left: 0, right: 0, top: 0, bottom: 0 }; this.maxWidth = void 0; this.maxHeight = void 0; this.paddingTop = void 0; this.paddingBottom = void 0; this.paddingLeft = void 0; this.paddingRight = void 0; this.axis = void 0; this.labelRotation = void 0; this.min = void 0; this.max = void 0; this._range = void 0; this.ticks = []; this._gridLineItems = null; this._labelItems = null; this._labelSizes = null; this._length = 0; this._maxLength = 0; this._longestTextCache = {}; this._startPixel = void 0; this._endPixel = void 0; this._reversePixels = false; this._userMax = void 0; this._userMin = void 0; this._suggestedMax = void 0; this._suggestedMin = void 0; this._ticksLength = 0; this._borderValue = 0; this._cache = {}; this._dataLimitsCached = false; this.$context = void 0; } init(options2) { this.options = options2.setContext(this.getContext()); this.axis = options2.axis; this._userMin = this.parse(options2.min); this._userMax = this.parse(options2.max); this._suggestedMin = this.parse(options2.suggestedMin); this._suggestedMax = this.parse(options2.suggestedMax); } parse(raw, index) { return raw; } getUserBounds() { let { _userMin, _userMax, _suggestedMin, _suggestedMax } = this; _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY); _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY); _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY); _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY); return { min: finiteOrDefault(_userMin, _suggestedMin), max: finiteOrDefault(_userMax, _suggestedMax), minDefined: isNumberFinite(_userMin), maxDefined: isNumberFinite(_userMax) }; } getMinMax(canStack) { let { min, max, minDefined, maxDefined } = this.getUserBounds(); let range; if (minDefined && maxDefined) { return { min, max }; } const metas = this.getMatchingVisibleMetas(); for (let i = 0, ilen = metas.length; i < ilen; ++i) { range = metas[i].controller.getMinMax(this, canStack); if (!minDefined) { min = Math.min(min, range.min); } if (!maxDefined) { max = Math.max(max, range.max); } } min = maxDefined && min > max ? max : min; max = minDefined && min > max ? min : max; return { min: finiteOrDefault(min, finiteOrDefault(max, min)), max: finiteOrDefault(max, finiteOrDefault(min, max)) }; } getPadding() { return { left: this.paddingLeft || 0, top: this.paddingTop || 0, right: this.paddingRight || 0, bottom: this.paddingBottom || 0 }; } getTicks() { return this.ticks; } getLabels() { const data = this.chart.data; return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; } getLabelItems(chartArea = this.chart.chartArea) { const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea)); return items; } beforeLayout() { this._cache = {}; this._dataLimitsCached = false; } beforeUpdate() { callback(this.options.beforeUpdate, [ this ]); } update(maxWidth, maxHeight, margins) { const { beginAtZero, grace, ticks: tickOpts } = this.options; const sampleSize = tickOpts.sampleSize; this.beforeUpdate(); this.maxWidth = maxWidth; this.maxHeight = maxHeight; this._margins = margins = Object.assign({ left: 0, right: 0, top: 0, bottom: 0 }, margins); this.ticks = null; this._labelSizes = null; this._gridLineItems = null; this._labelItems = null; this.beforeSetDimensions(); this.setDimensions(); this.afterSetDimensions(); this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom; if (!this._dataLimitsCached) { this.beforeDataLimits(); this.determineDataLimits(); this.afterDataLimits(); this._range = _addGrace(this, grace, beginAtZero); this._dataLimitsCached = true; } this.beforeBuildTicks(); this.ticks = this.buildTicks() || []; this.afterBuildTicks(); const samplingEnabled = sampleSize < this.ticks.length; this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks); this.configure(); this.beforeCalculateLabelRotation(); this.calculateLabelRotation(); this.afterCalculateLabelRotation(); if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === "auto")) { this.ticks = autoSkip(this, this.ticks); this._labelSizes = null; this.afterAutoSkip(); } if (samplingEnabled) { this._convertTicksToLabels(this.ticks); } this.beforeFit(); this.fit(); this.afterFit(); this.afterUpdate(); } configure() { let reversePixels = this.options.reverse; let startPixel, endPixel; if (this.isHorizontal()) { startPixel = this.left; endPixel = this.right; } else { startPixel = this.top; endPixel = this.bottom; reversePixels = !reversePixels; } this._startPixel = startPixel; this._endPixel = endPixel; this._reversePixels = reversePixels; this._length = endPixel - startPixel; this._alignToPixels = this.options.alignToPixels; } afterUpdate() { callback(this.options.afterUpdate, [ this ]); } beforeSetDimensions() { callback(this.options.beforeSetDimensions, [ this ]); } setDimensions() { if (this.isHorizontal()) { this.width = this.maxWidth; this.left = 0; this.right = this.width; } else { this.height = this.maxHeight; this.top = 0; this.bottom = this.height; } this.paddingLeft = 0; this.paddingTop = 0; this.paddingRight = 0; this.paddingBottom = 0; } afterSetDimensions() { callback(this.options.afterSetDimensions, [ this ]); } _callHooks(name) { this.chart.notifyPlugins(name, this.getContext()); callback(this.options[name], [ this ]); } beforeDataLimits() { this._callHooks("beforeDataLimits"); } determineDataLimits() { } afterDataLimits() { this._callHooks("afterDataLimits"); } beforeBuildTicks() { this._callHooks("beforeBuildTicks"); } buildTicks() { return []; } afterBuildTicks() { this._callHooks("afterBuildTicks"); } beforeTickToLabelConversion() { callback(this.options.beforeTickToLabelConversion, [ this ]); } generateTickLabels(ticks) { const tickOpts = this.options.ticks; let i, ilen, tick; for (i = 0, ilen = ticks.length; i < ilen; i++) { tick = ticks[i]; tick.label = callback(tickOpts.callback, [ tick.value, i, ticks ], this); } } afterTickToLabelConversion() { callback(this.options.afterTickToLabelConversion, [ this ]); } beforeCalculateLabelRotation() { callback(this.options.beforeCalculateLabelRotation, [ this ]); } calculateLabelRotation() { const options2 = this.options; const tickOpts = options2.ticks; const numTicks = getTicksLimit(this.ticks.length, options2.ticks.maxTicksLimit); const minRotation = tickOpts.minRotation || 0; const maxRotation = tickOpts.maxRotation; let labelRotation = minRotation; let tickWidth, maxHeight, maxLabelDiagonal; if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) { this.labelRotation = minRotation; return; } const labelSizes = this._getLabelSizes(); const maxLabelWidth = labelSizes.widest.width; const maxLabelHeight = labelSizes.highest.height; const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth); tickWidth = options2.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1); if (maxLabelWidth + 6 > tickWidth) { tickWidth = maxWidth / (numTicks - (options2.offset ? 0.5 : 1)); maxHeight = this.maxHeight - getTickMarkLength(options2.grid) - tickOpts.padding - getTitleHeight(options2.title, this.chart.options.font); maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1)))); labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); } this.labelRotation = labelRotation; } afterCalculateLabelRotation() { callback(this.options.afterCalculateLabelRotation, [ this ]); } afterAutoSkip() { } beforeFit() { callback(this.options.beforeFit, [ this ]); } fit() { const minSize = { width: 0, height: 0 }; const { chart, options: { ticks: tickOpts, title: titleOpts, grid: gridOpts } } = this; const display = this._isVisible(); const isHorizontal = this.isHorizontal(); if (display) { const titleHeight = getTitleHeight(titleOpts, chart.options.font); if (isHorizontal) { minSize.width = this.maxWidth; minSize.height = getTickMarkLength(gridOpts) + titleHeight; } else { minSize.height = this.maxHeight; minSize.width = getTickMarkLength(gridOpts) + titleHeight; } if (tickOpts.display && this.ticks.length) { const { first, last, widest, highest } = this._getLabelSizes(); const tickPadding = tickOpts.padding * 2; const angleRadians = toRadians(this.labelRotation); const cos = Math.cos(angleRadians); const sin = Math.sin(angleRadians); if (isHorizontal) { const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height; minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding); } else { const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height; minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding); } this._calculatePadding(first, last, sin, cos); } } this._handleMargins(); if (isHorizontal) { this.width = this._length = chart.width - this._margins.left - this._margins.right; this.height = minSize.height; } else { this.width = minSize.width; this.height = this._length = chart.height - this._margins.top - this._margins.bottom; } } _calculatePadding(first, last, sin, cos) { const { ticks: { align, padding }, position } = this.options; const isRotated = this.labelRotation !== 0; const labelsBelowTicks = position !== "top" && this.axis === "x"; if (this.isHorizontal()) { const offsetLeft = this.getPixelForTick(0) - this.left; const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1); let paddingLeft = 0; let paddingRight = 0; if (isRotated) { if (labelsBelowTicks) { paddingLeft = cos * first.width; paddingRight = sin * last.height; } else { paddingLeft = sin * first.height; paddingRight = cos * last.width; } } else if (align === "start") { paddingRight = last.width; } else if (align === "end") { paddingLeft = first.width; } else if (align !== "inner") { paddingLeft = first.width / 2; paddingRight = last.width / 2; } this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0); this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0); } else { let paddingTop = last.height / 2; let paddingBottom = first.height / 2; if (align === "start") { paddingTop = 0; paddingBottom = first.height; } else if (align === "end") { paddingTop = last.height; paddingBottom = 0; } this.paddingTop = paddingTop + padding; this.paddingBottom = paddingBottom + padding; } } _handleMargins() { if (this._margins) { this._margins.left = Math.max(this.paddingLeft, this._margins.left); this._margins.top = Math.max(this.paddingTop, this._margins.top); this._margins.right = Math.max(this.paddingRight, this._margins.right); this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom); } } afterFit() { callback(this.options.afterFit, [ this ]); } isHorizontal() { const { axis, position } = this.options; return position === "top" || position === "bottom" || axis === "x"; } isFullSize() { return this.options.fullSize; } _convertTicksToLabels(ticks) { this.beforeTickToLabelConversion(); this.generateTickLabels(ticks); let i, ilen; for (i = 0, ilen = ticks.length; i < ilen; i++) { if (isNullOrUndef(ticks[i].label)) { ticks.splice(i, 1); ilen--; i--; } } this.afterTickToLabelConversion(); } _getLabelSizes() { let labelSizes = this._labelSizes; if (!labelSizes) { const sampleSize = this.options.ticks.sampleSize; let ticks = this.ticks; if (sampleSize < ticks.length) { ticks = sample(ticks, sampleSize); } this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit); } return labelSizes; } _computeLabelSizes(ticks, length, maxTicksLimit) { const { ctx, _longestTextCache: caches } = this; const widths = []; const heights = []; const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit)); let widestLabelSize = 0; let highestLabelSize = 0; let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel; for (i = 0; i < length; i += increment) { label = ticks[i].label; tickFont = this._resolveTickFontOptions(i); ctx.font = fontString = tickFont.string; cache = caches[fontString] = caches[fontString] || { data: {}, gc: [] }; lineHeight = tickFont.lineHeight; width = height = 0; if (!isNullOrUndef(label) && !isArray(label)) { width = _measureText(ctx, cache.data, cache.gc, width, label); height = lineHeight; } else if (isArray(label)) { for (j = 0, jlen = label.length; j < jlen; ++j) { nestedLabel = label[j]; if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) { width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel); height += lineHeight; } } } widths.push(width); heights.push(height); widestLabelSize = Math.max(width, widestLabelSize); highestLabelSize = Math.max(height, highestLabelSize); } garbageCollect(caches, length); const widest = widths.indexOf(widestLabelSize); const highest = heights.indexOf(highestLabelSize); const valueAt = (idx) => ({ width: widths[idx] || 0, height: heights[idx] || 0 }); return { first: valueAt(0), last: valueAt(length - 1), widest: valueAt(widest), highest: valueAt(highest), widths, heights }; } getLabelForValue(value) { return value; } getPixelForValue(value, index) { return NaN; } getValueForPixel(pixel) { } getPixelForTick(index) { const ticks = this.ticks; if (index < 0 || index > ticks.length - 1) { return null; } return this.getPixelForValue(ticks[index].value); } getPixelForDecimal(decimal) { if (this._reversePixels) { decimal = 1 - decimal; } const pixel = this._startPixel + decimal * this._length; return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel); } getDecimalForPixel(pixel) { const decimal = (pixel - this._startPixel) / this._length; return this._reversePixels ? 1 - decimal : decimal; } getBasePixel() { return this.getPixelForValue(this.getBaseValue()); } getBaseValue() { const { min, max } = this; return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0; } getContext(index) { const ticks = this.ticks || []; if (index >= 0 && index < ticks.length) { const tick = ticks[index]; return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick)); } return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this)); } _tickSize() { const optionTicks = this.options.ticks; const rot = toRadians(this.labelRotation); const cos = Math.abs(Math.cos(rot)); const sin = Math.abs(Math.sin(rot)); const labelSizes = this._getLabelSizes(); const padding = optionTicks.autoSkipPadding || 0; const w = labelSizes ? labelSizes.widest.width + padding : 0; const h4 = labelSizes ? labelSizes.highest.height + padding : 0; return this.isHorizontal() ? h4 * cos > w * sin ? w / cos : h4 / sin : h4 * sin < w * cos ? h4 / cos : w / sin; } _isVisible() { const display = this.options.display; if (display !== "auto") { return !!display; } return this.getMatchingVisibleMetas().length > 0; } _computeGridLineItems(chartArea) { const axis = this.axis; const chart = this.chart; const options2 = this.options; const { grid, position, border } = options2; const offset = grid.offset; const isHorizontal = this.isHorizontal(); const ticks = this.ticks; const ticksLength = ticks.length + (offset ? 1 : 0); const tl = getTickMarkLength(grid); const items = []; const borderOpts = border.setContext(this.getContext()); const axisWidth = borderOpts.display ? borderOpts.width : 0; const axisHalfWidth = axisWidth / 2; const alignBorderValue = function(pixel) { return _alignPixel(chart, pixel, axisWidth); }; let borderValue, i, lineValue, alignedLineValue; let tx1, ty1, tx2, ty2, x1, y1, x2, y2; if (position === "top") { borderValue = alignBorderValue(this.bottom); ty1 = this.bottom - tl; ty2 = borderValue - axisHalfWidth; y1 = alignBorderValue(chartArea.top) + axisHalfWidth; y2 = chartArea.bottom; } else if (position === "bottom") { borderValue = alignBorderValue(this.top); y1 = chartArea.top; y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; ty1 = borderValue + axisHalfWidth; ty2 = this.top + tl; } else if (position === "left") { borderValue = alignBorderValue(this.right); tx1 = this.right - tl; tx2 = borderValue - axisHalfWidth; x1 = alignBorderValue(chartArea.left) + axisHalfWidth; x2 = chartArea.right; } else if (position === "right") { borderValue = alignBorderValue(this.left); x1 = chartArea.left; x2 = alignBorderValue(chartArea.right) - axisHalfWidth; tx1 = borderValue + axisHalfWidth; tx2 = this.left + tl; } else if (axis === "x") { if (position === "center") { borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5); } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); } y1 = chartArea.top; y2 = chartArea.bottom; ty1 = borderValue + axisHalfWidth; ty2 = ty1 + tl; } else if (axis === "y") { if (position === "center") { borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2); } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); } tx1 = borderValue - axisHalfWidth; tx2 = tx1 - tl; x1 = chartArea.left; x2 = chartArea.right; } const limit = valueOrDefault(options2.ticks.maxTicksLimit, ticksLength); const step = Math.max(1, Math.ceil(ticksLength / limit)); for (i = 0; i < ticksLength; i += step) { const context = this.getContext(i); const optsAtIndex = grid.setContext(context); const optsAtIndexBorder = border.setContext(context); const lineWidth = optsAtIndex.lineWidth; const lineColor = optsAtIndex.color; const borderDash = optsAtIndexBorder.dash || []; const borderDashOffset = optsAtIndexBorder.dashOffset; const tickWidth = optsAtIndex.tickWidth; const tickColor = optsAtIndex.tickColor; const tickBorderDash = optsAtIndex.tickBorderDash || []; const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset; lineValue = getPixelForGridLine(this, i, offset); if (lineValue === void 0) { continue; } alignedLineValue = _alignPixel(chart, lineValue, lineWidth); if (isHorizontal) { tx1 = tx2 = x1 = x2 = alignedLineValue; } else { ty1 = ty2 = y1 = y2 = alignedLineValue; } items.push({ tx1, ty1, tx2, ty2, x1, y1, x2, y2, width: lineWidth, color: lineColor, borderDash, borderDashOffset, tickWidth, tickColor, tickBorderDash, tickBorderDashOffset }); } this._ticksLength = ticksLength; this._borderValue = borderValue; return items; } _computeLabelItems(chartArea) { const axis = this.axis; const options2 = this.options; const { position, ticks: optionTicks } = options2; const isHorizontal = this.isHorizontal(); const ticks = this.ticks; const { align, crossAlign, padding, mirror } = optionTicks; const tl = getTickMarkLength(options2.grid); const tickAndPadding = tl + padding; const hTickAndPadding = mirror ? -padding : tickAndPadding; const rotation = -toRadians(this.labelRotation); const items = []; let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; let textBaseline = "middle"; if (position === "top") { y = this.bottom - hTickAndPadding; textAlign = this._getXAxisLabelAlignment(); } else if (position === "bottom") { y = this.top + hTickAndPadding; textAlign = this._getXAxisLabelAlignment(); } else if (position === "left") { const ret = this._getYAxisLabelAlignment(tl); textAlign = ret.textAlign; x = ret.x; } else if (position === "right") { const ret = this._getYAxisLabelAlignment(tl); textAlign = ret.textAlign; x = ret.x; } else if (axis === "x") { if (position === "center") { y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding; } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; } textAlign = this._getXAxisLabelAlignment(); } else if (axis === "y") { if (position === "center") { x = (chartArea.left + chartArea.right) / 2 - tickAndPadding; } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; x = this.chart.scales[positionAxisID].getPixelForValue(value); } textAlign = this._getYAxisLabelAlignment(tl).textAlign; } if (axis === "y") { if (align === "start") { textBaseline = "top"; } else if (align === "end") { textBaseline = "bottom"; } } const labelSizes = this._getLabelSizes(); for (i = 0, ilen = ticks.length; i < ilen; ++i) { tick = ticks[i]; label = tick.label; const optsAtIndex = optionTicks.setContext(this.getContext(i)); pixel = this.getPixelForTick(i) + optionTicks.labelOffset; font = this._resolveTickFontOptions(i); lineHeight = font.lineHeight; lineCount = isArray(label) ? label.length : 1; const halfCount = lineCount / 2; const color2 = optsAtIndex.color; const strokeColor = optsAtIndex.textStrokeColor; const strokeWidth = optsAtIndex.textStrokeWidth; let tickTextAlign = textAlign; if (isHorizontal) { x = pixel; if (textAlign === "inner") { if (i === ilen - 1) { tickTextAlign = !this.options.reverse ? "right" : "left"; } else if (i === 0) { tickTextAlign = !this.options.reverse ? "left" : "right"; } else { tickTextAlign = "center"; } } if (position === "top") { if (crossAlign === "near" || rotation !== 0) { textOffset = -lineCount * lineHeight + lineHeight / 2; } else if (crossAlign === "center") { textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight; } else { textOffset = -labelSizes.highest.height + lineHeight / 2; } } else { if (crossAlign === "near" || rotation !== 0) { textOffset = lineHeight / 2; } else if (crossAlign === "center") { textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight; } else { textOffset = labelSizes.highest.height - lineCount * lineHeight; } } if (mirror) { textOffset *= -1; } if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) { x += lineHeight / 2 * Math.sin(rotation); } } else { y = pixel; textOffset = (1 - lineCount) * lineHeight / 2; } let backdrop; if (optsAtIndex.showLabelBackdrop) { const labelPadding = toPadding(optsAtIndex.backdropPadding); const height = labelSizes.heights[i]; const width = labelSizes.widths[i]; let top = textOffset - labelPadding.top; let left = 0 - labelPadding.left; switch (textBaseline) { case "middle": top -= height / 2; break; case "bottom": top -= height; break; } switch (textAlign) { case "center": left -= width / 2; break; case "right": left -= width; break; case "inner": if (i === ilen - 1) { left -= width; } else if (i > 0) { left -= width / 2; } break; } backdrop = { left, top, width: width + labelPadding.width, height: height + labelPadding.height, color: optsAtIndex.backdropColor }; } items.push({ label, font, textOffset, options: { rotation, color: color2, strokeColor, strokeWidth, textAlign: tickTextAlign, textBaseline, translation: [ x, y ], backdrop } }); } return items; } _getXAxisLabelAlignment() { const { position, ticks } = this.options; const rotation = -toRadians(this.labelRotation); if (rotation) { return position === "top" ? "left" : "right"; } let align = "center"; if (ticks.align === "start") { align = "left"; } else if (ticks.align === "end") { align = "right"; } else if (ticks.align === "inner") { align = "inner"; } return align; } _getYAxisLabelAlignment(tl) { const { position, ticks: { crossAlign, mirror, padding } } = this.options; const labelSizes = this._getLabelSizes(); const tickAndPadding = tl + padding; const widest = labelSizes.widest.width; let textAlign; let x; if (position === "left") { if (mirror) { x = this.right + padding; if (crossAlign === "near") { textAlign = "left"; } else if (crossAlign === "center") { textAlign = "center"; x += widest / 2; } else { textAlign = "right"; x += widest; } } else { x = this.right - tickAndPadding; if (crossAlign === "near") { textAlign = "right"; } else if (crossAlign === "center") { textAlign = "center"; x -= widest / 2; } else { textAlign = "left"; x = this.left; } } } else if (position === "right") { if (mirror) { x = this.left + padding; if (crossAlign === "near") { textAlign = "right"; } else if (crossAlign === "center") { textAlign = "center"; x -= widest / 2; } else { textAlign = "left"; x -= widest; } } else { x = this.left + tickAndPadding; if (crossAlign === "near") { textAlign = "left"; } else if (crossAlign === "center") { textAlign = "center"; x += widest / 2; } else { textAlign = "right"; x = this.right; } } } else { textAlign = "right"; } return { textAlign, x }; } _computeLabelArea() { if (this.options.ticks.mirror) { return; } const chart = this.chart; const position = this.options.position; if (position === "left" || position === "right") { return { top: 0, left: this.left, bottom: chart.height, right: this.right }; } if (position === "top" || position === "bottom") { return { top: this.top, left: 0, bottom: this.bottom, right: chart.width }; } } drawBackground() { const { ctx, options: { backgroundColor }, left, top, width, height } = this; if (backgroundColor) { ctx.save(); ctx.fillStyle = backgroundColor; ctx.fillRect(left, top, width, height); ctx.restore(); } } getLineWidthForValue(value) { const grid = this.options.grid; if (!this._isVisible() || !grid.display) { return 0; } const ticks = this.ticks; const index = ticks.findIndex((t2) => t2.value === value); if (index >= 0) { const opts = grid.setContext(this.getContext(index)); return opts.lineWidth; } return 0; } drawGrid(chartArea) { const grid = this.options.grid; const ctx = this.ctx; const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea)); let i, ilen; const drawLine = (p1, p2, style) => { if (!style.width || !style.color) { return; } ctx.save(); ctx.lineWidth = style.width; ctx.strokeStyle = style.color; ctx.setLineDash(style.borderDash || []); ctx.lineDashOffset = style.borderDashOffset; ctx.beginPath(); ctx.moveTo(p1.x, p1.y); ctx.lineTo(p2.x, p2.y); ctx.stroke(); ctx.restore(); }; if (grid.display) { for (i = 0, ilen = items.length; i < ilen; ++i) { const item = items[i]; if (grid.drawOnChartArea) { drawLine({ x: item.x1, y: item.y1 }, { x: item.x2, y: item.y2 }, item); } if (grid.drawTicks) { drawLine({ x: item.tx1, y: item.ty1 }, { x: item.tx2, y: item.ty2 }, { color: item.tickColor, width: item.tickWidth, borderDash: item.tickBorderDash, borderDashOffset: item.tickBorderDashOffset }); } } } } drawBorder() { const { chart, ctx, options: { border, grid } } = this; const borderOpts = border.setContext(this.getContext()); const axisWidth = border.display ? borderOpts.width : 0; if (!axisWidth) { return; } const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth; const borderValue = this._borderValue; let x1, x2, y1, y2; if (this.isHorizontal()) { x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2; x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2; y1 = y2 = borderValue; } else { y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2; y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2; x1 = x2 = borderValue; } ctx.save(); ctx.lineWidth = borderOpts.width; ctx.strokeStyle = borderOpts.color; ctx.beginPath(); ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); ctx.stroke(); ctx.restore(); } drawLabels(chartArea) { const optionTicks = this.options.ticks; if (!optionTicks.display) { return; } const ctx = this.ctx; const area = this._computeLabelArea(); if (area) { clipArea(ctx, area); } const items = this.getLabelItems(chartArea); for (const item of items) { const renderTextOptions = item.options; const tickFont = item.font; const label = item.label; const y = item.textOffset; renderText(ctx, label, 0, y, tickFont, renderTextOptions); } if (area) { unclipArea(ctx); } } drawTitle() { const { ctx, options: { position, title, reverse } } = this; if (!title.display) { return; } const font = toFont(title.font); const padding = toPadding(title.padding); const align = title.align; let offset = font.lineHeight / 2; if (position === "bottom" || position === "center" || isObject(position)) { offset += padding.bottom; if (isArray(title.text)) { offset += font.lineHeight * (title.text.length - 1); } } else { offset += padding.top; } const { titleX, titleY, maxWidth, rotation } = titleArgs(this, offset, position, align); renderText(ctx, title.text, 0, 0, font, { color: title.color, maxWidth, rotation, textAlign: titleAlign(align, position, reverse), textBaseline: "middle", translation: [ titleX, titleY ] }); } draw(chartArea) { if (!this._isVisible()) { return; } this.drawBackground(); this.drawGrid(chartArea); this.drawBorder(); this.drawTitle(); this.drawLabels(chartArea); } _layers() { const opts = this.options; const tz = opts.ticks && opts.ticks.z || 0; const gz = valueOrDefault(opts.grid && opts.grid.z, -1); const bz = valueOrDefault(opts.border && opts.border.z, 0); if (!this._isVisible() || this.draw !== _Scale.prototype.draw) { return [ { z: tz, draw: (chartArea) => { this.draw(chartArea); } } ]; } return [ { z: gz, draw: (chartArea) => { this.drawBackground(); this.drawGrid(chartArea); this.drawTitle(); } }, { z: bz, draw: () => { this.drawBorder(); } }, { z: tz, draw: (chartArea) => { this.drawLabels(chartArea); } } ]; } getMatchingVisibleMetas(type) { const metas = this.chart.getSortedVisibleDatasetMetas(); const axisID = this.axis + "AxisID"; const result = []; let i, ilen; for (i = 0, ilen = metas.length; i < ilen; ++i) { const meta = metas[i]; if (meta[axisID] === this.id && (!type || meta.type === type)) { result.push(meta); } } return result; } _resolveTickFontOptions(index) { const opts = this.options.ticks.setContext(this.getContext(index)); return toFont(opts.font); } _maxDigits() { const fontSize = this._resolveTickFontOptions(0).lineHeight; return (this.isHorizontal() ? this.width : this.height) / fontSize; } }; var TypedRegistry = class { constructor(type, scope, override) { this.type = type; this.scope = scope; this.override = override; this.items = /* @__PURE__ */ Object.create(null); } isForType(type) { return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype); } register(item) { const proto = Object.getPrototypeOf(item); let parentScope; if (isIChartComponent(proto)) { parentScope = this.register(proto); } const items = this.items; const id = item.id; const scope = this.scope + "." + id; if (!id) { throw new Error("class does not have id: " + item); } if (id in items) { return scope; } items[id] = item; registerDefaults(item, scope, parentScope); if (this.override) { defaults2.override(item.id, item.overrides); } return scope; } get(id) { return this.items[id]; } unregister(item) { const items = this.items; const id = item.id; const scope = this.scope; if (id in items) { delete items[id]; } if (scope && id in defaults2[scope]) { delete defaults2[scope][id]; if (this.override) { delete overrides[id]; } } } }; function registerDefaults(item, scope, parentScope) { const itemDefaults = merge(/* @__PURE__ */ Object.create(null), [ parentScope ? defaults2.get(parentScope) : {}, defaults2.get(scope), item.defaults ]); defaults2.set(scope, itemDefaults); if (item.defaultRoutes) { routeDefaults(scope, item.defaultRoutes); } if (item.descriptors) { defaults2.describe(scope, item.descriptors); } } function routeDefaults(scope, routes) { Object.keys(routes).forEach((property) => { const propertyParts = property.split("."); const sourceName = propertyParts.pop(); const sourceScope = [ scope ].concat(propertyParts).join("."); const parts = routes[property].split("."); const targetName = parts.pop(); const targetScope = parts.join("."); defaults2.route(sourceScope, sourceName, targetScope, targetName); }); } function isIChartComponent(proto) { return "id" in proto && "defaults" in proto; } var Registry = class { constructor() { this.controllers = new TypedRegistry(DatasetController, "datasets", true); this.elements = new TypedRegistry(Element, "elements"); this.plugins = new TypedRegistry(Object, "plugins"); this.scales = new TypedRegistry(Scale, "scales"); this._typedRegistries = [ this.controllers, this.scales, this.elements ]; } add(...args) { this._each("register", args); } remove(...args) { this._each("unregister", args); } addControllers(...args) { this._each("register", args, this.controllers); } addElements(...args) { this._each("register", args, this.elements); } addPlugins(...args) { this._each("register", args, this.plugins); } addScales(...args) { this._each("register", args, this.scales); } getController(id) { return this._get(id, this.controllers, "controller"); } getElement(id) { return this._get(id, this.elements, "element"); } getPlugin(id) { return this._get(id, this.plugins, "plugin"); } getScale(id) { return this._get(id, this.scales, "scale"); } removeControllers(...args) { this._each("unregister", args, this.controllers); } removeElements(...args) { this._each("unregister", args, this.elements); } removePlugins(...args) { this._each("unregister", args, this.plugins); } removeScales(...args) { this._each("unregister", args, this.scales); } _each(method, args, typedRegistry) { [ ...args ].forEach((arg) => { const reg = typedRegistry || this._getRegistryForType(arg); if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) { this._exec(method, reg, arg); } else { each(arg, (item) => { const itemReg = typedRegistry || this._getRegistryForType(item); this._exec(method, itemReg, item); }); } }); } _exec(method, registry2, component) { const camelMethod = _capitalize(method); callback(component["before" + camelMethod], [], component); registry2[method](component); callback(component["after" + camelMethod], [], component); } _getRegistryForType(type) { for (let i = 0; i < this._typedRegistries.length; i++) { const reg = this._typedRegistries[i]; if (reg.isForType(type)) { return reg; } } return this.plugins; } _get(id, typedRegistry, type) { const item = typedRegistry.get(id); if (item === void 0) { throw new Error('"' + id + '" is not a registered ' + type + "."); } return item; } }; var registry = /* @__PURE__ */ new Registry(); var PluginService = class { constructor() { this._init = []; } notify(chart, hook, args, filter2) { if (hook === "beforeInit") { this._init = this._createDescriptors(chart, true); this._notify(this._init, chart, "install"); } const descriptors2 = filter2 ? this._descriptors(chart).filter(filter2) : this._descriptors(chart); const result = this._notify(descriptors2, chart, hook, args); if (hook === "afterDestroy") { this._notify(descriptors2, chart, "stop"); this._notify(this._init, chart, "uninstall"); } return result; } _notify(descriptors2, chart, hook, args) { args = args || {}; for (const descriptor of descriptors2) { const plugin = descriptor.plugin; const method = plugin[hook]; const params = [ chart, args, descriptor.options ]; if (callback(method, params, plugin) === false && args.cancelable) { return false; } } return true; } invalidate() { if (!isNullOrUndef(this._cache)) { this._oldCache = this._cache; this._cache = void 0; } } _descriptors(chart) { if (this._cache) { return this._cache; } const descriptors2 = this._cache = this._createDescriptors(chart); this._notifyStateChanges(chart); return descriptors2; } _createDescriptors(chart, all) { const config = chart && chart.config; const options2 = valueOrDefault(config.options && config.options.plugins, {}); const plugins = allPlugins(config); return options2 === false && !all ? [] : createDescriptors(chart, plugins, options2, all); } _notifyStateChanges(chart) { const previousDescriptors = this._oldCache || []; const descriptors2 = this._cache; const diff = (a, b) => a.filter((x) => !b.some((y) => x.plugin.id === y.plugin.id)); this._notify(diff(previousDescriptors, descriptors2), chart, "stop"); this._notify(diff(descriptors2, previousDescriptors), chart, "start"); } }; function allPlugins(config) { const localIds = {}; const plugins = []; const keys = Object.keys(registry.plugins.items); for (let i = 0; i < keys.length; i++) { plugins.push(registry.getPlugin(keys[i])); } const local = config.plugins || []; for (let i = 0; i < local.length; i++) { const plugin = local[i]; if (plugins.indexOf(plugin) === -1) { plugins.push(plugin); localIds[plugin.id] = true; } } return { plugins, localIds }; } function getOpts(options2, all) { if (!all && options2 === false) { return null; } if (options2 === true) { return {}; } return options2; } function createDescriptors(chart, { plugins, localIds }, options2, all) { const result = []; const context = chart.getContext(); for (const plugin of plugins) { const id = plugin.id; const opts = getOpts(options2[id], all); if (opts === null) { continue; } result.push({ plugin, options: pluginOpts(chart.config, { plugin, local: localIds[id] }, opts, context) }); } return result; } function pluginOpts(config, { plugin, local }, opts, context) { const keys = config.pluginScopeKeys(plugin); const scopes = config.getOptionScopes(opts, keys); if (local && plugin.defaults) { scopes.push(plugin.defaults); } return config.createResolver(scopes, context, [ "" ], { scriptable: false, indexable: false, allKeys: true }); } function getIndexAxis(type, options2) { const datasetDefaults = defaults2.datasets[type] || {}; const datasetOptions = (options2.datasets || {})[type] || {}; return datasetOptions.indexAxis || options2.indexAxis || datasetDefaults.indexAxis || "x"; } function getAxisFromDefaultScaleID(id, indexAxis) { let axis = id; if (id === "_index_") { axis = indexAxis; } else if (id === "_value_") { axis = indexAxis === "x" ? "y" : "x"; } return axis; } function getDefaultScaleIDFromAxis(axis, indexAxis) { return axis === indexAxis ? "_index_" : "_value_"; } function idMatchesAxis(id) { if (id === "x" || id === "y" || id === "r") { return id; } } function axisFromPosition(position) { if (position === "top" || position === "bottom") { return "x"; } if (position === "left" || position === "right") { return "y"; } } function determineAxis(id, ...scaleOptions) { if (idMatchesAxis(id)) { return id; } for (const opts of scaleOptions) { const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase()); if (axis) { return axis; } } throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`); } function getAxisFromDataset(id, axis, dataset) { if (dataset[axis + "AxisID"] === id) { return { axis }; } } function retrieveAxisFromDatasets(id, config) { if (config.data && config.data.datasets) { const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id); if (boundDs.length) { return getAxisFromDataset(id, "x", boundDs[0]) || getAxisFromDataset(id, "y", boundDs[0]); } } return {}; } function mergeScaleConfig(config, options2) { const chartDefaults = overrides[config.type] || { scales: {} }; const configScales = options2.scales || {}; const chartIndexAxis = getIndexAxis(config.type, options2); const scales = /* @__PURE__ */ Object.create(null); Object.keys(configScales).forEach((id) => { const scaleConf = configScales[id]; if (!isObject(scaleConf)) { return console.error(`Invalid scale configuration for scale: ${id}`); } if (scaleConf._proxy) { return console.warn(`Ignoring resolver passed as options for scale: ${id}`); } const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults2.scales[scaleConf.type]); const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis); const defaultScaleOptions = chartDefaults.scales || {}; scales[id] = mergeIf(/* @__PURE__ */ Object.create(null), [ { axis }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId] ]); }); config.data.datasets.forEach((dataset) => { const type = dataset.type || config.type; const indexAxis = dataset.indexAxis || getIndexAxis(type, options2); const datasetDefaults = overrides[type] || {}; const defaultScaleOptions = datasetDefaults.scales || {}; Object.keys(defaultScaleOptions).forEach((defaultID) => { const axis = getAxisFromDefaultScaleID(defaultID, indexAxis); const id = dataset[axis + "AxisID"] || axis; scales[id] = scales[id] || /* @__PURE__ */ Object.create(null); mergeIf(scales[id], [ { axis }, configScales[id], defaultScaleOptions[defaultID] ]); }); }); Object.keys(scales).forEach((key) => { const scale = scales[key]; mergeIf(scale, [ defaults2.scales[scale.type], defaults2.scale ]); }); return scales; } function initOptions(config) { const options2 = config.options || (config.options = {}); options2.plugins = valueOrDefault(options2.plugins, {}); options2.scales = mergeScaleConfig(config, options2); } function initData(data) { data = data || {}; data.datasets = data.datasets || []; data.labels = data.labels || []; return data; } function initConfig(config) { config = config || {}; config.data = initData(config.data); initOptions(config); return config; } var keyCache = /* @__PURE__ */ new Map(); var keysCached = /* @__PURE__ */ new Set(); function cachedKeys(cacheKey, generate2) { let keys = keyCache.get(cacheKey); if (!keys) { keys = generate2(); keyCache.set(cacheKey, keys); keysCached.add(keys); } return keys; } var addIfFound = (set2, obj, key) => { const opts = resolveObjectKey(obj, key); if (opts !== void 0) { set2.add(opts); } }; var Config = class { constructor(config) { this._config = initConfig(config); this._scopeCache = /* @__PURE__ */ new Map(); this._resolverCache = /* @__PURE__ */ new Map(); } get platform() { return this._config.platform; } get type() { return this._config.type; } set type(type) { this._config.type = type; } get data() { return this._config.data; } set data(data) { this._config.data = initData(data); } get options() { return this._config.options; } set options(options2) { this._config.options = options2; } get plugins() { return this._config.plugins; } update() { const config = this._config; this.clearCache(); initOptions(config); } clearCache() { this._scopeCache.clear(); this._resolverCache.clear(); } datasetScopeKeys(datasetType) { return cachedKeys(datasetType, () => [ [ `datasets.${datasetType}`, "" ] ]); } datasetAnimationScopeKeys(datasetType, transition) { return cachedKeys(`${datasetType}.transition.${transition}`, () => [ [ `datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}` ], [ `datasets.${datasetType}`, "" ] ]); } datasetElementScopeKeys(datasetType, elementType) { return cachedKeys(`${datasetType}-${elementType}`, () => [ [ `datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, "" ] ]); } pluginScopeKeys(plugin) { const id = plugin.id; const type = this.type; return cachedKeys(`${type}-plugin-${id}`, () => [ [ `plugins.${id}`, ...plugin.additionalOptionScopes || [] ] ]); } _cachedScopes(mainScope, resetCache) { const _scopeCache = this._scopeCache; let cache = _scopeCache.get(mainScope); if (!cache || resetCache) { cache = /* @__PURE__ */ new Map(); _scopeCache.set(mainScope, cache); } return cache; } getOptionScopes(mainScope, keyLists, resetCache) { const { options: options2, type } = this; const cache = this._cachedScopes(mainScope, resetCache); const cached = cache.get(keyLists); if (cached) { return cached; } const scopes = /* @__PURE__ */ new Set(); keyLists.forEach((keys) => { if (mainScope) { scopes.add(mainScope); keys.forEach((key) => addIfFound(scopes, mainScope, key)); } keys.forEach((key) => addIfFound(scopes, options2, key)); keys.forEach((key) => addIfFound(scopes, overrides[type] || {}, key)); keys.forEach((key) => addIfFound(scopes, defaults2, key)); keys.forEach((key) => addIfFound(scopes, descriptors, key)); }); const array = Array.from(scopes); if (array.length === 0) { array.push(/* @__PURE__ */ Object.create(null)); } if (keysCached.has(keyLists)) { cache.set(keyLists, array); } return array; } chartOptionScopes() { const { options: options2, type } = this; return [ options2, overrides[type] || {}, defaults2.datasets[type] || {}, { type }, defaults2, descriptors ]; } resolveNamedOptions(scopes, names2, context, prefixes = [ "" ]) { const result = { $shared: true }; const { resolver, subPrefixes } = getResolver(this._resolverCache, scopes, prefixes); let options2 = resolver; if (needContext(resolver, names2)) { result.$shared = false; context = isFunction(context) ? context() : context; const subResolver = this.createResolver(scopes, context, subPrefixes); options2 = _attachContext(resolver, context, subResolver); } for (const prop of names2) { result[prop] = options2[prop]; } return result; } createResolver(scopes, context, prefixes = [ "" ], descriptorDefaults) { const { resolver } = getResolver(this._resolverCache, scopes, prefixes); return isObject(context) ? _attachContext(resolver, context, void 0, descriptorDefaults) : resolver; } }; function getResolver(resolverCache, scopes, prefixes) { let cache = resolverCache.get(scopes); if (!cache) { cache = /* @__PURE__ */ new Map(); resolverCache.set(scopes, cache); } const cacheKey = prefixes.join(); let cached = cache.get(cacheKey); if (!cached) { const resolver = _createResolver(scopes, prefixes); cached = { resolver, subPrefixes: prefixes.filter((p) => !p.toLowerCase().includes("hover")) }; cache.set(cacheKey, cached); } return cached; } var hasFunction = (value) => isObject(value) && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key])); function needContext(proxy, names2) { const { isScriptable, isIndexable } = _descriptors(proxy); for (const prop of names2) { const scriptable = isScriptable(prop); const indexable = isIndexable(prop); const value = (indexable || scriptable) && proxy[prop]; if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) { return true; } } return false; } var version2 = "4.4.4"; var KNOWN_POSITIONS = [ "top", "bottom", "left", "right", "chartArea" ]; function positionIsHorizontal(position, axis) { return position === "top" || position === "bottom" || KNOWN_POSITIONS.indexOf(position) === -1 && axis === "x"; } function compare2Level(l1, l2) { return function(a, b) { return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1]; }; } function onAnimationsComplete(context) { const chart = context.chart; const animationOptions = chart.options.animation; chart.notifyPlugins("afterRender"); callback(animationOptions && animationOptions.onComplete, [ context ], chart); } function onAnimationProgress(context) { const chart = context.chart; const animationOptions = chart.options.animation; callback(animationOptions && animationOptions.onProgress, [ context ], chart); } function getCanvas(item) { if (_isDomSupported() && typeof item === "string") { item = document.getElementById(item); } else if (item && item.length) { item = item[0]; } if (item && item.canvas) { item = item.canvas; } return item; } var instances = {}; var getChart = (key) => { const canvas = getCanvas(key); return Object.values(instances).filter((c) => c.canvas === canvas).pop(); }; function moveNumericKeys(obj, start, move) { const keys = Object.keys(obj); for (const key of keys) { const intKey = +key; if (intKey >= start) { const value = obj[key]; delete obj[key]; if (move > 0 || intKey > start) { obj[intKey + move] = value; } } } } function determineLastEvent(e, lastEvent, inChartArea, isClick) { if (!inChartArea || e.type === "mouseout") { return null; } if (isClick) { return lastEvent; } return e; } function getSizeForArea(scale, chartArea, field) { return scale.options.clip ? scale[field] : chartArea[field]; } function getDatasetArea(meta, chartArea) { const { xScale, yScale } = meta; if (xScale && yScale) { return { left: getSizeForArea(xScale, chartArea, "left"), right: getSizeForArea(xScale, chartArea, "right"), top: getSizeForArea(yScale, chartArea, "top"), bottom: getSizeForArea(yScale, chartArea, "bottom") }; } return chartArea; } var Chart = class { static register(...items) { registry.add(...items); invalidatePlugins(); } static unregister(...items) { registry.remove(...items); invalidatePlugins(); } constructor(item, userConfig) { const config = this.config = new Config(userConfig); const initialCanvas = getCanvas(item); const existingChart = getChart(initialCanvas); if (existingChart) { throw new Error("Canvas is already in use. Chart with ID '" + existingChart.id + "' must be destroyed before the canvas with ID '" + existingChart.canvas.id + "' can be reused."); } const options2 = config.createResolver(config.chartOptionScopes(), this.getContext()); this.platform = new (config.platform || _detectPlatform(initialCanvas))(); this.platform.updateConfig(config); const context = this.platform.acquireContext(initialCanvas, options2.aspectRatio); const canvas = context && context.canvas; const height = canvas && canvas.height; const width = canvas && canvas.width; this.id = uid(); this.ctx = context; this.canvas = canvas; this.width = width; this.height = height; this._options = options2; this._aspectRatio = this.aspectRatio; this._layers = []; this._metasets = []; this._stacks = void 0; this.boxes = []; this.currentDevicePixelRatio = void 0; this.chartArea = void 0; this._active = []; this._lastEvent = void 0; this._listeners = {}; this._responsiveListeners = void 0; this._sortedMetasets = []; this.scales = {}; this._plugins = new PluginService(); this.$proxies = {}; this._hiddenIndices = {}; this.attached = false; this._animationsDisabled = void 0; this.$context = void 0; this._doResize = debounce((mode) => this.update(mode), options2.resizeDelay || 0); this._dataChanges = []; instances[this.id] = this; if (!context || !canvas) { console.error("Failed to create chart: can't acquire context from the given item"); return; } animator.listen(this, "complete", onAnimationsComplete); animator.listen(this, "progress", onAnimationProgress); this._initialize(); if (this.attached) { this.update(); } } get aspectRatio() { const { options: { aspectRatio, maintainAspectRatio }, width, height, _aspectRatio } = this; if (!isNullOrUndef(aspectRatio)) { return aspectRatio; } if (maintainAspectRatio && _aspectRatio) { return _aspectRatio; } return height ? width / height : null; } get data() { return this.config.data; } set data(data) { this.config.data = data; } get options() { return this._options; } set options(options2) { this.config.options = options2; } get registry() { return registry; } _initialize() { this.notifyPlugins("beforeInit"); if (this.options.responsive) { this.resize(); } else { retinaScale(this, this.options.devicePixelRatio); } this.bindEvents(); this.notifyPlugins("afterInit"); return this; } clear() { clearCanvas(this.canvas, this.ctx); return this; } stop() { animator.stop(this); return this; } resize(width, height) { if (!animator.running(this)) { this._resize(width, height); } else { this._resizeBeforeDraw = { width, height }; } } _resize(width, height) { const options2 = this.options; const canvas = this.canvas; const aspectRatio = options2.maintainAspectRatio && this.aspectRatio; const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio); const newRatio = options2.devicePixelRatio || this.platform.getDevicePixelRatio(); const mode = this.width ? "resize" : "attach"; this.width = newSize.width; this.height = newSize.height; this._aspectRatio = this.aspectRatio; if (!retinaScale(this, newRatio, true)) { return; } this.notifyPlugins("resize", { size: newSize }); callback(options2.onResize, [ this, newSize ], this); if (this.attached) { if (this._doResize(mode)) { this.render(); } } } ensureScalesHaveIDs() { const options2 = this.options; const scalesOptions = options2.scales || {}; each(scalesOptions, (axisOptions, axisID) => { axisOptions.id = axisID; }); } buildOrUpdateScales() { const options2 = this.options; const scaleOpts = options2.scales; const scales = this.scales; const updated = Object.keys(scales).reduce((obj, id) => { obj[id] = false; return obj; }, {}); let items = []; if (scaleOpts) { items = items.concat(Object.keys(scaleOpts).map((id) => { const scaleOptions = scaleOpts[id]; const axis = determineAxis(id, scaleOptions); const isRadial = axis === "r"; const isHorizontal = axis === "x"; return { options: scaleOptions, dposition: isRadial ? "chartArea" : isHorizontal ? "bottom" : "left", dtype: isRadial ? "radialLinear" : isHorizontal ? "category" : "linear" }; })); } each(items, (item) => { const scaleOptions = item.options; const id = scaleOptions.id; const axis = determineAxis(id, scaleOptions); const scaleType = valueOrDefault(scaleOptions.type, item.dtype); if (scaleOptions.position === void 0 || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) { scaleOptions.position = item.dposition; } updated[id] = true; let scale = null; if (id in scales && scales[id].type === scaleType) { scale = scales[id]; } else { const scaleClass = registry.getScale(scaleType); scale = new scaleClass({ id, type: scaleType, ctx: this.ctx, chart: this }); scales[scale.id] = scale; } scale.init(scaleOptions, options2); }); each(updated, (hasUpdated, id) => { if (!hasUpdated) { delete scales[id]; } }); each(scales, (scale) => { layouts.configure(this, scale, scale.options); layouts.addBox(this, scale); }); } _updateMetasets() { const metasets = this._metasets; const numData = this.data.datasets.length; const numMeta = metasets.length; metasets.sort((a, b) => a.index - b.index); if (numMeta > numData) { for (let i = numData; i < numMeta; ++i) { this._destroyDatasetMeta(i); } metasets.splice(numData, numMeta - numData); } this._sortedMetasets = metasets.slice(0).sort(compare2Level("order", "index")); } _removeUnreferencedMetasets() { const { _metasets: metasets, data: { datasets } } = this; if (metasets.length > datasets.length) { delete this._stacks; } metasets.forEach((meta, index) => { if (datasets.filter((x) => x === meta._dataset).length === 0) { this._destroyDatasetMeta(index); } }); } buildOrUpdateControllers() { const newControllers = []; const datasets = this.data.datasets; let i, ilen; this._removeUnreferencedMetasets(); for (i = 0, ilen = datasets.length; i < ilen; i++) { const dataset = datasets[i]; let meta = this.getDatasetMeta(i); const type = dataset.type || this.config.type; if (meta.type && meta.type !== type) { this._destroyDatasetMeta(i); meta = this.getDatasetMeta(i); } meta.type = type; meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options); meta.order = dataset.order || 0; meta.index = i; meta.label = "" + dataset.label; meta.visible = this.isDatasetVisible(i); if (meta.controller) { meta.controller.updateIndex(i); meta.controller.linkScales(); } else { const ControllerClass = registry.getController(type); const { datasetElementType, dataElementType } = defaults2.datasets[type]; Object.assign(ControllerClass, { dataElementType: registry.getElement(dataElementType), datasetElementType: datasetElementType && registry.getElement(datasetElementType) }); meta.controller = new ControllerClass(this, i); newControllers.push(meta.controller); } } this._updateMetasets(); return newControllers; } _resetElements() { each(this.data.datasets, (dataset, datasetIndex) => { this.getDatasetMeta(datasetIndex).controller.reset(); }, this); } reset() { this._resetElements(); this.notifyPlugins("reset"); } update(mode) { const config = this.config; config.update(); const options2 = this._options = config.createResolver(config.chartOptionScopes(), this.getContext()); const animsDisabled = this._animationsDisabled = !options2.animation; this._updateScales(); this._checkEventBindings(); this._updateHiddenIndices(); this._plugins.invalidate(); if (this.notifyPlugins("beforeUpdate", { mode, cancelable: true }) === false) { return; } const newControllers = this.buildOrUpdateControllers(); this.notifyPlugins("beforeElementsUpdate"); let minPadding = 0; for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) { const { controller } = this.getDatasetMeta(i); const reset2 = !animsDisabled && newControllers.indexOf(controller) === -1; controller.buildOrUpdateElements(reset2); minPadding = Math.max(+controller.getMaxOverflow(), minPadding); } minPadding = this._minPadding = options2.layout.autoPadding ? minPadding : 0; this._updateLayout(minPadding); if (!animsDisabled) { each(newControllers, (controller) => { controller.reset(); }); } this._updateDatasets(mode); this.notifyPlugins("afterUpdate", { mode }); this._layers.sort(compare2Level("z", "_idx")); const { _active, _lastEvent } = this; if (_lastEvent) { this._eventHandler(_lastEvent, true); } else if (_active.length) { this._updateHoverStyles(_active, _active, true); } this.render(); } _updateScales() { each(this.scales, (scale) => { layouts.removeBox(this, scale); }); this.ensureScalesHaveIDs(); this.buildOrUpdateScales(); } _checkEventBindings() { const options2 = this.options; const existingEvents = new Set(Object.keys(this._listeners)); const newEvents = new Set(options2.events); if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options2.responsive) { this.unbindEvents(); this.bindEvents(); } } _updateHiddenIndices() { const { _hiddenIndices } = this; const changes = this._getUniformDataChanges() || []; for (const { method, start, count } of changes) { const move = method === "_removeElements" ? -count : count; moveNumericKeys(_hiddenIndices, start, move); } } _getUniformDataChanges() { const _dataChanges = this._dataChanges; if (!_dataChanges || !_dataChanges.length) { return; } this._dataChanges = []; const datasetCount = this.data.datasets.length; const makeSet = (idx) => new Set(_dataChanges.filter((c) => c[0] === idx).map((c, i) => i + "," + c.splice(1).join(","))); const changeSet = makeSet(0); for (let i = 1; i < datasetCount; i++) { if (!setsEqual(changeSet, makeSet(i))) { return; } } return Array.from(changeSet).map((c) => c.split(",")).map((a) => ({ method: a[1], start: +a[2], count: +a[3] })); } _updateLayout(minPadding) { if (this.notifyPlugins("beforeLayout", { cancelable: true }) === false) { return; } layouts.update(this, this.width, this.height, minPadding); const area = this.chartArea; const noArea = area.width <= 0 || area.height <= 0; this._layers = []; each(this.boxes, (box) => { if (noArea && box.position === "chartArea") { return; } if (box.configure) { box.configure(); } this._layers.push(...box._layers()); }, this); this._layers.forEach((item, index) => { item._idx = index; }); this.notifyPlugins("afterLayout"); } _updateDatasets(mode) { if (this.notifyPlugins("beforeDatasetsUpdate", { mode, cancelable: true }) === false) { return; } for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { this.getDatasetMeta(i).controller.configure(); } for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { this._updateDataset(i, isFunction(mode) ? mode({ datasetIndex: i }) : mode); } this.notifyPlugins("afterDatasetsUpdate", { mode }); } _updateDataset(index, mode) { const meta = this.getDatasetMeta(index); const args = { meta, index, mode, cancelable: true }; if (this.notifyPlugins("beforeDatasetUpdate", args) === false) { return; } meta.controller._update(mode); args.cancelable = false; this.notifyPlugins("afterDatasetUpdate", args); } render() { if (this.notifyPlugins("beforeRender", { cancelable: true }) === false) { return; } if (animator.has(this)) { if (this.attached && !animator.running(this)) { animator.start(this); } } else { this.draw(); onAnimationsComplete({ chart: this }); } } draw() { let i; if (this._resizeBeforeDraw) { const { width, height } = this._resizeBeforeDraw; this._resizeBeforeDraw = null; this._resize(width, height); } this.clear(); if (this.width <= 0 || this.height <= 0) { return; } if (this.notifyPlugins("beforeDraw", { cancelable: true }) === false) { return; } const layers = this._layers; for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { layers[i].draw(this.chartArea); } this._drawDatasets(); for (; i < layers.length; ++i) { layers[i].draw(this.chartArea); } this.notifyPlugins("afterDraw"); } _getSortedDatasetMetas(filterVisible) { const metasets = this._sortedMetasets; const result = []; let i, ilen; for (i = 0, ilen = metasets.length; i < ilen; ++i) { const meta = metasets[i]; if (!filterVisible || meta.visible) { result.push(meta); } } return result; } getSortedVisibleDatasetMetas() { return this._getSortedDatasetMetas(true); } _drawDatasets() { if (this.notifyPlugins("beforeDatasetsDraw", { cancelable: true }) === false) { return; } const metasets = this.getSortedVisibleDatasetMetas(); for (let i = metasets.length - 1; i >= 0; --i) { this._drawDataset(metasets[i]); } this.notifyPlugins("afterDatasetsDraw"); } _drawDataset(meta) { const ctx = this.ctx; const clip = meta._clip; const useClip = !clip.disabled; const area = getDatasetArea(meta, this.chartArea); const args = { meta, index: meta.index, cancelable: true }; if (this.notifyPlugins("beforeDatasetDraw", args) === false) { return; } if (useClip) { clipArea(ctx, { left: clip.left === false ? 0 : area.left - clip.left, right: clip.right === false ? this.width : area.right + clip.right, top: clip.top === false ? 0 : area.top - clip.top, bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom }); } meta.controller.draw(); if (useClip) { unclipArea(ctx); } args.cancelable = false; this.notifyPlugins("afterDatasetDraw", args); } isPointInArea(point) { return _isPointInArea(point, this.chartArea, this._minPadding); } getElementsAtEventForMode(e, mode, options2, useFinalPosition) { const method = Interaction.modes[mode]; if (typeof method === "function") { return method(this, e, options2, useFinalPosition); } return []; } getDatasetMeta(datasetIndex) { const dataset = this.data.datasets[datasetIndex]; const metasets = this._metasets; let meta = metasets.filter((x) => x && x._dataset === dataset).pop(); if (!meta) { meta = { type: null, data: [], dataset: null, controller: null, hidden: null, xAxisID: null, yAxisID: null, order: dataset && dataset.order || 0, index: datasetIndex, _dataset: dataset, _parsed: [], _sorted: false }; metasets.push(meta); } return meta; } getContext() { return this.$context || (this.$context = createContext(null, { chart: this, type: "chart" })); } getVisibleDatasetCount() { return this.getSortedVisibleDatasetMetas().length; } isDatasetVisible(datasetIndex) { const dataset = this.data.datasets[datasetIndex]; if (!dataset) { return false; } const meta = this.getDatasetMeta(datasetIndex); return typeof meta.hidden === "boolean" ? !meta.hidden : !dataset.hidden; } setDatasetVisibility(datasetIndex, visible) { const meta = this.getDatasetMeta(datasetIndex); meta.hidden = !visible; } toggleDataVisibility(index) { this._hiddenIndices[index] = !this._hiddenIndices[index]; } getDataVisibility(index) { return !this._hiddenIndices[index]; } _updateVisibility(datasetIndex, dataIndex, visible) { const mode = visible ? "show" : "hide"; const meta = this.getDatasetMeta(datasetIndex); const anims = meta.controller._resolveAnimations(void 0, mode); if (defined(dataIndex)) { meta.data[dataIndex].hidden = !visible; this.update(); } else { this.setDatasetVisibility(datasetIndex, visible); anims.update(meta, { visible }); this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : void 0); } } hide(datasetIndex, dataIndex) { this._updateVisibility(datasetIndex, dataIndex, false); } show(datasetIndex, dataIndex) { this._updateVisibility(datasetIndex, dataIndex, true); } _destroyDatasetMeta(datasetIndex) { const meta = this._metasets[datasetIndex]; if (meta && meta.controller) { meta.controller._destroy(); } delete this._metasets[datasetIndex]; } _stop() { let i, ilen; this.stop(); animator.remove(this); for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { this._destroyDatasetMeta(i); } } destroy() { this.notifyPlugins("beforeDestroy"); const { canvas, ctx } = this; this._stop(); this.config.clearCache(); if (canvas) { this.unbindEvents(); clearCanvas(canvas, ctx); this.platform.releaseContext(ctx); this.canvas = null; this.ctx = null; } delete instances[this.id]; this.notifyPlugins("afterDestroy"); } toBase64Image(...args) { return this.canvas.toDataURL(...args); } bindEvents() { this.bindUserEvents(); if (this.options.responsive) { this.bindResponsiveEvents(); } else { this.attached = true; } } bindUserEvents() { const listeners = this._listeners; const platform = this.platform; const _add = (type, listener2) => { platform.addEventListener(this, type, listener2); listeners[type] = listener2; }; const listener = (e, x, y) => { e.offsetX = x; e.offsetY = y; this._eventHandler(e); }; each(this.options.events, (type) => _add(type, listener)); } bindResponsiveEvents() { if (!this._responsiveListeners) { this._responsiveListeners = {}; } const listeners = this._responsiveListeners; const platform = this.platform; const _add = (type, listener2) => { platform.addEventListener(this, type, listener2); listeners[type] = listener2; }; const _remove = (type, listener2) => { if (listeners[type]) { platform.removeEventListener(this, type, listener2); delete listeners[type]; } }; const listener = (width, height) => { if (this.canvas) { this.resize(width, height); } }; let detached; const attached = () => { _remove("attach", attached); this.attached = true; this.resize(); _add("resize", listener); _add("detach", detached); }; detached = () => { this.attached = false; _remove("resize", listener); this._stop(); this._resize(0, 0); _add("attach", attached); }; if (platform.isAttached(this.canvas)) { attached(); } else { detached(); } } unbindEvents() { each(this._listeners, (listener, type) => { this.platform.removeEventListener(this, type, listener); }); this._listeners = {}; each(this._responsiveListeners, (listener, type) => { this.platform.removeEventListener(this, type, listener); }); this._responsiveListeners = void 0; } updateHoverStyle(items, mode, enabled) { const prefix = enabled ? "set" : "remove"; let meta, item, i, ilen; if (mode === "dataset") { meta = this.getDatasetMeta(items[0].datasetIndex); meta.controller["_" + prefix + "DatasetHoverStyle"](); } for (i = 0, ilen = items.length; i < ilen; ++i) { item = items[i]; const controller = item && this.getDatasetMeta(item.datasetIndex).controller; if (controller) { controller[prefix + "HoverStyle"](item.element, item.datasetIndex, item.index); } } } getActiveElements() { return this._active || []; } setActiveElements(activeElements) { const lastActive = this._active || []; const active = activeElements.map(({ datasetIndex, index }) => { const meta = this.getDatasetMeta(datasetIndex); if (!meta) { throw new Error("No dataset found at index " + datasetIndex); } return { datasetIndex, element: meta.data[index], index }; }); const changed = !_elementsEqual(active, lastActive); if (changed) { this._active = active; this._lastEvent = null; this._updateHoverStyles(active, lastActive); } } notifyPlugins(hook, args, filter2) { return this._plugins.notify(this, hook, args, filter2); } isPluginEnabled(pluginId) { return this._plugins._cache.filter((p) => p.plugin.id === pluginId).length === 1; } _updateHoverStyles(active, lastActive, replay) { const hoverOptions = this.options.hover; const diff = (a, b) => a.filter((x) => !b.some((y) => x.datasetIndex === y.datasetIndex && x.index === y.index)); const deactivated = diff(lastActive, active); const activated = replay ? active : diff(active, lastActive); if (deactivated.length) { this.updateHoverStyle(deactivated, hoverOptions.mode, false); } if (activated.length && hoverOptions.mode) { this.updateHoverStyle(activated, hoverOptions.mode, true); } } _eventHandler(e, replay) { const args = { event: e, replay, cancelable: true, inChartArea: this.isPointInArea(e) }; const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type); if (this.notifyPlugins("beforeEvent", args, eventFilter) === false) { return; } const changed = this._handleEvent(e, replay, args.inChartArea); args.cancelable = false; this.notifyPlugins("afterEvent", args, eventFilter); if (changed || args.changed) { this.render(); } return this; } _handleEvent(e, replay, inChartArea) { const { _active: lastActive = [], options: options2 } = this; const useFinalPosition = replay; const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition); const isClick = _isClickEvent(e); const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick); if (inChartArea) { this._lastEvent = null; callback(options2.onHover, [ e, active, this ], this); if (isClick) { callback(options2.onClick, [ e, active, this ], this); } } const changed = !_elementsEqual(active, lastActive); if (changed || replay) { this._active = active; this._updateHoverStyles(active, lastActive, replay); } this._lastEvent = lastEvent; return changed; } _getActiveElements(e, lastActive, inChartArea, useFinalPosition) { if (e.type === "mouseout") { return []; } if (!inChartArea) { return lastActive; } const hoverOptions = this.options.hover; return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); } }; __publicField(Chart, "defaults", defaults2); __publicField(Chart, "instances", instances); __publicField(Chart, "overrides", overrides); __publicField(Chart, "registry", registry); __publicField(Chart, "version", version2); __publicField(Chart, "getChart", getChart); function invalidatePlugins() { return each(Chart.instances, (chart) => chart._plugins.invalidate()); } function clipArc(ctx, element, endAngle) { const { startAngle, pixelMargin, x, y, outerRadius, innerRadius } = element; let angleMargin = pixelMargin / outerRadius; ctx.beginPath(); ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin); if (innerRadius > pixelMargin) { angleMargin = pixelMargin / innerRadius; ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true); } else { ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI); } ctx.closePath(); ctx.clip(); } function toRadiusCorners(value) { return _readValueToProps(value, [ "outerStart", "outerEnd", "innerStart", "innerEnd" ]); } function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) { const o = toRadiusCorners(arc.options.borderRadius); const halfThickness = (outerRadius - innerRadius) / 2; const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); const computeOuterLimit = (val) => { const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2; return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit)); }; return { outerStart: computeOuterLimit(o.outerStart), outerEnd: computeOuterLimit(o.outerEnd), innerStart: _limitValue(o.innerStart, 0, innerLimit), innerEnd: _limitValue(o.innerEnd, 0, innerLimit) }; } function rThetaToXY(r, theta, x, y) { return { x: x + r * Math.cos(theta), y: y + r * Math.sin(theta) }; } function pathArc(ctx, element, offset, spacing, end, circular) { const { x, y, startAngle: start, pixelMargin, innerRadius: innerR } = element; const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0); const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0; let spacingOffset = 0; const alpha2 = end - start; if (spacing) { const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0; const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0; const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2; const adjustedAngle = avNogSpacingRadius !== 0 ? alpha2 * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha2; spacingOffset = (alpha2 - adjustedAngle) / 2; } const beta = Math.max(1e-3, alpha2 * outerRadius - offset / PI) / outerRadius; const angleOffset = (alpha2 - beta) / 2; const startAngle = start + angleOffset + spacingOffset; const endAngle = end - angleOffset - spacingOffset; const { outerStart, outerEnd, innerStart, innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle); const outerStartAdjustedRadius = outerRadius - outerStart; const outerEndAdjustedRadius = outerRadius - outerEnd; const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius; const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius; const innerStartAdjustedRadius = innerRadius + innerStart; const innerEndAdjustedRadius = innerRadius + innerEnd; const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius; const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius; ctx.beginPath(); if (circular) { const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2; ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle); ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle); if (outerEnd > 0) { const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y); ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI); } const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y); ctx.lineTo(p4.x, p4.y); if (innerEnd > 0) { const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y); ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI); } const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2; ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true); ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true); if (innerStart > 0) { const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y); ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI); } const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y); ctx.lineTo(p8.x, p8.y); if (outerStart > 0) { const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y); ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle); } } else { ctx.moveTo(x, y); const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x; const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y; ctx.lineTo(outerStartX, outerStartY); const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x; const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y; ctx.lineTo(outerEndX, outerEndY); } ctx.closePath(); } function drawArc(ctx, element, offset, spacing, circular) { const { fullCircles, startAngle, circumference } = element; let endAngle = element.endAngle; if (fullCircles) { pathArc(ctx, element, offset, spacing, endAngle, circular); for (let i = 0; i < fullCircles; ++i) { ctx.fill(); } if (!isNaN(circumference)) { endAngle = startAngle + (circumference % TAU || TAU); } } pathArc(ctx, element, offset, spacing, endAngle, circular); ctx.fill(); return endAngle; } function drawBorder(ctx, element, offset, spacing, circular) { const { fullCircles, startAngle, circumference, options: options2 } = element; const { borderWidth, borderJoinStyle, borderDash, borderDashOffset } = options2; const inner = options2.borderAlign === "inner"; if (!borderWidth) { return; } ctx.setLineDash(borderDash || []); ctx.lineDashOffset = borderDashOffset; if (inner) { ctx.lineWidth = borderWidth * 2; ctx.lineJoin = borderJoinStyle || "round"; } else { ctx.lineWidth = borderWidth; ctx.lineJoin = borderJoinStyle || "bevel"; } let endAngle = element.endAngle; if (fullCircles) { pathArc(ctx, element, offset, spacing, endAngle, circular); for (let i = 0; i < fullCircles; ++i) { ctx.stroke(); } if (!isNaN(circumference)) { endAngle = startAngle + (circumference % TAU || TAU); } } if (inner) { clipArc(ctx, element, endAngle); } if (!fullCircles) { pathArc(ctx, element, offset, spacing, endAngle, circular); ctx.stroke(); } } var ArcElement = class extends Element { constructor(cfg) { super(); __publicField(this, "circumference"); __publicField(this, "endAngle"); __publicField(this, "fullCircles"); __publicField(this, "innerRadius"); __publicField(this, "outerRadius"); __publicField(this, "pixelMargin"); __publicField(this, "startAngle"); this.options = void 0; this.circumference = void 0; this.startAngle = void 0; this.endAngle = void 0; this.innerRadius = void 0; this.outerRadius = void 0; this.pixelMargin = 0; this.fullCircles = 0; if (cfg) { Object.assign(this, cfg); } } inRange(chartX, chartY, useFinalPosition) { const point = this.getProps([ "x", "y" ], useFinalPosition); const { angle, distance } = getAngleFromPoint(point, { x: chartX, y: chartY }); const { startAngle, endAngle, innerRadius, outerRadius, circumference } = this.getProps([ "startAngle", "endAngle", "innerRadius", "outerRadius", "circumference" ], useFinalPosition); const rAdjust = (this.options.spacing + this.options.borderWidth) / 2; const _circumference = valueOrDefault(circumference, endAngle - startAngle); const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle; const betweenAngles = _circumference >= TAU || nonZeroBetween; const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust); return betweenAngles && withinRadius; } getCenterPoint(useFinalPosition) { const { x, y, startAngle, endAngle, innerRadius, outerRadius } = this.getProps([ "x", "y", "startAngle", "endAngle", "innerRadius", "outerRadius" ], useFinalPosition); const { offset, spacing } = this.options; const halfAngle = (startAngle + endAngle) / 2; const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2; return { x: x + Math.cos(halfAngle) * halfRadius, y: y + Math.sin(halfAngle) * halfRadius }; } tooltipPosition(useFinalPosition) { return this.getCenterPoint(useFinalPosition); } draw(ctx) { const { options: options2, circumference } = this; const offset = (options2.offset || 0) / 4; const spacing = (options2.spacing || 0) / 2; const circular = options2.circular; this.pixelMargin = options2.borderAlign === "inner" ? 0.33 : 0; this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0; if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) { return; } ctx.save(); const halfAngle = (this.startAngle + this.endAngle) / 2; ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset); const fix = 1 - Math.sin(Math.min(PI, circumference || 0)); const radiusOffset = offset * fix; ctx.fillStyle = options2.backgroundColor; ctx.strokeStyle = options2.borderColor; drawArc(ctx, this, radiusOffset, spacing, circular); drawBorder(ctx, this, radiusOffset, spacing, circular); ctx.restore(); } }; __publicField(ArcElement, "id", "arc"); __publicField(ArcElement, "defaults", { borderAlign: "center", borderColor: "#fff", borderDash: [], borderDashOffset: 0, borderJoinStyle: void 0, borderRadius: 0, borderWidth: 2, offset: 0, spacing: 0, angle: void 0, circular: true }); __publicField(ArcElement, "defaultRoutes", { backgroundColor: "backgroundColor" }); __publicField(ArcElement, "descriptors", { _scriptable: true, _indexable: (name) => name !== "borderDash" }); function getBarBounds(bar, useFinalPosition) { const { x, y, base, width, height } = bar.getProps([ "x", "y", "base", "width", "height" ], useFinalPosition); let left, right, top, bottom, half; if (bar.horizontal) { half = height / 2; left = Math.min(x, base); right = Math.max(x, base); top = y - half; bottom = y + half; } else { half = width / 2; left = x - half; right = x + half; top = Math.min(y, base); bottom = Math.max(y, base); } return { left, top, right, bottom }; } function skipOrLimit(skip2, value, min, max) { return skip2 ? 0 : _limitValue(value, min, max); } function parseBorderWidth(bar, maxW, maxH) { const value = bar.options.borderWidth; const skip2 = bar.borderSkipped; const o = toTRBL(value); return { t: skipOrLimit(skip2.top, o.top, 0, maxH), r: skipOrLimit(skip2.right, o.right, 0, maxW), b: skipOrLimit(skip2.bottom, o.bottom, 0, maxH), l: skipOrLimit(skip2.left, o.left, 0, maxW) }; } function parseBorderRadius(bar, maxW, maxH) { const { enableBorderRadius } = bar.getProps([ "enableBorderRadius" ]); const value = bar.options.borderRadius; const o = toTRBLCorners(value); const maxR = Math.min(maxW, maxH); const skip2 = bar.borderSkipped; const enableBorder = enableBorderRadius || isObject(value); return { topLeft: skipOrLimit(!enableBorder || skip2.top || skip2.left, o.topLeft, 0, maxR), topRight: skipOrLimit(!enableBorder || skip2.top || skip2.right, o.topRight, 0, maxR), bottomLeft: skipOrLimit(!enableBorder || skip2.bottom || skip2.left, o.bottomLeft, 0, maxR), bottomRight: skipOrLimit(!enableBorder || skip2.bottom || skip2.right, o.bottomRight, 0, maxR) }; } function boundingRects(bar) { const bounds = getBarBounds(bar); const width = bounds.right - bounds.left; const height = bounds.bottom - bounds.top; const border = parseBorderWidth(bar, width / 2, height / 2); const radius = parseBorderRadius(bar, width / 2, height / 2); return { outer: { x: bounds.left, y: bounds.top, w: width, h: height, radius }, inner: { x: bounds.left + border.l, y: bounds.top + border.t, w: width - border.l - border.r, h: height - border.t - border.b, radius: { topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)), topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)), bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)), bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)) } } }; } function inRange(bar, x, y, useFinalPosition) { const skipX = x === null; const skipY = y === null; const skipBoth = skipX && skipY; const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition); return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom)); } function hasRadius(radius) { return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight; } function addNormalRectPath(ctx, rect) { ctx.rect(rect.x, rect.y, rect.w, rect.h); } function inflateRect(rect, amount, refRect = {}) { const x = rect.x !== refRect.x ? -amount : 0; const y = rect.y !== refRect.y ? -amount : 0; const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x; const h4 = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y; return { x: rect.x + x, y: rect.y + y, w: rect.w + w, h: rect.h + h4, radius: rect.radius }; } var BarElement = class extends Element { constructor(cfg) { super(); this.options = void 0; this.horizontal = void 0; this.base = void 0; this.width = void 0; this.height = void 0; this.inflateAmount = void 0; if (cfg) { Object.assign(this, cfg); } } draw(ctx) { const { inflateAmount, options: { borderColor, backgroundColor } } = this; const { inner, outer } = boundingRects(this); const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath; ctx.save(); if (outer.w !== inner.w || outer.h !== inner.h) { ctx.beginPath(); addRectPath(ctx, inflateRect(outer, inflateAmount, inner)); ctx.clip(); addRectPath(ctx, inflateRect(inner, -inflateAmount, outer)); ctx.fillStyle = borderColor; ctx.fill("evenodd"); } ctx.beginPath(); addRectPath(ctx, inflateRect(inner, inflateAmount)); ctx.fillStyle = backgroundColor; ctx.fill(); ctx.restore(); } inRange(mouseX, mouseY, useFinalPosition) { return inRange(this, mouseX, mouseY, useFinalPosition); } inXRange(mouseX, useFinalPosition) { return inRange(this, mouseX, null, useFinalPosition); } inYRange(mouseY, useFinalPosition) { return inRange(this, null, mouseY, useFinalPosition); } getCenterPoint(useFinalPosition) { const { x, y, base, horizontal } = this.getProps([ "x", "y", "base", "horizontal" ], useFinalPosition); return { x: horizontal ? (x + base) / 2 : x, y: horizontal ? y : (y + base) / 2 }; } getRange(axis) { return axis === "x" ? this.width / 2 : this.height / 2; } }; __publicField(BarElement, "id", "bar"); __publicField(BarElement, "defaults", { borderSkipped: "start", borderWidth: 0, borderRadius: 0, inflateAmount: "auto", pointStyle: void 0 }); __publicField(BarElement, "defaultRoutes", { backgroundColor: "backgroundColor", borderColor: "borderColor" }); var getBoxSize = (labelOpts, fontSize) => { let { boxHeight = fontSize, boxWidth = fontSize } = labelOpts; if (labelOpts.usePointStyle) { boxHeight = Math.min(boxHeight, fontSize); boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize); } return { boxWidth, boxHeight, itemHeight: Math.max(fontSize, boxHeight) }; }; var itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index; var Legend = class extends Element { constructor(config) { super(); this._added = false; this.legendHitBoxes = []; this._hoveredItem = null; this.doughnutMode = false; this.chart = config.chart; this.options = config.options; this.ctx = config.ctx; this.legendItems = void 0; this.columnSizes = void 0; this.lineWidths = void 0; this.maxHeight = void 0; this.maxWidth = void 0; this.top = void 0; this.bottom = void 0; this.left = void 0; this.right = void 0; this.height = void 0; this.width = void 0; this._margins = void 0; this.position = void 0; this.weight = void 0; this.fullSize = void 0; } update(maxWidth, maxHeight, margins) { this.maxWidth = maxWidth; this.maxHeight = maxHeight; this._margins = margins; this.setDimensions(); this.buildLabels(); this.fit(); } setDimensions() { if (this.isHorizontal()) { this.width = this.maxWidth; this.left = this._margins.left; this.right = this.width; } else { this.height = this.maxHeight; this.top = this._margins.top; this.bottom = this.height; } } buildLabels() { const labelOpts = this.options.labels || {}; let legendItems = callback(labelOpts.generateLabels, [ this.chart ], this) || []; if (labelOpts.filter) { legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data)); } if (labelOpts.sort) { legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data)); } if (this.options.reverse) { legendItems.reverse(); } this.legendItems = legendItems; } fit() { const { options: options2, ctx } = this; if (!options2.display) { this.width = this.height = 0; return; } const labelOpts = options2.labels; const labelFont = toFont(labelOpts.font); const fontSize = labelFont.size; const titleHeight = this._computeTitleHeight(); const { boxWidth, itemHeight } = getBoxSize(labelOpts, fontSize); let width, height; ctx.font = labelFont.string; if (this.isHorizontal()) { width = this.maxWidth; height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10; } else { height = this.maxHeight; width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10; } this.width = Math.min(width, options2.maxWidth || this.maxWidth); this.height = Math.min(height, options2.maxHeight || this.maxHeight); } _fitRows(titleHeight, fontSize, boxWidth, itemHeight) { const { ctx, maxWidth, options: { labels: { padding } } } = this; const hitboxes = this.legendHitBoxes = []; const lineWidths = this.lineWidths = [ 0 ]; const lineHeight = itemHeight + padding; let totalHeight = titleHeight; ctx.textAlign = "left"; ctx.textBaseline = "middle"; let row = -1; let top = -lineHeight; this.legendItems.forEach((legendItem, i) => { const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width; if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) { totalHeight += lineHeight; lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; top += lineHeight; row++; } hitboxes[i] = { left: 0, top, row, width: itemWidth, height: itemHeight }; lineWidths[lineWidths.length - 1] += itemWidth + padding; }); return totalHeight; } _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) { const { ctx, maxHeight, options: { labels: { padding } } } = this; const hitboxes = this.legendHitBoxes = []; const columnSizes = this.columnSizes = []; const heightLimit = maxHeight - titleHeight; let totalWidth = padding; let currentColWidth = 0; let currentColHeight = 0; let left = 0; let col = 0; this.legendItems.forEach((legendItem, i) => { const { itemWidth, itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight); if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { totalWidth += currentColWidth + padding; columnSizes.push({ width: currentColWidth, height: currentColHeight }); left += currentColWidth + padding; col++; currentColWidth = currentColHeight = 0; } hitboxes[i] = { left, top: currentColHeight, col, width: itemWidth, height: itemHeight }; currentColWidth = Math.max(currentColWidth, itemWidth); currentColHeight += itemHeight + padding; }); totalWidth += currentColWidth; columnSizes.push({ width: currentColWidth, height: currentColHeight }); return totalWidth; } adjustHitBoxes() { if (!this.options.display) { return; } const titleHeight = this._computeTitleHeight(); const { legendHitBoxes: hitboxes, options: { align, labels: { padding }, rtl } } = this; const rtlHelper = getRtlAdapter(rtl, this.left, this.width); if (this.isHorizontal()) { let row = 0; let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); for (const hitbox of hitboxes) { if (row !== hitbox.row) { row = hitbox.row; left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); } hitbox.top += this.top + titleHeight + padding; hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width); left += hitbox.width + padding; } } else { let col = 0; let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); for (const hitbox of hitboxes) { if (hitbox.col !== col) { col = hitbox.col; top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); } hitbox.top = top; hitbox.left += this.left + padding; hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width); top += hitbox.height + padding; } } } isHorizontal() { return this.options.position === "top" || this.options.position === "bottom"; } draw() { if (this.options.display) { const ctx = this.ctx; clipArea(ctx, this); this._draw(); unclipArea(ctx); } } _draw() { const { options: opts, columnSizes, lineWidths, ctx } = this; const { align, labels: labelOpts } = opts; const defaultColor = defaults2.color; const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); const labelFont = toFont(labelOpts.font); const { padding } = labelOpts; const fontSize = labelFont.size; const halfFontSize = fontSize / 2; let cursor; this.drawTitle(); ctx.textAlign = rtlHelper.textAlign("left"); ctx.textBaseline = "middle"; ctx.lineWidth = 0.5; ctx.font = labelFont.string; const { boxWidth, boxHeight, itemHeight } = getBoxSize(labelOpts, fontSize); const drawLegendBox = function(x, y, legendItem) { if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) { return; } ctx.save(); const lineWidth = valueOrDefault(legendItem.lineWidth, 1); ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor); ctx.lineCap = valueOrDefault(legendItem.lineCap, "butt"); ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0); ctx.lineJoin = valueOrDefault(legendItem.lineJoin, "miter"); ctx.lineWidth = lineWidth; ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor); ctx.setLineDash(valueOrDefault(legendItem.lineDash, [])); if (labelOpts.usePointStyle) { const drawOptions = { radius: boxHeight * Math.SQRT2 / 2, pointStyle: legendItem.pointStyle, rotation: legendItem.rotation, borderWidth: lineWidth }; const centerX = rtlHelper.xPlus(x, boxWidth / 2); const centerY = y + halfFontSize; drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth); } else { const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0); const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth); const borderRadius = toTRBLCorners(legendItem.borderRadius); ctx.beginPath(); if (Object.values(borderRadius).some((v) => v !== 0)) { addRoundedRectPath(ctx, { x: xBoxLeft, y: yBoxTop, w: boxWidth, h: boxHeight, radius: borderRadius }); } else { ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight); } ctx.fill(); if (lineWidth !== 0) { ctx.stroke(); } } ctx.restore(); }; const fillText = function(x, y, legendItem) { renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, { strikethrough: legendItem.hidden, textAlign: rtlHelper.textAlign(legendItem.textAlign) }); }; const isHorizontal = this.isHorizontal(); const titleHeight = this._computeTitleHeight(); if (isHorizontal) { cursor = { x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]), y: this.top + padding + titleHeight, line: 0 }; } else { cursor = { x: this.left + padding, y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height), line: 0 }; } overrideTextDirection(this.ctx, opts.textDirection); const lineHeight = itemHeight + padding; this.legendItems.forEach((legendItem, i) => { ctx.strokeStyle = legendItem.fontColor; ctx.fillStyle = legendItem.fontColor; const textWidth = ctx.measureText(legendItem.text).width; const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign)); const width = boxWidth + halfFontSize + textWidth; let x = cursor.x; let y = cursor.y; rtlHelper.setWidth(this.width); if (isHorizontal) { if (i > 0 && x + width + padding > this.right) { y = cursor.y += lineHeight; cursor.line++; x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]); } } else if (i > 0 && y + lineHeight > this.bottom) { x = cursor.x = x + columnSizes[cursor.line].width + padding; cursor.line++; y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height); } const realX = rtlHelper.x(x); drawLegendBox(realX, y, legendItem); x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl); fillText(rtlHelper.x(x), y, legendItem); if (isHorizontal) { cursor.x += width + padding; } else if (typeof legendItem.text !== "string") { const fontLineHeight = labelFont.lineHeight; cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding; } else { cursor.y += lineHeight; } }); restoreTextDirection(this.ctx, opts.textDirection); } drawTitle() { const opts = this.options; const titleOpts = opts.title; const titleFont = toFont(titleOpts.font); const titlePadding = toPadding(titleOpts.padding); if (!titleOpts.display) { return; } const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); const ctx = this.ctx; const position = titleOpts.position; const halfFontSize = titleFont.size / 2; const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; let y; let left = this.left; let maxWidth = this.width; if (this.isHorizontal()) { maxWidth = Math.max(...this.lineWidths); y = this.top + topPaddingPlusHalfFontSize; left = _alignStartEnd(opts.align, left, this.right - maxWidth); } else { const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight()); } const x = _alignStartEnd(position, left, left + maxWidth); ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position)); ctx.textBaseline = "middle"; ctx.strokeStyle = titleOpts.color; ctx.fillStyle = titleOpts.color; ctx.font = titleFont.string; renderText(ctx, titleOpts.text, x, y, titleFont); } _computeTitleHeight() { const titleOpts = this.options.title; const titleFont = toFont(titleOpts.font); const titlePadding = toPadding(titleOpts.padding); return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0; } _getLegendItemAt(x, y) { let i, hitBox, lh; if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) { lh = this.legendHitBoxes; for (i = 0; i < lh.length; ++i) { hitBox = lh[i]; if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) { return this.legendItems[i]; } } } return null; } handleEvent(e) { const opts = this.options; if (!isListened(e.type, opts)) { return; } const hoveredItem = this._getLegendItemAt(e.x, e.y); if (e.type === "mousemove" || e.type === "mouseout") { const previous = this._hoveredItem; const sameItem = itemsEqual(previous, hoveredItem); if (previous && !sameItem) { callback(opts.onLeave, [ e, previous, this ], this); } this._hoveredItem = hoveredItem; if (hoveredItem && !sameItem) { callback(opts.onHover, [ e, hoveredItem, this ], this); } } else if (hoveredItem) { callback(opts.onClick, [ e, hoveredItem, this ], this); } } }; function calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) { const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx); const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight); return { itemWidth, itemHeight }; } function calculateItemWidth(legendItem, boxWidth, labelFont, ctx) { let legendItemText = legendItem.text; if (legendItemText && typeof legendItemText !== "string") { legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b); } return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width; } function calculateItemHeight(_itemHeight, legendItem, fontLineHeight) { let itemHeight = _itemHeight; if (typeof legendItem.text !== "string") { itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight); } return itemHeight; } function calculateLegendItemHeight(legendItem, fontLineHeight) { const labelHeight = legendItem.text ? legendItem.text.length : 0; return fontLineHeight * labelHeight; } function isListened(type, opts) { if ((type === "mousemove" || type === "mouseout") && (opts.onHover || opts.onLeave)) { return true; } if (opts.onClick && (type === "click" || type === "mouseup")) { return true; } return false; } var plugin_legend = { id: "legend", _element: Legend, start(chart, _args, options2) { const legend = chart.legend = new Legend({ ctx: chart.ctx, options: options2, chart }); layouts.configure(chart, legend, options2); layouts.addBox(chart, legend); }, stop(chart) { layouts.removeBox(chart, chart.legend); delete chart.legend; }, beforeUpdate(chart, _args, options2) { const legend = chart.legend; layouts.configure(chart, legend, options2); legend.options = options2; }, afterUpdate(chart) { const legend = chart.legend; legend.buildLabels(); legend.adjustHitBoxes(); }, afterEvent(chart, args) { if (!args.replay) { chart.legend.handleEvent(args.event); } }, defaults: { display: true, position: "top", align: "center", fullSize: true, reverse: false, weight: 1e3, onClick(e, legendItem, legend) { const index = legendItem.datasetIndex; const ci = legend.chart; if (ci.isDatasetVisible(index)) { ci.hide(index); legendItem.hidden = true; } else { ci.show(index); legendItem.hidden = false; } }, onHover: null, onLeave: null, labels: { color: (ctx) => ctx.chart.options.color, boxWidth: 40, padding: 10, generateLabels(chart) { const datasets = chart.data.datasets; const { labels: { usePointStyle, pointStyle, textAlign, color: color2, useBorderRadius, borderRadius } } = chart.legend.options; return chart._getSortedDatasetMetas().map((meta) => { const style = meta.controller.getStyle(usePointStyle ? 0 : void 0); const borderWidth = toPadding(style.borderWidth); return { text: datasets[meta.index].label, fillStyle: style.backgroundColor, fontColor: color2, hidden: !meta.visible, lineCap: style.borderCapStyle, lineDash: style.borderDash, lineDashOffset: style.borderDashOffset, lineJoin: style.borderJoinStyle, lineWidth: (borderWidth.width + borderWidth.height) / 4, strokeStyle: style.borderColor, pointStyle: pointStyle || style.pointStyle, rotation: style.rotation, textAlign: textAlign || style.textAlign, borderRadius: useBorderRadius && (borderRadius || style.borderRadius), datasetIndex: meta.index }; }, this); } }, title: { color: (ctx) => ctx.chart.options.color, display: false, position: "center", text: "" } }, descriptors: { _scriptable: (name) => !name.startsWith("on"), labels: { _scriptable: (name) => ![ "generateLabels", "filter", "sort" ].includes(name) } } }; var Title = class extends Element { constructor(config) { super(); this.chart = config.chart; this.options = config.options; this.ctx = config.ctx; this._padding = void 0; this.top = void 0; this.bottom = void 0; this.left = void 0; this.right = void 0; this.width = void 0; this.height = void 0; this.position = void 0; this.weight = void 0; this.fullSize = void 0; } update(maxWidth, maxHeight) { const opts = this.options; this.left = 0; this.top = 0; if (!opts.display) { this.width = this.height = this.right = this.bottom = 0; return; } this.width = this.right = maxWidth; this.height = this.bottom = maxHeight; const lineCount = isArray(opts.text) ? opts.text.length : 1; this._padding = toPadding(opts.padding); const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height; if (this.isHorizontal()) { this.height = textSize; } else { this.width = textSize; } } isHorizontal() { const pos = this.options.position; return pos === "top" || pos === "bottom"; } _drawArgs(offset) { const { top, left, bottom, right, options: options2 } = this; const align = options2.align; let rotation = 0; let maxWidth, titleX, titleY; if (this.isHorizontal()) { titleX = _alignStartEnd(align, left, right); titleY = top + offset; maxWidth = right - left; } else { if (options2.position === "left") { titleX = left + offset; titleY = _alignStartEnd(align, bottom, top); rotation = PI * -0.5; } else { titleX = right - offset; titleY = _alignStartEnd(align, top, bottom); rotation = PI * 0.5; } maxWidth = bottom - top; } return { titleX, titleY, maxWidth, rotation }; } draw() { const ctx = this.ctx; const opts = this.options; if (!opts.display) { return; } const fontOpts = toFont(opts.font); const lineHeight = fontOpts.lineHeight; const offset = lineHeight / 2 + this._padding.top; const { titleX, titleY, maxWidth, rotation } = this._drawArgs(offset); renderText(ctx, opts.text, 0, 0, fontOpts, { color: opts.color, maxWidth, rotation, textAlign: _toLeftRightCenter(opts.align), textBaseline: "middle", translation: [ titleX, titleY ] }); } }; function createTitle(chart, titleOpts) { const title = new Title({ ctx: chart.ctx, options: titleOpts, chart }); layouts.configure(chart, title, titleOpts); layouts.addBox(chart, title); chart.titleBlock = title; } var plugin_title = { id: "title", _element: Title, start(chart, _args, options2) { createTitle(chart, options2); }, stop(chart) { const titleBlock = chart.titleBlock; layouts.removeBox(chart, titleBlock); delete chart.titleBlock; }, beforeUpdate(chart, _args, options2) { const title = chart.titleBlock; layouts.configure(chart, title, options2); title.options = options2; }, defaults: { align: "center", display: false, font: { weight: "bold" }, fullSize: true, padding: 10, position: "top", text: "", weight: 2e3 }, defaultRoutes: { color: "color" }, descriptors: { _scriptable: true, _indexable: false } }; var map2 = /* @__PURE__ */ new WeakMap(); var plugin_subtitle = { id: "subtitle", start(chart, _args, options2) { const title = new Title({ ctx: chart.ctx, options: options2, chart }); layouts.configure(chart, title, options2); layouts.addBox(chart, title); map2.set(chart, title); }, stop(chart) { layouts.removeBox(chart, map2.get(chart)); map2.delete(chart); }, beforeUpdate(chart, _args, options2) { const title = map2.get(chart); layouts.configure(chart, title, options2); title.options = options2; }, defaults: { align: "center", display: false, font: { weight: "normal" }, fullSize: true, padding: 0, position: "top", text: "", weight: 1500 }, defaultRoutes: { color: "color" }, descriptors: { _scriptable: true, _indexable: false } }; var positioners = { average(items) { if (!items.length) { return false; } let i, len; let xSet = /* @__PURE__ */ new Set(); let y = 0; let count = 0; for (i = 0, len = items.length; i < len; ++i) { const el = items[i].element; if (el && el.hasValue()) { const pos = el.tooltipPosition(); xSet.add(pos.x); y += pos.y; ++count; } } if (count === 0 || xSet.size === 0) { return false; } const xAverage = [ ...xSet ].reduce((a, b) => a + b) / xSet.size; return { x: xAverage, y: y / count }; }, nearest(items, eventPosition) { if (!items.length) { return false; } let x = eventPosition.x; let y = eventPosition.y; let minDistance = Number.POSITIVE_INFINITY; let i, len, nearestElement; for (i = 0, len = items.length; i < len; ++i) { const el = items[i].element; if (el && el.hasValue()) { const center = el.getCenterPoint(); const d = distanceBetweenPoints(eventPosition, center); if (d < minDistance) { minDistance = d; nearestElement = el; } } } if (nearestElement) { const tp = nearestElement.tooltipPosition(); x = tp.x; y = tp.y; } return { x, y }; } }; function pushOrConcat(base, toPush) { if (toPush) { if (isArray(toPush)) { Array.prototype.push.apply(base, toPush); } else { base.push(toPush); } } return base; } function splitNewlines(str) { if ((typeof str === "string" || str instanceof String) && str.indexOf("\n") > -1) { return str.split("\n"); } return str; } function createTooltipItem(chart, item) { const { element, datasetIndex, index } = item; const controller = chart.getDatasetMeta(datasetIndex).controller; const { label, value } = controller.getLabelAndValue(index); return { chart, label, parsed: controller.getParsed(index), raw: chart.data.datasets[datasetIndex].data[index], formattedValue: value, dataset: controller.getDataset(), dataIndex: index, datasetIndex, element }; } function getTooltipSize(tooltip, options2) { const ctx = tooltip.chart.ctx; const { body, footer, title } = tooltip; const { boxWidth, boxHeight } = options2; const bodyFont = toFont(options2.bodyFont); const titleFont = toFont(options2.titleFont); const footerFont = toFont(options2.footerFont); const titleLineCount = title.length; const footerLineCount = footer.length; const bodyLineItemCount = body.length; const padding = toPadding(options2.padding); let height = padding.height; let width = 0; let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0); combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length; if (titleLineCount) { height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options2.titleSpacing + options2.titleMarginBottom; } if (combinedBodyLength) { const bodyLineHeight = options2.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight; height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options2.bodySpacing; } if (footerLineCount) { height += options2.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options2.footerSpacing; } let widthPadding = 0; const maxLineWidth = function(line) { width = Math.max(width, ctx.measureText(line).width + widthPadding); }; ctx.save(); ctx.font = titleFont.string; each(tooltip.title, maxLineWidth); ctx.font = bodyFont.string; each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth); widthPadding = options2.displayColors ? boxWidth + 2 + options2.boxPadding : 0; each(body, (bodyItem) => { each(bodyItem.before, maxLineWidth); each(bodyItem.lines, maxLineWidth); each(bodyItem.after, maxLineWidth); }); widthPadding = 0; ctx.font = footerFont.string; each(tooltip.footer, maxLineWidth); ctx.restore(); width += padding.width; return { width, height }; } function determineYAlign(chart, size) { const { y, height } = size; if (y < height / 2) { return "top"; } else if (y > chart.height - height / 2) { return "bottom"; } return "center"; } function doesNotFitWithAlign(xAlign, chart, options2, size) { const { x, width } = size; const caret = options2.caretSize + options2.caretPadding; if (xAlign === "left" && x + width + caret > chart.width) { return true; } if (xAlign === "right" && x - width - caret < 0) { return true; } } function determineXAlign(chart, options2, size, yAlign) { const { x, width } = size; const { width: chartWidth, chartArea: { left, right } } = chart; let xAlign = "center"; if (yAlign === "center") { xAlign = x <= (left + right) / 2 ? "left" : "right"; } else if (x <= width / 2) { xAlign = "left"; } else if (x >= chartWidth - width / 2) { xAlign = "right"; } if (doesNotFitWithAlign(xAlign, chart, options2, size)) { xAlign = "center"; } return xAlign; } function determineAlignment(chart, options2, size) { const yAlign = size.yAlign || options2.yAlign || determineYAlign(chart, size); return { xAlign: size.xAlign || options2.xAlign || determineXAlign(chart, options2, size, yAlign), yAlign }; } function alignX(size, xAlign) { let { x, width } = size; if (xAlign === "right") { x -= width; } else if (xAlign === "center") { x -= width / 2; } return x; } function alignY(size, yAlign, paddingAndSize) { let { y, height } = size; if (yAlign === "top") { y += paddingAndSize; } else if (yAlign === "bottom") { y -= height + paddingAndSize; } else { y -= height / 2; } return y; } function getBackgroundPoint(options2, size, alignment, chart) { const { caretSize, caretPadding, cornerRadius } = options2; const { xAlign, yAlign } = alignment; const paddingAndSize = caretSize + caretPadding; const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); let x = alignX(size, xAlign); const y = alignY(size, yAlign, paddingAndSize); if (yAlign === "center") { if (xAlign === "left") { x += paddingAndSize; } else if (xAlign === "right") { x -= paddingAndSize; } } else if (xAlign === "left") { x -= Math.max(topLeft, bottomLeft) + caretSize; } else if (xAlign === "right") { x += Math.max(topRight, bottomRight) + caretSize; } return { x: _limitValue(x, 0, chart.width - size.width), y: _limitValue(y, 0, chart.height - size.height) }; } function getAlignedX(tooltip, align, options2) { const padding = toPadding(options2.padding); return align === "center" ? tooltip.x + tooltip.width / 2 : align === "right" ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left; } function getBeforeAfterBodyLines(callback2) { return pushOrConcat([], splitNewlines(callback2)); } function createTooltipContext(parent, tooltip, tooltipItems) { return createContext(parent, { tooltip, tooltipItems, type: "tooltip" }); } function overrideCallbacks(callbacks, context) { const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks; return override ? callbacks.override(override) : callbacks; } var defaultCallbacks = { beforeTitle: noop, title(tooltipItems) { if (tooltipItems.length > 0) { const item = tooltipItems[0]; const labels = item.chart.data.labels; const labelCount = labels ? labels.length : 0; if (this && this.options && this.options.mode === "dataset") { return item.dataset.label || ""; } else if (item.label) { return item.label; } else if (labelCount > 0 && item.dataIndex < labelCount) { return labels[item.dataIndex]; } } return ""; }, afterTitle: noop, beforeBody: noop, beforeLabel: noop, label(tooltipItem) { if (this && this.options && this.options.mode === "dataset") { return tooltipItem.label + ": " + tooltipItem.formattedValue || tooltipItem.formattedValue; } let label = tooltipItem.dataset.label || ""; if (label) { label += ": "; } const value = tooltipItem.formattedValue; if (!isNullOrUndef(value)) { label += value; } return label; }, labelColor(tooltipItem) { const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); const options2 = meta.controller.getStyle(tooltipItem.dataIndex); return { borderColor: options2.borderColor, backgroundColor: options2.backgroundColor, borderWidth: options2.borderWidth, borderDash: options2.borderDash, borderDashOffset: options2.borderDashOffset, borderRadius: 0 }; }, labelTextColor() { return this.options.bodyColor; }, labelPointStyle(tooltipItem) { const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); const options2 = meta.controller.getStyle(tooltipItem.dataIndex); return { pointStyle: options2.pointStyle, rotation: options2.rotation }; }, afterLabel: noop, afterBody: noop, beforeFooter: noop, footer: noop, afterFooter: noop }; function invokeCallbackWithFallback(callbacks, name, ctx, arg) { const result = callbacks[name].call(ctx, arg); if (typeof result === "undefined") { return defaultCallbacks[name].call(ctx, arg); } return result; } var Tooltip = class extends Element { constructor(config) { super(); this.opacity = 0; this._active = []; this._eventPosition = void 0; this._size = void 0; this._cachedAnimations = void 0; this._tooltipItems = []; this.$animations = void 0; this.$context = void 0; this.chart = config.chart; this.options = config.options; this.dataPoints = void 0; this.title = void 0; this.beforeBody = void 0; this.body = void 0; this.afterBody = void 0; this.footer = void 0; this.xAlign = void 0; this.yAlign = void 0; this.x = void 0; this.y = void 0; this.height = void 0; this.width = void 0; this.caretX = void 0; this.caretY = void 0; this.labelColors = void 0; this.labelPointStyles = void 0; this.labelTextColors = void 0; } initialize(options2) { this.options = options2; this._cachedAnimations = void 0; this.$context = void 0; } _resolveAnimations() { const cached = this._cachedAnimations; if (cached) { return cached; } const chart = this.chart; const options2 = this.options.setContext(this.getContext()); const opts = options2.enabled && chart.options.animation && options2.animations; const animations = new Animations(this.chart, opts); if (opts._cacheable) { this._cachedAnimations = Object.freeze(animations); } return animations; } getContext() { return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems)); } getTitle(context, options2) { const { callbacks } = options2; const beforeTitle = invokeCallbackWithFallback(callbacks, "beforeTitle", this, context); const title = invokeCallbackWithFallback(callbacks, "title", this, context); const afterTitle = invokeCallbackWithFallback(callbacks, "afterTitle", this, context); let lines = []; lines = pushOrConcat(lines, splitNewlines(beforeTitle)); lines = pushOrConcat(lines, splitNewlines(title)); lines = pushOrConcat(lines, splitNewlines(afterTitle)); return lines; } getBeforeBody(tooltipItems, options2) { return getBeforeAfterBodyLines(invokeCallbackWithFallback(options2.callbacks, "beforeBody", this, tooltipItems)); } getBody(tooltipItems, options2) { const { callbacks } = options2; const bodyItems = []; each(tooltipItems, (context) => { const bodyItem = { before: [], lines: [], after: [] }; const scoped = overrideCallbacks(callbacks, context); pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, "beforeLabel", this, context))); pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, "label", this, context)); pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, "afterLabel", this, context))); bodyItems.push(bodyItem); }); return bodyItems; } getAfterBody(tooltipItems, options2) { return getBeforeAfterBodyLines(invokeCallbackWithFallback(options2.callbacks, "afterBody", this, tooltipItems)); } getFooter(tooltipItems, options2) { const { callbacks } = options2; const beforeFooter = invokeCallbackWithFallback(callbacks, "beforeFooter", this, tooltipItems); const footer = invokeCallbackWithFallback(callbacks, "footer", this, tooltipItems); const afterFooter = invokeCallbackWithFallback(callbacks, "afterFooter", this, tooltipItems); let lines = []; lines = pushOrConcat(lines, splitNewlines(beforeFooter)); lines = pushOrConcat(lines, splitNewlines(footer)); lines = pushOrConcat(lines, splitNewlines(afterFooter)); return lines; } _createItems(options2) { const active = this._active; const data = this.chart.data; const labelColors = []; const labelPointStyles = []; const labelTextColors = []; let tooltipItems = []; let i, len; for (i = 0, len = active.length; i < len; ++i) { tooltipItems.push(createTooltipItem(this.chart, active[i])); } if (options2.filter) { tooltipItems = tooltipItems.filter((element, index, array) => options2.filter(element, index, array, data)); } if (options2.itemSort) { tooltipItems = tooltipItems.sort((a, b) => options2.itemSort(a, b, data)); } each(tooltipItems, (context) => { const scoped = overrideCallbacks(options2.callbacks, context); labelColors.push(invokeCallbackWithFallback(scoped, "labelColor", this, context)); labelPointStyles.push(invokeCallbackWithFallback(scoped, "labelPointStyle", this, context)); labelTextColors.push(invokeCallbackWithFallback(scoped, "labelTextColor", this, context)); }); this.labelColors = labelColors; this.labelPointStyles = labelPointStyles; this.labelTextColors = labelTextColors; this.dataPoints = tooltipItems; return tooltipItems; } update(changed, replay) { const options2 = this.options.setContext(this.getContext()); const active = this._active; let properties; let tooltipItems = []; if (!active.length) { if (this.opacity !== 0) { properties = { opacity: 0 }; } } else { const position = positioners[options2.position].call(this, active, this._eventPosition); tooltipItems = this._createItems(options2); this.title = this.getTitle(tooltipItems, options2); this.beforeBody = this.getBeforeBody(tooltipItems, options2); this.body = this.getBody(tooltipItems, options2); this.afterBody = this.getAfterBody(tooltipItems, options2); this.footer = this.getFooter(tooltipItems, options2); const size = this._size = getTooltipSize(this, options2); const positionAndSize = Object.assign({}, position, size); const alignment = determineAlignment(this.chart, options2, positionAndSize); const backgroundPoint = getBackgroundPoint(options2, positionAndSize, alignment, this.chart); this.xAlign = alignment.xAlign; this.yAlign = alignment.yAlign; properties = { opacity: 1, x: backgroundPoint.x, y: backgroundPoint.y, width: size.width, height: size.height, caretX: position.x, caretY: position.y }; } this._tooltipItems = tooltipItems; this.$context = void 0; if (properties) { this._resolveAnimations().update(this, properties); } if (changed && options2.external) { options2.external.call(this, { chart: this.chart, tooltip: this, replay }); } } drawCaret(tooltipPoint, ctx, size, options2) { const caretPosition = this.getCaretPosition(tooltipPoint, size, options2); ctx.lineTo(caretPosition.x1, caretPosition.y1); ctx.lineTo(caretPosition.x2, caretPosition.y2); ctx.lineTo(caretPosition.x3, caretPosition.y3); } getCaretPosition(tooltipPoint, size, options2) { const { xAlign, yAlign } = this; const { caretSize, cornerRadius } = options2; const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); const { x: ptX, y: ptY } = tooltipPoint; const { width, height } = size; let x1, x2, x3, y1, y2, y3; if (yAlign === "center") { y2 = ptY + height / 2; if (xAlign === "left") { x1 = ptX; x2 = x1 - caretSize; y1 = y2 + caretSize; y3 = y2 - caretSize; } else { x1 = ptX + width; x2 = x1 + caretSize; y1 = y2 - caretSize; y3 = y2 + caretSize; } x3 = x1; } else { if (xAlign === "left") { x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize; } else if (xAlign === "right") { x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize; } else { x2 = this.caretX; } if (yAlign === "top") { y1 = ptY; y2 = y1 - caretSize; x1 = x2 - caretSize; x3 = x2 + caretSize; } else { y1 = ptY + height; y2 = y1 + caretSize; x1 = x2 + caretSize; x3 = x2 - caretSize; } y3 = y1; } return { x1, x2, x3, y1, y2, y3 }; } drawTitle(pt, ctx, options2) { const title = this.title; const length = title.length; let titleFont, titleSpacing, i; if (length) { const rtlHelper = getRtlAdapter(options2.rtl, this.x, this.width); pt.x = getAlignedX(this, options2.titleAlign, options2); ctx.textAlign = rtlHelper.textAlign(options2.titleAlign); ctx.textBaseline = "middle"; titleFont = toFont(options2.titleFont); titleSpacing = options2.titleSpacing; ctx.fillStyle = options2.titleColor; ctx.font = titleFont.string; for (i = 0; i < length; ++i) { ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2); pt.y += titleFont.lineHeight + titleSpacing; if (i + 1 === length) { pt.y += options2.titleMarginBottom - titleSpacing; } } } } _drawColorBox(ctx, pt, i, rtlHelper, options2) { const labelColor = this.labelColors[i]; const labelPointStyle = this.labelPointStyles[i]; const { boxHeight, boxWidth } = options2; const bodyFont = toFont(options2.bodyFont); const colorX = getAlignedX(this, "left", options2); const rtlColorX = rtlHelper.x(colorX); const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0; const colorY = pt.y + yOffSet; if (options2.usePointStyle) { const drawOptions = { radius: Math.min(boxWidth, boxHeight) / 2, pointStyle: labelPointStyle.pointStyle, rotation: labelPointStyle.rotation, borderWidth: 1 }; const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2; const centerY = colorY + boxHeight / 2; ctx.strokeStyle = options2.multiKeyBackground; ctx.fillStyle = options2.multiKeyBackground; drawPoint(ctx, drawOptions, centerX, centerY); ctx.strokeStyle = labelColor.borderColor; ctx.fillStyle = labelColor.backgroundColor; drawPoint(ctx, drawOptions, centerX, centerY); } else { ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1; ctx.strokeStyle = labelColor.borderColor; ctx.setLineDash(labelColor.borderDash || []); ctx.lineDashOffset = labelColor.borderDashOffset || 0; const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth); const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2); const borderRadius = toTRBLCorners(labelColor.borderRadius); if (Object.values(borderRadius).some((v) => v !== 0)) { ctx.beginPath(); ctx.fillStyle = options2.multiKeyBackground; addRoundedRectPath(ctx, { x: outerX, y: colorY, w: boxWidth, h: boxHeight, radius: borderRadius }); ctx.fill(); ctx.stroke(); ctx.fillStyle = labelColor.backgroundColor; ctx.beginPath(); addRoundedRectPath(ctx, { x: innerX, y: colorY + 1, w: boxWidth - 2, h: boxHeight - 2, radius: borderRadius }); ctx.fill(); } else { ctx.fillStyle = options2.multiKeyBackground; ctx.fillRect(outerX, colorY, boxWidth, boxHeight); ctx.strokeRect(outerX, colorY, boxWidth, boxHeight); ctx.fillStyle = labelColor.backgroundColor; ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2); } } ctx.fillStyle = this.labelTextColors[i]; } drawBody(pt, ctx, options2) { const { body } = this; const { bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding } = options2; const bodyFont = toFont(options2.bodyFont); let bodyLineHeight = bodyFont.lineHeight; let xLinePadding = 0; const rtlHelper = getRtlAdapter(options2.rtl, this.x, this.width); const fillLineOfText = function(line) { ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2); pt.y += bodyLineHeight + bodySpacing; }; const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); let bodyItem, textColor, lines, i, j, ilen, jlen; ctx.textAlign = bodyAlign; ctx.textBaseline = "middle"; ctx.font = bodyFont.string; pt.x = getAlignedX(this, bodyAlignForCalculation, options2); ctx.fillStyle = options2.bodyColor; each(this.beforeBody, fillLineOfText); xLinePadding = displayColors && bodyAlignForCalculation !== "right" ? bodyAlign === "center" ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0; for (i = 0, ilen = body.length; i < ilen; ++i) { bodyItem = body[i]; textColor = this.labelTextColors[i]; ctx.fillStyle = textColor; each(bodyItem.before, fillLineOfText); lines = bodyItem.lines; if (displayColors && lines.length) { this._drawColorBox(ctx, pt, i, rtlHelper, options2); bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight); } for (j = 0, jlen = lines.length; j < jlen; ++j) { fillLineOfText(lines[j]); bodyLineHeight = bodyFont.lineHeight; } each(bodyItem.after, fillLineOfText); } xLinePadding = 0; bodyLineHeight = bodyFont.lineHeight; each(this.afterBody, fillLineOfText); pt.y -= bodySpacing; } drawFooter(pt, ctx, options2) { const footer = this.footer; const length = footer.length; let footerFont, i; if (length) { const rtlHelper = getRtlAdapter(options2.rtl, this.x, this.width); pt.x = getAlignedX(this, options2.footerAlign, options2); pt.y += options2.footerMarginTop; ctx.textAlign = rtlHelper.textAlign(options2.footerAlign); ctx.textBaseline = "middle"; footerFont = toFont(options2.footerFont); ctx.fillStyle = options2.footerColor; ctx.font = footerFont.string; for (i = 0; i < length; ++i) { ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2); pt.y += footerFont.lineHeight + options2.footerSpacing; } } } drawBackground(pt, ctx, tooltipSize, options2) { const { xAlign, yAlign } = this; const { x, y } = pt; const { width, height } = tooltipSize; const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(options2.cornerRadius); ctx.fillStyle = options2.backgroundColor; ctx.strokeStyle = options2.borderColor; ctx.lineWidth = options2.borderWidth; ctx.beginPath(); ctx.moveTo(x + topLeft, y); if (yAlign === "top") { this.drawCaret(pt, ctx, tooltipSize, options2); } ctx.lineTo(x + width - topRight, y); ctx.quadraticCurveTo(x + width, y, x + width, y + topRight); if (yAlign === "center" && xAlign === "right") { this.drawCaret(pt, ctx, tooltipSize, options2); } ctx.lineTo(x + width, y + height - bottomRight); ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height); if (yAlign === "bottom") { this.drawCaret(pt, ctx, tooltipSize, options2); } ctx.lineTo(x + bottomLeft, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft); if (yAlign === "center" && xAlign === "left") { this.drawCaret(pt, ctx, tooltipSize, options2); } ctx.lineTo(x, y + topLeft); ctx.quadraticCurveTo(x, y, x + topLeft, y); ctx.closePath(); ctx.fill(); if (options2.borderWidth > 0) { ctx.stroke(); } } _updateAnimationTarget(options2) { const chart = this.chart; const anims = this.$animations; const animX = anims && anims.x; const animY = anims && anims.y; if (animX || animY) { const position = positioners[options2.position].call(this, this._active, this._eventPosition); if (!position) { return; } const size = this._size = getTooltipSize(this, options2); const positionAndSize = Object.assign({}, position, this._size); const alignment = determineAlignment(chart, options2, positionAndSize); const point = getBackgroundPoint(options2, positionAndSize, alignment, chart); if (animX._to !== point.x || animY._to !== point.y) { this.xAlign = alignment.xAlign; this.yAlign = alignment.yAlign; this.width = size.width; this.height = size.height; this.caretX = position.x; this.caretY = position.y; this._resolveAnimations().update(this, point); } } } _willRender() { return !!this.opacity; } draw(ctx) { const options2 = this.options.setContext(this.getContext()); let opacity = this.opacity; if (!opacity) { return; } this._updateAnimationTarget(options2); const tooltipSize = { width: this.width, height: this.height }; const pt = { x: this.x, y: this.y }; opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity; const padding = toPadding(options2.padding); const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length; if (options2.enabled && hasTooltipContent) { ctx.save(); ctx.globalAlpha = opacity; this.drawBackground(pt, ctx, tooltipSize, options2); overrideTextDirection(ctx, options2.textDirection); pt.y += padding.top; this.drawTitle(pt, ctx, options2); this.drawBody(pt, ctx, options2); this.drawFooter(pt, ctx, options2); restoreTextDirection(ctx, options2.textDirection); ctx.restore(); } } getActiveElements() { return this._active || []; } setActiveElements(activeElements, eventPosition) { const lastActive = this._active; const active = activeElements.map(({ datasetIndex, index }) => { const meta = this.chart.getDatasetMeta(datasetIndex); if (!meta) { throw new Error("Cannot find a dataset at index " + datasetIndex); } return { datasetIndex, element: meta.data[index], index }; }); const changed = !_elementsEqual(lastActive, active); const positionChanged = this._positionChanged(active, eventPosition); if (changed || positionChanged) { this._active = active; this._eventPosition = eventPosition; this._ignoreReplayEvents = true; this.update(true); } } handleEvent(e, replay, inChartArea = true) { if (replay && this._ignoreReplayEvents) { return false; } this._ignoreReplayEvents = false; const options2 = this.options; const lastActive = this._active || []; const active = this._getActiveElements(e, lastActive, replay, inChartArea); const positionChanged = this._positionChanged(active, e); const changed = replay || !_elementsEqual(active, lastActive) || positionChanged; if (changed) { this._active = active; if (options2.enabled || options2.external) { this._eventPosition = { x: e.x, y: e.y }; this.update(true, replay); } } return changed; } _getActiveElements(e, lastActive, replay, inChartArea) { const options2 = this.options; if (e.type === "mouseout") { return []; } if (!inChartArea) { return lastActive.filter((i) => this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== void 0); } const active = this.chart.getElementsAtEventForMode(e, options2.mode, options2, replay); if (options2.reverse) { active.reverse(); } return active; } _positionChanged(active, e) { const { caretX, caretY, options: options2 } = this; const position = positioners[options2.position].call(this, active, e); return position !== false && (caretX !== position.x || caretY !== position.y); } }; __publicField(Tooltip, "positioners", positioners); var plugin_tooltip = { id: "tooltip", _element: Tooltip, positioners, afterInit(chart, _args, options2) { if (options2) { chart.tooltip = new Tooltip({ chart, options: options2 }); } }, beforeUpdate(chart, _args, options2) { if (chart.tooltip) { chart.tooltip.initialize(options2); } }, reset(chart, _args, options2) { if (chart.tooltip) { chart.tooltip.initialize(options2); } }, afterDraw(chart) { const tooltip = chart.tooltip; if (tooltip && tooltip._willRender()) { const args = { tooltip }; if (chart.notifyPlugins("beforeTooltipDraw", { ...args, cancelable: true }) === false) { return; } tooltip.draw(chart.ctx); chart.notifyPlugins("afterTooltipDraw", args); } }, afterEvent(chart, args) { if (chart.tooltip) { const useFinalPosition = args.replay; if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) { args.changed = true; } } }, defaults: { enabled: true, external: null, position: "average", backgroundColor: "rgba(0,0,0,0.8)", titleColor: "#fff", titleFont: { weight: "bold" }, titleSpacing: 2, titleMarginBottom: 6, titleAlign: "left", bodyColor: "#fff", bodySpacing: 2, bodyFont: {}, bodyAlign: "left", footerColor: "#fff", footerSpacing: 2, footerMarginTop: 6, footerFont: { weight: "bold" }, footerAlign: "left", padding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, boxHeight: (ctx, opts) => opts.bodyFont.size, boxWidth: (ctx, opts) => opts.bodyFont.size, multiKeyBackground: "#fff", displayColors: true, boxPadding: 0, borderColor: "rgba(0,0,0,0)", borderWidth: 0, animation: { duration: 400, easing: "easeOutQuart" }, animations: { numbers: { type: "number", properties: [ "x", "y", "width", "height", "caretX", "caretY" ] }, opacity: { easing: "linear", duration: 200 } }, callbacks: defaultCallbacks }, defaultRoutes: { bodyFont: "font", footerFont: "font", titleFont: "font" }, descriptors: { _scriptable: (name) => name !== "filter" && name !== "itemSort" && name !== "external", _indexable: false, callbacks: { _scriptable: false, _indexable: false }, animation: { _fallback: false }, animations: { _fallback: "animation" } }, additionalOptionScopes: [ "interaction" ] }; var addIfString = (labels, raw, index, addedLabels) => { if (typeof raw === "string") { index = labels.push(raw) - 1; addedLabels.unshift({ index, label: raw }); } else if (isNaN(raw)) { index = null; } return index; }; function findOrAddLabel(labels, raw, index, addedLabels) { const first = labels.indexOf(raw); if (first === -1) { return addIfString(labels, raw, index, addedLabels); } const last = labels.lastIndexOf(raw); return first !== last ? index : first; } var validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max); function _getLabelForValue(value) { const labels = this.getLabels(); if (value >= 0 && value < labels.length) { return labels[value]; } return value; } var CategoryScale = class extends Scale { constructor(cfg) { super(cfg); this._startValue = void 0; this._valueRange = 0; this._addedLabels = []; } init(scaleOptions) { const added = this._addedLabels; if (added.length) { const labels = this.getLabels(); for (const { index, label } of added) { if (labels[index] === label) { labels.splice(index, 1); } } this._addedLabels = []; } super.init(scaleOptions); } parse(raw, index) { if (isNullOrUndef(raw)) { return null; } const labels = this.getLabels(); index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels); return validIndex(index, labels.length - 1); } determineDataLimits() { const { minDefined, maxDefined } = this.getUserBounds(); let { min, max } = this.getMinMax(true); if (this.options.bounds === "ticks") { if (!minDefined) { min = 0; } if (!maxDefined) { max = this.getLabels().length - 1; } } this.min = min; this.max = max; } buildTicks() { const min = this.min; const max = this.max; const offset = this.options.offset; const ticks = []; let labels = this.getLabels(); labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1); this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1); this._startValue = this.min - (offset ? 0.5 : 0); for (let value = min; value <= max; value++) { ticks.push({ value }); } return ticks; } getLabelForValue(value) { return _getLabelForValue.call(this, value); } configure() { super.configure(); if (!this.isHorizontal()) { this._reversePixels = !this._reversePixels; } } getPixelForValue(value) { if (typeof value !== "number") { value = this.parse(value); } return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); } getPixelForTick(index) { const ticks = this.ticks; if (index < 0 || index > ticks.length - 1) { return null; } return this.getPixelForValue(ticks[index].value); } getValueForPixel(pixel) { return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange); } getBasePixel() { return this.bottom; } }; __publicField(CategoryScale, "id", "category"); __publicField(CategoryScale, "defaults", { ticks: { callback: _getLabelForValue } }); function generateTicks$1(generationOptions, dataRange) { const ticks = []; const MIN_SPACING = 1e-14; const { bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds } = generationOptions; const unit = step || 1; const maxSpaces = maxTicks - 1; const { min: rmin, max: rmax } = dataRange; const minDefined = !isNullOrUndef(min); const maxDefined = !isNullOrUndef(max); const countDefined = !isNullOrUndef(count); const minSpacing = (rmax - rmin) / (maxDigits + 1); let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit; let factor, niceMin, niceMax, numSpaces; if (spacing < MIN_SPACING && !minDefined && !maxDefined) { return [ { value: rmin }, { value: rmax } ]; } numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); if (numSpaces > maxSpaces) { spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit; } if (!isNullOrUndef(precision)) { factor = Math.pow(10, precision); spacing = Math.ceil(spacing * factor) / factor; } if (bounds === "ticks") { niceMin = Math.floor(rmin / spacing) * spacing; niceMax = Math.ceil(rmax / spacing) * spacing; } else { niceMin = rmin; niceMax = rmax; } if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1e3)) { numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks)); spacing = (max - min) / numSpaces; niceMin = min; niceMax = max; } else if (countDefined) { niceMin = minDefined ? min : niceMin; niceMax = maxDefined ? max : niceMax; numSpaces = count - 1; spacing = (niceMax - niceMin) / numSpaces; } else { numSpaces = (niceMax - niceMin) / spacing; if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1e3)) { numSpaces = Math.round(numSpaces); } else { numSpaces = Math.ceil(numSpaces); } } const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin)); factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision); niceMin = Math.round(niceMin * factor) / factor; niceMax = Math.round(niceMax * factor) / factor; let j = 0; if (minDefined) { if (includeBounds && niceMin !== min) { ticks.push({ value: min }); if (niceMin < min) { j++; } if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) { j++; } } else if (niceMin < min) { j++; } } for (; j < numSpaces; ++j) { const tickValue = Math.round((niceMin + j * spacing) * factor) / factor; if (maxDefined && tickValue > max) { break; } ticks.push({ value: tickValue }); } if (maxDefined && includeBounds && niceMax !== max) { if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) { ticks[ticks.length - 1].value = max; } else { ticks.push({ value: max }); } } else if (!maxDefined || niceMax === max) { ticks.push({ value: niceMax }); } return ticks; } function relativeLabelSize(value, minSpacing, { horizontal, minRotation }) { const rad = toRadians(minRotation); const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 1e-3; const length = 0.75 * minSpacing * ("" + value).length; return Math.min(minSpacing / ratio, length); } var LinearScaleBase = class extends Scale { constructor(cfg) { super(cfg); this.start = void 0; this.end = void 0; this._startValue = void 0; this._endValue = void 0; this._valueRange = 0; } parse(raw, index) { if (isNullOrUndef(raw)) { return null; } if ((typeof raw === "number" || raw instanceof Number) && !isFinite(+raw)) { return null; } return +raw; } handleTickRangeOptions() { const { beginAtZero } = this.options; const { minDefined, maxDefined } = this.getUserBounds(); let { min, max } = this; const setMin = (v) => min = minDefined ? min : v; const setMax = (v) => max = maxDefined ? max : v; if (beginAtZero) { const minSign = sign(min); const maxSign = sign(max); if (minSign < 0 && maxSign < 0) { setMax(0); } else if (minSign > 0 && maxSign > 0) { setMin(0); } } if (min === max) { let offset = max === 0 ? 1 : Math.abs(max * 0.05); setMax(max + offset); if (!beginAtZero) { setMin(min - offset); } } this.min = min; this.max = max; } getTickLimit() { const tickOpts = this.options.ticks; let { maxTicksLimit, stepSize } = tickOpts; let maxTicks; if (stepSize) { maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1; if (maxTicks > 1e3) { console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`); maxTicks = 1e3; } } else { maxTicks = this.computeTickLimit(); maxTicksLimit = maxTicksLimit || 11; } if (maxTicksLimit) { maxTicks = Math.min(maxTicksLimit, maxTicks); } return maxTicks; } computeTickLimit() { return Number.POSITIVE_INFINITY; } buildTicks() { const opts = this.options; const tickOpts = opts.ticks; let maxTicks = this.getTickLimit(); maxTicks = Math.max(2, maxTicks); const numericGeneratorOptions = { maxTicks, bounds: opts.bounds, min: opts.min, max: opts.max, precision: tickOpts.precision, step: tickOpts.stepSize, count: tickOpts.count, maxDigits: this._maxDigits(), horizontal: this.isHorizontal(), minRotation: tickOpts.minRotation || 0, includeBounds: tickOpts.includeBounds !== false }; const dataRange = this._range || this; const ticks = generateTicks$1(numericGeneratorOptions, dataRange); if (opts.bounds === "ticks") { _setMinAndMaxByKey(ticks, this, "value"); } if (opts.reverse) { ticks.reverse(); this.start = this.max; this.end = this.min; } else { this.start = this.min; this.end = this.max; } return ticks; } configure() { const ticks = this.ticks; let start = this.min; let end = this.max; super.configure(); if (this.options.offset && ticks.length) { const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; start -= offset; end += offset; } this._startValue = start; this._endValue = end; this._valueRange = end - start; } getLabelForValue(value) { return formatNumber(value, this.chart.options.locale, this.options.ticks.format); } }; var LinearScale = class extends LinearScaleBase { determineDataLimits() { const { min, max } = this.getMinMax(true); this.min = isNumberFinite(min) ? min : 0; this.max = isNumberFinite(max) ? max : 1; this.handleTickRangeOptions(); } computeTickLimit() { const horizontal = this.isHorizontal(); const length = horizontal ? this.width : this.height; const minRotation = toRadians(this.options.ticks.minRotation); const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 1e-3; const tickFont = this._resolveTickFontOptions(0); return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio)); } getPixelForValue(value) { return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); } getValueForPixel(pixel) { return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; } }; __publicField(LinearScale, "id", "linear"); __publicField(LinearScale, "defaults", { ticks: { callback: Ticks.formatters.numeric } }); var log10Floor = (v) => Math.floor(log10(v)); var changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m); function isMajor(tickVal) { const remain = tickVal / Math.pow(10, log10Floor(tickVal)); return remain === 1; } function steps(min, max, rangeExp) { const rangeStep = Math.pow(10, rangeExp); const start = Math.floor(min / rangeStep); const end = Math.ceil(max / rangeStep); return end - start; } function startExp(min, max) { const range = max - min; let rangeExp = log10Floor(range); while (steps(min, max, rangeExp) > 10) { rangeExp++; } while (steps(min, max, rangeExp) < 10) { rangeExp--; } return Math.min(rangeExp, log10Floor(min)); } function generateTicks(generationOptions, { min, max }) { min = finiteOrDefault(generationOptions.min, min); const ticks = []; const minExp = log10Floor(min); let exp = startExp(min, max); let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; const stepSize = Math.pow(10, exp); const base = minExp > exp ? Math.pow(10, minExp) : 0; const start = Math.round((min - base) * precision) / precision; const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10; let significand = Math.floor((start - offset) / Math.pow(10, exp)); let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision); while (value < max) { ticks.push({ value, major: isMajor(value), significand }); if (significand >= 10) { significand = significand < 15 ? 15 : 20; } else { significand++; } if (significand >= 20) { exp++; significand = 2; precision = exp >= 0 ? 1 : precision; } value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; } const lastTick = finiteOrDefault(generationOptions.max, value); ticks.push({ value: lastTick, major: isMajor(lastTick), significand }); return ticks; } var LogarithmicScale = class extends Scale { constructor(cfg) { super(cfg); this.start = void 0; this.end = void 0; this._startValue = void 0; this._valueRange = 0; } parse(raw, index) { const value = LinearScaleBase.prototype.parse.apply(this, [ raw, index ]); if (value === 0) { this._zero = true; return void 0; } return isNumberFinite(value) && value > 0 ? value : null; } determineDataLimits() { const { min, max } = this.getMinMax(true); this.min = isNumberFinite(min) ? Math.max(0, min) : null; this.max = isNumberFinite(max) ? Math.max(0, max) : null; if (this.options.beginAtZero) { this._zero = true; } if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) { this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0); } this.handleTickRangeOptions(); } handleTickRangeOptions() { const { minDefined, maxDefined } = this.getUserBounds(); let min = this.min; let max = this.max; const setMin = (v) => min = minDefined ? min : v; const setMax = (v) => max = maxDefined ? max : v; if (min === max) { if (min <= 0) { setMin(1); setMax(10); } else { setMin(changeExponent(min, -1)); setMax(changeExponent(max, 1)); } } if (min <= 0) { setMin(changeExponent(max, -1)); } if (max <= 0) { setMax(changeExponent(min, 1)); } this.min = min; this.max = max; } buildTicks() { const opts = this.options; const generationOptions = { min: this._userMin, max: this._userMax }; const ticks = generateTicks(generationOptions, this); if (opts.bounds === "ticks") { _setMinAndMaxByKey(ticks, this, "value"); } if (opts.reverse) { ticks.reverse(); this.start = this.max; this.end = this.min; } else { this.start = this.min; this.end = this.max; } return ticks; } getLabelForValue(value) { return value === void 0 ? "0" : formatNumber(value, this.chart.options.locale, this.options.ticks.format); } configure() { const start = this.min; super.configure(); this._startValue = log10(start); this._valueRange = log10(this.max) - log10(start); } getPixelForValue(value) { if (value === void 0 || value === 0) { value = this.min; } if (value === null || isNaN(value)) { return NaN; } return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange); } getValueForPixel(pixel) { const decimal = this.getDecimalForPixel(pixel); return Math.pow(10, this._startValue + decimal * this._valueRange); } }; __publicField(LogarithmicScale, "id", "logarithmic"); __publicField(LogarithmicScale, "defaults", { ticks: { callback: Ticks.formatters.logarithmic, major: { enabled: true } } }); function getTickBackdropHeight(opts) { const tickOpts = opts.ticks; if (tickOpts.display && opts.display) { const padding = toPadding(tickOpts.backdropPadding); return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults2.font.size) + padding.height; } return 0; } function measureLabelSize(ctx, font, label) { label = isArray(label) ? label : [ label ]; return { w: _longestText(ctx, font.string, label), h: label.length * font.lineHeight }; } function determineLimits(angle, pos, size, min, max) { if (angle === min || angle === max) { return { start: pos - size / 2, end: pos + size / 2 }; } else if (angle < min || angle > max) { return { start: pos - size, end: pos }; } return { start: pos, end: pos + size }; } function fitWithPointLabels(scale) { const orig = { l: scale.left + scale._padding.left, r: scale.right - scale._padding.right, t: scale.top + scale._padding.top, b: scale.bottom - scale._padding.bottom }; const limits = Object.assign({}, orig); const labelSizes = []; const padding = []; const valueCount = scale._pointLabels.length; const pointLabelOpts = scale.options.pointLabels; const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0; for (let i = 0; i < valueCount; i++) { const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i)); padding[i] = opts.padding; const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle); const plFont = toFont(opts.font); const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]); labelSizes[i] = textSize; const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle); const angle = Math.round(toDegrees(angleRadians)); const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); updateLimits(limits, orig, angleRadians, hLimits, vLimits); } scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b); scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding); } function updateLimits(limits, orig, angle, hLimits, vLimits) { const sin = Math.abs(Math.sin(angle)); const cos = Math.abs(Math.cos(angle)); let x = 0; let y = 0; if (hLimits.start < orig.l) { x = (orig.l - hLimits.start) / sin; limits.l = Math.min(limits.l, orig.l - x); } else if (hLimits.end > orig.r) { x = (hLimits.end - orig.r) / sin; limits.r = Math.max(limits.r, orig.r + x); } if (vLimits.start < orig.t) { y = (orig.t - vLimits.start) / cos; limits.t = Math.min(limits.t, orig.t - y); } else if (vLimits.end > orig.b) { y = (vLimits.end - orig.b) / cos; limits.b = Math.max(limits.b, orig.b + y); } } function createPointLabelItem(scale, index, itemOpts) { const outerDistance = scale.drawingArea; const { extra, additionalAngle, padding, size } = itemOpts; const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle); const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI))); const y = yForAngle(pointLabelPosition.y, size.h, angle); const textAlign = getTextAlignForAngle(angle); const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign); return { visible: true, x: pointLabelPosition.x, y, textAlign, left, top: y, right: left + size.w, bottom: y + size.h }; } function isNotOverlapped(item, area) { if (!area) { return true; } const { left, top, right, bottom } = item; const apexesInArea = _isPointInArea({ x: left, y: top }, area) || _isPointInArea({ x: left, y: bottom }, area) || _isPointInArea({ x: right, y: top }, area) || _isPointInArea({ x: right, y: bottom }, area); return !apexesInArea; } function buildPointLabelItems(scale, labelSizes, padding) { const items = []; const valueCount = scale._pointLabels.length; const opts = scale.options; const { centerPointLabels, display } = opts.pointLabels; const itemOpts = { extra: getTickBackdropHeight(opts) / 2, additionalAngle: centerPointLabels ? PI / valueCount : 0 }; let area; for (let i = 0; i < valueCount; i++) { itemOpts.padding = padding[i]; itemOpts.size = labelSizes[i]; const item = createPointLabelItem(scale, i, itemOpts); items.push(item); if (display === "auto") { item.visible = isNotOverlapped(item, area); if (item.visible) { area = item; } } } return items; } function getTextAlignForAngle(angle) { if (angle === 0 || angle === 180) { return "center"; } else if (angle < 180) { return "left"; } return "right"; } function leftForTextAlign(x, w, align) { if (align === "right") { x -= w; } else if (align === "center") { x -= w / 2; } return x; } function yForAngle(y, h4, angle) { if (angle === 90 || angle === 270) { y -= h4 / 2; } else if (angle > 270 || angle < 90) { y -= h4; } return y; } function drawPointLabelBox(ctx, opts, item) { const { left, top, right, bottom } = item; const { backdropColor } = opts; if (!isNullOrUndef(backdropColor)) { const borderRadius = toTRBLCorners(opts.borderRadius); const padding = toPadding(opts.backdropPadding); ctx.fillStyle = backdropColor; const backdropLeft = left - padding.left; const backdropTop = top - padding.top; const backdropWidth = right - left + padding.width; const backdropHeight = bottom - top + padding.height; if (Object.values(borderRadius).some((v) => v !== 0)) { ctx.beginPath(); addRoundedRectPath(ctx, { x: backdropLeft, y: backdropTop, w: backdropWidth, h: backdropHeight, radius: borderRadius }); ctx.fill(); } else { ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight); } } } function drawPointLabels(scale, labelCount) { const { ctx, options: { pointLabels } } = scale; for (let i = labelCount - 1; i >= 0; i--) { const item = scale._pointLabelItems[i]; if (!item.visible) { continue; } const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i)); drawPointLabelBox(ctx, optsAtIndex, item); const plFont = toFont(optsAtIndex.font); const { x, y, textAlign } = item; renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, { color: optsAtIndex.color, textAlign, textBaseline: "middle" }); } } function pathRadiusLine(scale, radius, circular, labelCount) { const { ctx } = scale; if (circular) { ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU); } else { let pointPosition = scale.getPointPosition(0, radius); ctx.moveTo(pointPosition.x, pointPosition.y); for (let i = 1; i < labelCount; i++) { pointPosition = scale.getPointPosition(i, radius); ctx.lineTo(pointPosition.x, pointPosition.y); } } } function drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) { const ctx = scale.ctx; const circular = gridLineOpts.circular; const { color: color2, lineWidth } = gridLineOpts; if (!circular && !labelCount || !color2 || !lineWidth || radius < 0) { return; } ctx.save(); ctx.strokeStyle = color2; ctx.lineWidth = lineWidth; ctx.setLineDash(borderOpts.dash); ctx.lineDashOffset = borderOpts.dashOffset; ctx.beginPath(); pathRadiusLine(scale, radius, circular, labelCount); ctx.closePath(); ctx.stroke(); ctx.restore(); } function createPointLabelContext(parent, index, label) { return createContext(parent, { label, index, type: "pointLabel" }); } var RadialLinearScale = class extends LinearScaleBase { constructor(cfg) { super(cfg); this.xCenter = void 0; this.yCenter = void 0; this.drawingArea = void 0; this._pointLabels = []; this._pointLabelItems = []; } setDimensions() { const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2); const w = this.width = this.maxWidth - padding.width; const h4 = this.height = this.maxHeight - padding.height; this.xCenter = Math.floor(this.left + w / 2 + padding.left); this.yCenter = Math.floor(this.top + h4 / 2 + padding.top); this.drawingArea = Math.floor(Math.min(w, h4) / 2); } determineDataLimits() { const { min, max } = this.getMinMax(false); this.min = isNumberFinite(min) && !isNaN(min) ? min : 0; this.max = isNumberFinite(max) && !isNaN(max) ? max : 0; this.handleTickRangeOptions(); } computeTickLimit() { return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); } generateTickLabels(ticks) { LinearScaleBase.prototype.generateTickLabels.call(this, ticks); this._pointLabels = this.getLabels().map((value, index) => { const label = callback(this.options.pointLabels.callback, [ value, index ], this); return label || label === 0 ? label : ""; }).filter((v, i) => this.chart.getDataVisibility(i)); } fit() { const opts = this.options; if (opts.display && opts.pointLabels.display) { fitWithPointLabels(this); } else { this.setCenterPoint(0, 0, 0, 0); } } setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) { this.xCenter += Math.floor((leftMovement - rightMovement) / 2); this.yCenter += Math.floor((topMovement - bottomMovement) / 2); this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement)); } getIndexAngle(index) { const angleMultiplier = TAU / (this._pointLabels.length || 1); const startAngle = this.options.startAngle || 0; return _normalizeAngle(index * angleMultiplier + toRadians(startAngle)); } getDistanceFromCenterForValue(value) { if (isNullOrUndef(value)) { return NaN; } const scalingFactor = this.drawingArea / (this.max - this.min); if (this.options.reverse) { return (this.max - value) * scalingFactor; } return (value - this.min) * scalingFactor; } getValueForDistanceFromCenter(distance) { if (isNullOrUndef(distance)) { return NaN; } const scaledDistance = distance / (this.drawingArea / (this.max - this.min)); return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance; } getPointLabelContext(index) { const pointLabels = this._pointLabels || []; if (index >= 0 && index < pointLabels.length) { const pointLabel = pointLabels[index]; return createPointLabelContext(this.getContext(), index, pointLabel); } } getPointPosition(index, distanceFromCenter, additionalAngle = 0) { const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle; return { x: Math.cos(angle) * distanceFromCenter + this.xCenter, y: Math.sin(angle) * distanceFromCenter + this.yCenter, angle }; } getPointPositionForValue(index, value) { return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); } getBasePosition(index) { return this.getPointPositionForValue(index || 0, this.getBaseValue()); } getPointLabelPosition(index) { const { left, top, right, bottom } = this._pointLabelItems[index]; return { left, top, right, bottom }; } drawBackground() { const { backgroundColor, grid: { circular } } = this.options; if (backgroundColor) { const ctx = this.ctx; ctx.save(); ctx.beginPath(); pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length); ctx.closePath(); ctx.fillStyle = backgroundColor; ctx.fill(); ctx.restore(); } } drawGrid() { const ctx = this.ctx; const opts = this.options; const { angleLines, grid, border } = opts; const labelCount = this._pointLabels.length; let i, offset, position; if (opts.pointLabels.display) { drawPointLabels(this, labelCount); } if (grid.display) { this.ticks.forEach((tick, index) => { if (index !== 0 || index === 0 && this.min < 0) { offset = this.getDistanceFromCenterForValue(tick.value); const context = this.getContext(index); const optsAtIndex = grid.setContext(context); const optsAtIndexBorder = border.setContext(context); drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder); } }); } if (angleLines.display) { ctx.save(); for (i = labelCount - 1; i >= 0; i--) { const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i)); const { color: color2, lineWidth } = optsAtIndex; if (!lineWidth || !color2) { continue; } ctx.lineWidth = lineWidth; ctx.strokeStyle = color2; ctx.setLineDash(optsAtIndex.borderDash); ctx.lineDashOffset = optsAtIndex.borderDashOffset; offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max); position = this.getPointPosition(i, offset); ctx.beginPath(); ctx.moveTo(this.xCenter, this.yCenter); ctx.lineTo(position.x, position.y); ctx.stroke(); } ctx.restore(); } } drawBorder() { } drawLabels() { const ctx = this.ctx; const opts = this.options; const tickOpts = opts.ticks; if (!tickOpts.display) { return; } const startAngle = this.getIndexAngle(0); let offset, width; ctx.save(); ctx.translate(this.xCenter, this.yCenter); ctx.rotate(startAngle); ctx.textAlign = "center"; ctx.textBaseline = "middle"; this.ticks.forEach((tick, index) => { if (index === 0 && this.min >= 0 && !opts.reverse) { return; } const optsAtIndex = tickOpts.setContext(this.getContext(index)); const tickFont = toFont(optsAtIndex.font); offset = this.getDistanceFromCenterForValue(this.ticks[index].value); if (optsAtIndex.showLabelBackdrop) { ctx.font = tickFont.string; width = ctx.measureText(tick.label).width; ctx.fillStyle = optsAtIndex.backdropColor; const padding = toPadding(optsAtIndex.backdropPadding); ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height); } renderText(ctx, tick.label, 0, -offset, tickFont, { color: optsAtIndex.color, strokeColor: optsAtIndex.textStrokeColor, strokeWidth: optsAtIndex.textStrokeWidth }); }); ctx.restore(); } drawTitle() { } }; __publicField(RadialLinearScale, "id", "radialLinear"); __publicField(RadialLinearScale, "defaults", { display: true, animate: true, position: "chartArea", angleLines: { display: true, lineWidth: 1, borderDash: [], borderDashOffset: 0 }, grid: { circular: false }, startAngle: 0, ticks: { showLabelBackdrop: true, callback: Ticks.formatters.numeric }, pointLabels: { backdropColor: void 0, backdropPadding: 2, display: true, font: { size: 10 }, callback(label) { return label; }, padding: 5, centerPointLabels: false } }); __publicField(RadialLinearScale, "defaultRoutes", { "angleLines.color": "borderColor", "pointLabels.color": "color", "ticks.color": "color" }); __publicField(RadialLinearScale, "descriptors", { angleLines: { _fallback: "grid" } }); var INTERVALS = { millisecond: { common: true, size: 1, steps: 1e3 }, second: { common: true, size: 1e3, steps: 60 }, minute: { common: true, size: 6e4, steps: 60 }, hour: { common: true, size: 36e5, steps: 24 }, day: { common: true, size: 864e5, steps: 30 }, week: { common: false, size: 6048e5, steps: 4 }, month: { common: true, size: 2628e6, steps: 12 }, quarter: { common: false, size: 7884e6, steps: 4 }, year: { common: true, size: 3154e7 } }; var UNITS = /* @__PURE__ */ Object.keys(INTERVALS); function sorter(a, b) { return a - b; } function parse2(scale, input) { if (isNullOrUndef(input)) { return null; } const adapter = scale._adapter; const { parser: parser3, round: round2, isoWeekday } = scale._parseOpts; let value = input; if (typeof parser3 === "function") { value = parser3(value); } if (!isNumberFinite(value)) { value = typeof parser3 === "string" ? adapter.parse(value, parser3) : adapter.parse(value); } if (value === null) { return null; } if (round2) { value = round2 === "week" && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, "isoWeek", isoWeekday) : adapter.startOf(value, round2); } return +value; } function determineUnitForAutoTicks(minUnit, min, max, capacity) { const ilen = UNITS.length; for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { const interval = INTERVALS[UNITS[i]]; const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER; if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { return UNITS[i]; } } return UNITS[ilen - 1]; } function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { const unit = UNITS[i]; if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { return unit; } } return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; } function determineMajorUnit(unit) { for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { if (INTERVALS[UNITS[i]].common) { return UNITS[i]; } } } function addTick(ticks, time, timestamps) { if (!timestamps) { ticks[time] = true; } else if (timestamps.length) { const { lo, hi } = _lookup(timestamps, time); const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi]; ticks[timestamp] = true; } } function setMajorTicks(scale, ticks, map3, majorUnit) { const adapter = scale._adapter; const first = +adapter.startOf(ticks[0].value, majorUnit); const last = ticks[ticks.length - 1].value; let major, index; for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { index = map3[major]; if (index >= 0) { ticks[index].major = true; } } return ticks; } function ticksFromTimestamps(scale, values, majorUnit) { const ticks = []; const map3 = {}; const ilen = values.length; let i, value; for (i = 0; i < ilen; ++i) { value = values[i]; map3[value] = i; ticks.push({ value, major: false }); } return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map3, majorUnit); } var TimeScale = class extends Scale { constructor(props) { super(props); this._cache = { data: [], labels: [], all: [] }; this._unit = "day"; this._majorUnit = void 0; this._offsets = {}; this._normalized = false; this._parseOpts = void 0; } init(scaleOpts, opts = {}) { const time = scaleOpts.time || (scaleOpts.time = {}); const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date); adapter.init(opts); mergeIf(time.displayFormats, adapter.formats()); this._parseOpts = { parser: time.parser, round: time.round, isoWeekday: time.isoWeekday }; super.init(scaleOpts); this._normalized = opts.normalized; } parse(raw, index) { if (raw === void 0) { return null; } return parse2(this, raw); } beforeLayout() { super.beforeLayout(); this._cache = { data: [], labels: [], all: [] }; } determineDataLimits() { const options2 = this.options; const adapter = this._adapter; const unit = options2.time.unit || "day"; let { min, max, minDefined, maxDefined } = this.getUserBounds(); function _applyBounds(bounds) { if (!minDefined && !isNaN(bounds.min)) { min = Math.min(min, bounds.min); } if (!maxDefined && !isNaN(bounds.max)) { max = Math.max(max, bounds.max); } } if (!minDefined || !maxDefined) { _applyBounds(this._getLabelBounds()); if (options2.bounds !== "ticks" || options2.ticks.source !== "labels") { _applyBounds(this.getMinMax(false)); } } min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit); max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1; this.min = Math.min(min, max - 1); this.max = Math.max(min + 1, max); } _getLabelBounds() { const arr = this.getLabelTimestamps(); let min = Number.POSITIVE_INFINITY; let max = Number.NEGATIVE_INFINITY; if (arr.length) { min = arr[0]; max = arr[arr.length - 1]; } return { min, max }; } buildTicks() { const options2 = this.options; const timeOpts = options2.time; const tickOpts = options2.ticks; const timestamps = tickOpts.source === "labels" ? this.getLabelTimestamps() : this._generate(); if (options2.bounds === "ticks" && timestamps.length) { this.min = this._userMin || timestamps[0]; this.max = this._userMax || timestamps[timestamps.length - 1]; } const min = this.min; const max = this.max; const ticks = _filterBetween(timestamps, min, max); this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max)); this._majorUnit = !tickOpts.major.enabled || this._unit === "year" ? void 0 : determineMajorUnit(this._unit); this.initOffsets(timestamps); if (options2.reverse) { ticks.reverse(); } return ticksFromTimestamps(this, ticks, this._majorUnit); } afterAutoSkip() { if (this.options.offsetAfterAutoskip) { this.initOffsets(this.ticks.map((tick) => +tick.value)); } } initOffsets(timestamps = []) { let start = 0; let end = 0; let first, last; if (this.options.offset && timestamps.length) { first = this.getDecimalForValue(timestamps[0]); if (timestamps.length === 1) { start = 1 - first; } else { start = (this.getDecimalForValue(timestamps[1]) - first) / 2; } last = this.getDecimalForValue(timestamps[timestamps.length - 1]); if (timestamps.length === 1) { end = last; } else { end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2; } } const limit = timestamps.length < 3 ? 0.5 : 0.25; start = _limitValue(start, 0, limit); end = _limitValue(end, 0, limit); this._offsets = { start, end, factor: 1 / (start + 1 + end) }; } _generate() { const adapter = this._adapter; const min = this.min; const max = this.max; const options2 = this.options; const timeOpts = options2.time; const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min)); const stepSize = valueOrDefault(options2.ticks.stepSize, 1); const weekday = minor === "week" ? timeOpts.isoWeekday : false; const hasWeekday = isNumber(weekday) || weekday === true; const ticks = {}; let first = min; let time, count; if (hasWeekday) { first = +adapter.startOf(first, "isoWeek", weekday); } first = +adapter.startOf(first, hasWeekday ? "day" : minor); if (adapter.diff(max, min, minor) > 1e5 * stepSize) { throw new Error(min + " and " + max + " are too far apart with stepSize of " + stepSize + " " + minor); } const timestamps = options2.ticks.source === "data" && this.getDataTimestamps(); for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) { addTick(ticks, time, timestamps); } if (time === max || options2.bounds === "ticks" || count === 1) { addTick(ticks, time, timestamps); } return Object.keys(ticks).sort(sorter).map((x) => +x); } getLabelForValue(value) { const adapter = this._adapter; const timeOpts = this.options.time; if (timeOpts.tooltipFormat) { return adapter.format(value, timeOpts.tooltipFormat); } return adapter.format(value, timeOpts.displayFormats.datetime); } format(value, format) { const options2 = this.options; const formats = options2.time.displayFormats; const unit = this._unit; const fmt = format || formats[unit]; return this._adapter.format(value, fmt); } _tickFormatFunction(time, index, ticks, format) { const options2 = this.options; const formatter = options2.ticks.callback; if (formatter) { return callback(formatter, [ time, index, ticks ], this); } const formats = options2.time.displayFormats; const unit = this._unit; const majorUnit = this._majorUnit; const minorFormat = unit && formats[unit]; const majorFormat = majorUnit && formats[majorUnit]; const tick = ticks[index]; const major = majorUnit && majorFormat && tick && tick.major; return this._adapter.format(time, format || (major ? majorFormat : minorFormat)); } generateTickLabels(ticks) { let i, ilen, tick; for (i = 0, ilen = ticks.length; i < ilen; ++i) { tick = ticks[i]; tick.label = this._tickFormatFunction(tick.value, i, ticks); } } getDecimalForValue(value) { return value === null ? NaN : (value - this.min) / (this.max - this.min); } getPixelForValue(value) { const offsets = this._offsets; const pos = this.getDecimalForValue(value); return this.getPixelForDecimal((offsets.start + pos) * offsets.factor); } getValueForPixel(pixel) { const offsets = this._offsets; const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; return this.min + pos * (this.max - this.min); } _getLabelSize(label) { const ticksOpts = this.options.ticks; const tickLabelWidth = this.ctx.measureText(label).width; const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); const cosRotation = Math.cos(angle); const sinRotation = Math.sin(angle); const tickFontSize = this._resolveTickFontOptions(0).size; return { w: tickLabelWidth * cosRotation + tickFontSize * sinRotation, h: tickLabelWidth * sinRotation + tickFontSize * cosRotation }; } _getLabelCapacity(exampleTime) { const timeOpts = this.options.time; const displayFormats = timeOpts.displayFormats; const format = displayFormats[timeOpts.unit] || displayFormats.millisecond; const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [ exampleTime ], this._majorUnit), format); const size = this._getLabelSize(exampleLabel); const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1; return capacity > 0 ? capacity : 1; } getDataTimestamps() { let timestamps = this._cache.data || []; let i, ilen; if (timestamps.length) { return timestamps; } const metas = this.getMatchingVisibleMetas(); if (this._normalized && metas.length) { return this._cache.data = metas[0].controller.getAllParsedValues(this); } for (i = 0, ilen = metas.length; i < ilen; ++i) { timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this)); } return this._cache.data = this.normalize(timestamps); } getLabelTimestamps() { const timestamps = this._cache.labels || []; let i, ilen; if (timestamps.length) { return timestamps; } const labels = this.getLabels(); for (i = 0, ilen = labels.length; i < ilen; ++i) { timestamps.push(parse2(this, labels[i])); } return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps); } normalize(values) { return _arrayUnique(values.sort(sorter)); } }; __publicField(TimeScale, "id", "time"); __publicField(TimeScale, "defaults", { bounds: "data", adapters: {}, time: { parser: false, unit: false, round: false, isoWeekday: false, minUnit: "millisecond", displayFormats: {} }, ticks: { source: "auto", callback: false, major: { enabled: false } } }); function interpolate3(table, val, reverse) { let lo = 0; let hi = table.length - 1; let prevSource, nextSource, prevTarget, nextTarget; if (reverse) { if (val >= table[lo].pos && val <= table[hi].pos) { ({ lo, hi } = _lookupByKey(table, "pos", val)); } ({ pos: prevSource, time: prevTarget } = table[lo]); ({ pos: nextSource, time: nextTarget } = table[hi]); } else { if (val >= table[lo].time && val <= table[hi].time) { ({ lo, hi } = _lookupByKey(table, "time", val)); } ({ time: prevSource, pos: prevTarget } = table[lo]); ({ time: nextSource, pos: nextTarget } = table[hi]); } const span = nextSource - prevSource; return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget; } var TimeSeriesScale = class extends TimeScale { constructor(props) { super(props); this._table = []; this._minPos = void 0; this._tableRange = void 0; } initOffsets() { const timestamps = this._getTimestampsForTable(); const table = this._table = this.buildLookupTable(timestamps); this._minPos = interpolate3(table, this.min); this._tableRange = interpolate3(table, this.max) - this._minPos; super.initOffsets(timestamps); } buildLookupTable(timestamps) { const { min, max } = this; const items = []; const table = []; let i, ilen, prev, curr, next; for (i = 0, ilen = timestamps.length; i < ilen; ++i) { curr = timestamps[i]; if (curr >= min && curr <= max) { items.push(curr); } } if (items.length < 2) { return [ { time: min, pos: 0 }, { time: max, pos: 1 } ]; } for (i = 0, ilen = items.length; i < ilen; ++i) { next = items[i + 1]; prev = items[i - 1]; curr = items[i]; if (Math.round((next + prev) / 2) !== curr) { table.push({ time: curr, pos: i / (ilen - 1) }); } } return table; } _generate() { const min = this.min; const max = this.max; let timestamps = super.getDataTimestamps(); if (!timestamps.includes(min) || !timestamps.length) { timestamps.splice(0, 0, min); } if (!timestamps.includes(max) || timestamps.length === 1) { timestamps.push(max); } return timestamps.sort((a, b) => a - b); } _getTimestampsForTable() { let timestamps = this._cache.all || []; if (timestamps.length) { return timestamps; } const data = this.getDataTimestamps(); const label = this.getLabelTimestamps(); if (data.length && label.length) { timestamps = this.normalize(data.concat(label)); } else { timestamps = data.length ? data : label; } timestamps = this._cache.all = timestamps; return timestamps; } getDecimalForValue(value) { return (interpolate3(this._table, value) - this._minPos) / this._tableRange; } getValueForPixel(pixel) { const offsets = this._offsets; const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; return interpolate3(this._table, decimal * this._tableRange + this._minPos, true); } }; __publicField(TimeSeriesScale, "id", "timeseries"); __publicField(TimeSeriesScale, "defaults", TimeScale.defaults); // src/gui/stats-modal.tsx var import_obsidian10 = require("obsidian"); var import_vhtml2 = __toESM(require_vhtml()); Chart.register( BarElement, BarController, plugin_legend, plugin_title, plugin_tooltip, plugin_subtitle, CategoryScale, LinearScale, PieController, ArcElement ); var StatsModal = class extends import_obsidian10.Modal { constructor(app, osrCore) { super(app); this.osrCore = osrCore; this.titleEl.setText(`${t("STATS_TITLE")} `); this.titleEl.addClass("sr-centered"); this.titleEl.innerHTML += /* @__PURE__ */ (0, import_vhtml2.default)("select", { id: "sr-chart-period" }, /* @__PURE__ */ (0, import_vhtml2.default)("option", { value: "month", selected: true }, t("MONTH")), /* @__PURE__ */ (0, import_vhtml2.default)("option", { value: "quarter" }, t("QUARTER")), /* @__PURE__ */ (0, import_vhtml2.default)("option", { value: "year" }, t("YEAR")), /* @__PURE__ */ (0, import_vhtml2.default)("option", { value: "lifetime" }, t("LIFETIME"))); this.modalEl.style.height = "100%"; this.modalEl.style.width = "100%"; if (import_obsidian10.Platform.isMobile) { this.contentEl.style.display = "block"; } } onOpen() { const { contentEl } = this; contentEl.style.textAlign = "center"; const cardStats = this.osrCore.cardStats; let maxN = cardStats.delayedDays.getMaxValue(); for (let dueOffset = 0; dueOffset <= maxN; dueOffset++) { cardStats.delayedDays.clearCountIfMissing(dueOffset); } const dueDatesFlashcardsCopy = { 0: 0 }; for (const [dueOffset, dueCount] of getTypedObjectEntries(cardStats.delayedDays.dict)) { if (dueOffset <= 0) { dueDatesFlashcardsCopy[0] += dueCount; } else { dueDatesFlashcardsCopy[dueOffset] = dueCount; } } const scheduledCount = cardStats.youngCount + cardStats.matureCount; maxN = Math.max(maxN, 1); contentEl.innerHTML += /* @__PURE__ */ (0, import_vhtml2.default)("div", null, /* @__PURE__ */ (0, import_vhtml2.default)("canvas", { id: "forecastChart" }), /* @__PURE__ */ (0, import_vhtml2.default)("span", { id: "forecastChartSummary" }), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("canvas", { id: "intervalsChart" }), /* @__PURE__ */ (0, import_vhtml2.default)("span", { id: "intervalsChartSummary" }), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("canvas", { id: "easesChart" }), /* @__PURE__ */ (0, import_vhtml2.default)("span", { id: "easesChartSummary" }), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("canvas", { id: "cardTypesChart" }), /* @__PURE__ */ (0, import_vhtml2.default)("br", null), /* @__PURE__ */ (0, import_vhtml2.default)("span", { id: "cardTypesChartSummary" })); createStatsChart( "bar", "forecastChart", t("FORECAST"), t("FORECAST_DESC"), Object.keys(dueDatesFlashcardsCopy), Object.values(dueDatesFlashcardsCopy), t("REVIEWS_PER_DAY", { avg: (scheduledCount / maxN).toFixed(1) }), t("SCHEDULED"), t("DAYS"), t("NUMBER_OF_CARDS") ); maxN = cardStats.intervals.getMaxValue(); for (let interval = 0; interval <= maxN; interval++) { cardStats.intervals.clearCountIfMissing(interval); } const average_interval = textInterval( Math.round( cardStats.intervals.getTotalOfValueMultiplyCount() / scheduledCount * 10 ) / 10 || 0, false ), longest_interval = textInterval(cardStats.intervals.getMaxValue(), false); createStatsChart( "bar", "intervalsChart", t("INTERVALS"), t("INTERVALS_DESC"), Object.keys(cardStats.intervals.dict), Object.values(cardStats.intervals.dict), t("INTERVALS_SUMMARY", { avg: average_interval, longest: longest_interval }), t("COUNT"), t("DAYS"), t("NUMBER_OF_CARDS") ); const eases = getKeysPreserveType(cardStats.eases.dict); for (let ease = Math.min(...eases); ease <= Math.max(...eases); ease++) { cardStats.eases.clearCountIfMissing(ease); } const average_ease = Math.round(cardStats.eases.getTotalOfValueMultiplyCount() / scheduledCount) || 0; createStatsChart( "bar", "easesChart", t("EASES"), "", Object.keys(cardStats.eases.dict), Object.values(cardStats.eases.dict), t("EASES_SUMMARY", { avgEase: average_ease }), t("COUNT"), t("EASES"), t("NUMBER_OF_CARDS") ); const totalCardsCount = this.osrCore.reviewableDeckTree.getDistinctCardCount( 2 /* All */, true ); createStatsChart( "pie", "cardTypesChart", t("CARD_TYPES"), t("CARD_TYPES_DESC"), [ `${t("CARD_TYPE_NEW")} - ${Math.round( cardStats.newCount / totalCardsCount * 100 )}%`, `${t("CARD_TYPE_YOUNG")} - ${Math.round( cardStats.youngCount / totalCardsCount * 100 )}%`, `${t("CARD_TYPE_MATURE")} - ${Math.round( cardStats.matureCount / totalCardsCount * 100 )}%` ], [cardStats.newCount, cardStats.youngCount, cardStats.matureCount], t("CARD_TYPES_SUMMARY", { totalCardsCount }) ); } onClose() { const { contentEl } = this; contentEl.empty(); } }; function createStatsChart(type, canvasId, title, subtitle, labels, data, summary, seriesTitle = "", xAxisTitle = "", yAxisTitle = "") { const style = getComputedStyle(document.body); const textColor = style.getPropertyValue("--text-normal"); let scales = {}, backgroundColor = ["#2196f3"]; if (type !== "pie") { scales = { x: { title: { display: true, text: xAxisTitle, color: textColor } }, y: { title: { display: true, text: yAxisTitle, color: textColor } } }; } else { backgroundColor = ["#2196f3", "#4caf50", "green"]; } const shouldFilter = canvasId === "forecastChart" || canvasId === "intervalsChart"; const statsChart = new Chart(document.getElementById(canvasId), { type, data: { labels: shouldFilter ? labels.slice(0, 31) : labels, datasets: [ { label: seriesTitle, backgroundColor, data: shouldFilter ? data.slice(0, 31) : data } ] }, options: { scales, plugins: { title: { display: true, text: title, font: { size: 22 }, color: textColor }, subtitle: { display: true, text: subtitle, font: { size: 16, style: "italic" }, color: textColor }, legend: { display: false } }, aspectRatio: 2 } }); if (shouldFilter) { const chartPeriodEl = document.getElementById("sr-chart-period"); chartPeriodEl.addEventListener("click", () => { let filteredLabels, filteredData; const chartPeriod = chartPeriodEl.value; if (chartPeriod === "month") { filteredLabels = labels.slice(0, 31); filteredData = data.slice(0, 31); } else if (chartPeriod === "quarter") { filteredLabels = labels.slice(0, 91); filteredData = data.slice(0, 91); } else if (chartPeriod === "year") { filteredLabels = labels.slice(0, 366); filteredData = data.slice(0, 366); } else { filteredLabels = labels; filteredData = data; } statsChart.data.labels = filteredLabels; statsChart.data.datasets[0] = { label: seriesTitle, backgroundColor, data: filteredData }; statsChart.update(); }); } document.getElementById(`${canvasId}Summary`).innerText = summary; } // src/icons/app-icon.ts var import_obsidian11 = require("obsidian"); function appIcon() { (0, import_obsidian11.addIcon)( "SpacedRepIcon", ` ` ); } // src/next-note-review-handler.ts var import_obsidian13 = require("obsidian"); // src/gui/review-deck-selection-modal.tsx var import_obsidian12 = require("obsidian"); var ReviewDeckSelectionModal = class extends import_obsidian12.FuzzySuggestModal { constructor(app, deckKeys) { super(app); this.deckKeys = []; this.deckKeys = deckKeys; } getItems() { return this.deckKeys; } getItemText(item) { return item; } onChooseItem(deckKey, _) { this.close(); this.submitCallback(deckKey); } }; // src/next-note-review-handler.ts var NextNoteReviewHandler = class { get lastSelectedReviewDeck() { return this._lastSelectedReviewDeck; } get noteReviewQueue() { return this._noteReviewQueue; } constructor(app, settings, workspace, noteReviewQueue) { this.app = app; this.settings = settings; this.workspace = workspace; this._noteReviewQueue = noteReviewQueue; } async autoReviewNextNote() { if (this.settings.autoNextNote) { if (!this._lastSelectedReviewDeck) { const reviewDeckKeys = this._noteReviewQueue.reviewDeckNameList; if (reviewDeckKeys.length > 0) this._lastSelectedReviewDeck = reviewDeckKeys[0]; else { new import_obsidian13.Notice(t("ALL_CAUGHT_UP")); return; } } this.reviewNextNote(this._lastSelectedReviewDeck); } } async reviewNextNoteModal() { const reviewDeckNames = this._noteReviewQueue.reviewDeckNameList; if (reviewDeckNames.length === 1) { this.reviewNextNote(reviewDeckNames[0]); } else { const deckSelectionModal = new ReviewDeckSelectionModal(this.app, reviewDeckNames); deckSelectionModal.submitCallback = (deckKey) => this.reviewNextNote(deckKey); deckSelectionModal.open(); } } async reviewNextNote(deckKey) { if (!this._noteReviewQueue.reviewDeckNameList.contains(deckKey)) { new import_obsidian13.Notice(t("NO_DECK_EXISTS", { deckName: deckKey })); return; } this._lastSelectedReviewDeck = deckKey; const deck = this._noteReviewQueue.reviewDecks.get(deckKey); const notefile = deck.determineNextNote(this.settings.openRandomNote); if (notefile) { await this.openNote(deckKey, notefile.tfile); } else { new import_obsidian13.Notice(t("ALL_CAUGHT_UP")); } } async openNote(deckName, file) { this._lastSelectedReviewDeck = deckName; await this.app.workspace.getLeaf().openFile(file); } }; // src/plugin-data.ts var DEFAULT_DATA = { settings: DEFAULT_SETTINGS, buryDate: "", buryList: [], historyDeck: null }; // src/question-postponement-list.ts var QuestionPostponementList = class { constructor(plugin, settings, list) { this.plugin = plugin; this.settings = settings; this.list = list; } async clearIfNewDay(data) { const now2 = window.moment(Date.now()); const todayDate = now2.format("YYYY-MM-DD"); const isNewDay = todayDate !== data.buryDate; if (isNewDay) { data.buryDate = todayDate; this.clear(); await this.write(); } } clear() { this.list.splice(0); } add(question) { if (!this.includes(question)) this.list.push(question.questionText.textHash); } includes(question) { return this.list.includes(question.questionText.textHash); } async write() { if (this.plugin == null) return; await this.plugin.savePluginData(); } }; // src/main.ts var SRPlugin = class _SRPlugin extends import_obsidian14.Plugin { constructor() { super(...arguments); this.debouncedGenerateParserTimeout = null; this.ribbonIcon = null; this.statusBar = null; } async onload() { await this.loadPluginData(); this.initLogicClasses(); this.initGuiItems(); } initLogicClasses() { const questionPostponementList = new QuestionPostponementList( this, this.data.settings, this.data.buryList ); const osrNoteLinkInfoFinder = new ObsidianVaultNoteLinkInfoFinder(this.app.metadataCache); this.osrAppCore = new OsrAppCore(this.app); this.osrAppCore.init( questionPostponementList, osrNoteLinkInfoFinder, this.data.settings, this.onOsrVaultDataChanged.bind(this) ); } initGuiItems() { this.nextNoteReviewHandler = new NextNoteReviewHandler( this.app, this.data.settings, this.app.workspace, this.osrAppCore.noteReviewQueue ); appIcon(); this.showStatusBar(this.data.settings.showStatusBar); this.showRibbonIcon(this.data.settings.showRibbonIcon); this.showFileMenuItems(!this.data.settings.disableFileMenuReviewOptions); this.addPluginCommands(); this.addSettingTab(new SRSettingTab(this.app, this)); this.osrSidebar = new OsrSidebar(this, this.data.settings, this.nextNoteReviewHandler); this.app.workspace.onLayoutReady(async () => { await this.osrSidebar.init(); setTimeout(async () => { if (!this.osrAppCore.syncLock) { await this.sync(); } }, 2e3); }); } showFileMenuItems(status) { if (this.fileMenuHandler === void 0) { this.fileMenuHandler = (menu, fileish) => { if (fileish instanceof import_obsidian14.TFile && fileish.extension === "md") { menu.addItem((item) => { item.setTitle( t("REVIEW_DIFFICULTY_FILE_MENU", { difficulty: this.data.settings.flashcardEasyText }) ).setIcon("SpacedRepIcon").onClick(() => { this.saveNoteReviewResponse(fileish, 0 /* Easy */); }); }); menu.addItem((item) => { item.setTitle( t("REVIEW_DIFFICULTY_FILE_MENU", { difficulty: this.data.settings.flashcardGoodText }) ).setIcon("SpacedRepIcon").onClick(() => { this.saveNoteReviewResponse(fileish, 1 /* Good */); }); }); menu.addItem((item) => { item.setTitle( t("REVIEW_DIFFICULTY_FILE_MENU", { difficulty: this.data.settings.flashcardHardText }) ).setIcon("SpacedRepIcon").onClick(() => { this.saveNoteReviewResponse(fileish, 2 /* Hard */); }); }); } }; } if (status) { this.registerEvent(this.app.workspace.on("file-menu", this.fileMenuHandler)); } else { this.app.workspace.off("file-menu", this.fileMenuHandler); } } addPluginCommands() { this.addCommand({ id: "srs-note-review-open-note", name: t("OPEN_NOTE_FOR_REVIEW"), callback: async () => { if (!this.osrAppCore.syncLock) { await this.sync(); this.nextNoteReviewHandler.reviewNextNoteModal(); } } }); this.addCommand({ id: "srs-note-review-easy", name: t("REVIEW_NOTE_DIFFICULTY_CMD", { difficulty: this.data.settings.flashcardEasyText }), callback: () => { const openFile = this.app.workspace.getActiveFile(); if (openFile && openFile.extension === "md") { this.saveNoteReviewResponse(openFile, 0 /* Easy */); } } }); this.addCommand({ id: "srs-note-review-good", name: t("REVIEW_NOTE_DIFFICULTY_CMD", { difficulty: this.data.settings.flashcardGoodText }), callback: () => { const openFile = this.app.workspace.getActiveFile(); if (openFile && openFile.extension === "md") { this.saveNoteReviewResponse(openFile, 1 /* Good */); } } }); this.addCommand({ id: "srs-note-review-hard", name: t("REVIEW_NOTE_DIFFICULTY_CMD", { difficulty: this.data.settings.flashcardHardText }), callback: () => { const openFile = this.app.workspace.getActiveFile(); if (openFile && openFile.extension === "md") { this.saveNoteReviewResponse(openFile, 2 /* Hard */); } } }); this.addCommand({ id: "srs-review-flashcards", name: t("REVIEW_ALL_CARDS"), callback: async () => { if (!this.osrAppCore.syncLock) { await this.sync(); this.openFlashcardModal( this.osrAppCore.reviewableDeckTree, this.osrAppCore.remainingDeckTree, 1 /* Review */ ); } } }); this.addCommand({ id: "srs-cram-flashcards", name: t("CRAM_ALL_CARDS"), callback: async () => { await this.sync(); this.openFlashcardModal( this.osrAppCore.reviewableDeckTree, this.osrAppCore.reviewableDeckTree, 0 /* Cram */ ); } }); this.addCommand({ id: "srs-review-flashcards-in-note", name: t("REVIEW_CARDS_IN_NOTE"), callback: async () => { const openFile = this.app.workspace.getActiveFile(); if (openFile && openFile.extension === "md") { this.openFlashcardModalForSingleNote(openFile, 1 /* Review */); } } }); this.addCommand({ id: "srs-cram-flashcards-in-note", name: t("CRAM_CARDS_IN_NOTE"), callback: async () => { const openFile = this.app.workspace.getActiveFile(); if (openFile && openFile.extension === "md") { this.openFlashcardModalForSingleNote(openFile, 0 /* Cram */); } } }); this.addCommand({ id: "srs-view-stats", name: t("VIEW_STATS"), callback: async () => { if (!this.osrAppCore.syncLock) { await this.sync(); new StatsModal(this.app, this.osrAppCore).open(); } } }); this.addCommand({ id: "srs-open-review-queue-view", name: t("OPEN_REVIEW_QUEUE_VIEW"), callback: async () => { await this.osrSidebar.openReviewQueueView(); } }); } onunload() { this.app.workspace.getLeavesOfType(REVIEW_QUEUE_VIEW_TYPE).forEach((leaf) => leaf.detach()); } async openFlashcardModalForSingleNote(noteFile, reviewMode) { const note = await this.loadNote(noteFile); const deckTree = new Deck2("root", null); note.appendCardsToDeck(deckTree); const remainingDeckTree = DeckTreeFilter.filterForRemainingCards( this.osrAppCore.questionPostponementList, deckTree, reviewMode ); this.openFlashcardModal(deckTree, remainingDeckTree, reviewMode); } openFlashcardModal(fullDeckTree, remainingDeckTree, reviewMode) { const deckIterator = _SRPlugin.createDeckTreeIterator(this.data.settings); const reviewSequencer = new FlashcardReviewSequencer( reviewMode, deckIterator, this.data.settings, SrsAlgorithm.getInstance(), this.osrAppCore.questionPostponementList, this.osrAppCore.dueDateFlashcardHistogram ); reviewSequencer.setDeckTree(fullDeckTree, remainingDeckTree); new FlashcardModal(this.app, this, this.data.settings, reviewSequencer, reviewMode).open(); } static createDeckTreeIterator(settings) { let cardOrder = CardOrder[settings.flashcardCardOrder]; if (cardOrder === void 0) cardOrder = 2 /* DueFirstSequential */; let deckOrder = DeckOrder[settings.flashcardDeckOrder]; if (deckOrder === void 0) deckOrder = 0 /* PrevDeckComplete_Sequential */; const iteratorOrder = { deckOrder, cardOrder }; return new DeckTreeIterator(iteratorOrder, null); } async sync() { if (this.osrAppCore.syncLock) { return; } const now2 = window.moment(Date.now()); this.osrAppCore.defaultTextDirection = this.getObsidianRtlSetting(); await this.osrAppCore.loadVault(); if (this.data.settings.showDebugMessages) { console.log(`SR: ${t("DECKS")}`, this.osrAppCore.reviewableDeckTree); console.log( "SR: " + t("SYNC_TIME_TAKEN", { t: Date.now() - now2.valueOf() }) ); } } onOsrVaultDataChanged() { this.statusBar.setText( t("STATUS_BAR", { dueNotesCount: this.osrAppCore.noteReviewQueue.dueNotesCount, dueFlashcardsCount: this.osrAppCore.remainingDeckTree.getCardCount( 2 /* All */, true ) }) ); this.osrSidebar.redraw(); } async loadNote(noteFile) { const loader = new NoteFileLoader(this.data.settings); const srFile = this.createSrTFile(noteFile); const folderTopicPath = TopicPath.getFolderPathFromFilename( srFile, this.data.settings ); const note = await loader.load( this.createSrTFile(noteFile), this.getObsidianRtlSetting(), folderTopicPath ); if (note.hasChanged) { note.writeNoteFile(this.data.settings); } return note; } getObsidianRtlSetting() { const v = this.app.vault.getConfig("rightToLeft"); return convertToStringOrEmpty(v) == "true" ? 2 /* Rtl */ : 1 /* Ltr */; } async saveNoteReviewResponse(note, response) { const noteSrTFile = this.createSrTFile(note); if (SettingsUtil.isPathInNoteIgnoreFolder(this.data.settings, note.path)) { new import_obsidian14.Notice(t("NOTE_IN_IGNORED_FOLDER")); return; } const tags = noteSrTFile.getAllTagsFromCache(); if (!SettingsUtil.isAnyTagANoteReviewTag(this.data.settings, tags)) { new import_obsidian14.Notice(t("PLEASE_TAG_NOTE")); return; } await this.osrAppCore.saveNoteReviewResponse(noteSrTFile, response, this.data.settings); new import_obsidian14.Notice(t("RESPONSE_RECEIVED")); if (this.data.settings.autoNextNote) { this.nextNoteReviewHandler.autoReviewNextNote(); } } createSrTFile(note) { return new SrTFile(this.app.vault, this.app.metadataCache, note); } async loadPluginData() { const loadedData = await this.loadData(); if (loadedData == null ? void 0 : loadedData.settings) upgradeSettings(loadedData.settings); this.data = Object.assign({}, DEFAULT_DATA, loadedData); this.data.settings = Object.assign({}, DEFAULT_SETTINGS, this.data.settings); setDebugParser(this.data.settings.showPaserDebugMessages); this.setupDataStoreAndAlgorithmInstances(this.data.settings); } setupDataStoreAndAlgorithmInstances(settings) { DataStore.instance = new StoreInNote(settings); SrsAlgorithm.instance = new SrsAlgorithm_Osr(settings); DataStoreAlgorithm.instance = new DataStoreInNote_AlgorithmOsr(settings); } async savePluginData() { await this.saveData(this.data); } async debouncedGenerateParser(timeout_ms = 250) { if (this.debouncedGenerateParserTimeout) { clearTimeout(this.debouncedGenerateParserTimeout); } this.debouncedGenerateParserTimeout = window.setTimeout(async () => { const parserOptions = { singleLineCardSeparator: this.data.settings.singleLineCardSeparator, singleLineReversedCardSeparator: this.data.settings.singleLineReversedCardSeparator, multilineCardSeparator: this.data.settings.multilineCardSeparator, multilineReversedCardSeparator: this.data.settings.multilineReversedCardSeparator, multilineCardEndMarker: this.data.settings.multilineCardEndMarker, convertHighlightsToClozes: this.data.settings.convertHighlightsToClozes, convertBoldTextToClozes: this.data.settings.convertBoldTextToClozes, convertCurlyBracketsToClozes: this.data.settings.convertCurlyBracketsToClozes }; generateParser(parserOptions); this.debouncedGenerateParserTimeout = null; }, timeout_ms); } showRibbonIcon(status) { if (!this.ribbonIcon) { this.ribbonIcon = this.addRibbonIcon("SpacedRepIcon", t("REVIEW_CARDS"), async () => { if (!this.osrAppCore.syncLock) { await this.sync(); this.openFlashcardModal( this.osrAppCore.reviewableDeckTree, this.osrAppCore.remainingDeckTree, 1 /* Review */ ); } }); } if (status) { this.ribbonIcon.style.display = ""; } else { this.ribbonIcon.style.display = "none"; } } showStatusBar(status) { if (!this.statusBar) { this.statusBar = this.addStatusBarItem(); this.statusBar.classList.add("mod-clickable"); this.statusBar.setAttribute("aria-label", t("OPEN_NOTE_FOR_REVIEW")); this.statusBar.setAttribute("aria-label-position", "top"); this.statusBar.addEventListener("click", async () => { if (!this.osrAppCore.syncLock) { await this.sync(); this.nextNoteReviewHandler.reviewNextNoteModal(); } }); } if (status) { this.statusBar.style.display = ""; } else { this.statusBar.style.display = "none"; } } }; /*! Bundled license information: moment/moment.js: (*! moment.js *) (*! version : 2.30.1 *) (*! authors : Tim Wood, Iskren Chernev, Moment.js contributors *) (*! license : MIT *) (*! momentjs.com *) @kurkle/color/dist/color.esm.js: (*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela * Released under the MIT License *) chart.js/dist/chunks/helpers.segment.js: (*! * Chart.js v4.4.4 * https://www.chartjs.org * (c) 2024 Chart.js Contributors * Released under the MIT License *) chart.js/dist/chart.js: (*! * Chart.js v4.4.4 * https://www.chartjs.org * (c) 2024 Chart.js Contributors * Released under the MIT License *) */ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21vbWVudEAyLjMwLjEvbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3BhZ2VyYW5rLmpzQDEuMC4yL25vZGVfbW9kdWxlcy9wYWdlcmFuay5qcy9saWIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JhbGFuY2VkLW1hdGNoQDEuMC4yL25vZGVfbW9kdWxlcy9iYWxhbmNlZC1tYXRjaC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vYnJhY2UtZXhwYW5zaW9uQDIuMC4xL25vZGVfbW9kdWxlcy9icmFjZS1leHBhbnNpb24vaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3BlZ2d5QDQuMC4zL25vZGVfbW9kdWxlcy9wZWdneS9icm93c2VyL3BlZ2d5Lm1pbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vdmh0bWxAMi4yLjAvbm9kZV9tb2R1bGVzL3ZodG1sL3NyYy9lbXB0eS10YWdzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS92aHRtbEAyLjIuMC9ub2RlX21vZHVsZXMvdmh0bWwvc3JjL3ZodG1sLmpzIiwgIi4uL3NyYy9tYWluLnRzIiwgIi4uL3NyYy9hbGdvcml0aG1zL2Jhc2UvcmVwZXRpdGlvbi1pdGVtLnRzIiwgIi4uL3NyYy9hbGdvcml0aG1zL2Jhc2Uvc3JzLWFsZ29yaXRobS50cyIsICIuLi9zcmMvYWxnb3JpdGhtcy9vc3Ivb2JzaWRpYW4tdmF1bHQtbm90ZWxpbmstaW5mby1maW5kZXIudHMiLCAiLi4vc3JjL2FsZ29yaXRobXMvb3NyL3Nycy1hbGdvcml0aG0tb3NyLnRzIiwgIi4uL3NyYy9jb25zdGFudHMudHMiLCAiLi4vc3JjL2xhbmcvaGVscGVycy50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvYWYudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL2FyLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9ibi50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvY3oudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL2RhLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9kZS50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvZW4udHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL2VuLWdiLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9lcy50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvZnIudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL2hpLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9pZC50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvaXQudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL2phLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9rby50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvbXIudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL25sLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9uby50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvcGwudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL3B0LnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9wdC1ici50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvcm8udHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL3J1LnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS9zdy50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvdGEudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL3RlLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS90aC50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvdHIudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL3VrLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS91ci50cyIsICIuLi9zcmMvbGFuZy9sb2NhbGUvdmkudHMiLCAiLi4vc3JjL2xhbmcvbG9jYWxlL3poLWNuLnRzIiwgIi4uL3NyYy9sYW5nL2xvY2FsZS96aC10dy50cyIsICIuLi9zcmMvYWxnb3JpdGhtcy9vc3Ivbm90ZS1zY2hlZHVsaW5nLnRzIiwgIi4uL3NyYy91dGlscy9kYXRlcy50cyIsICIuLi9zcmMvYWxnb3JpdGhtcy9iYXNlL3JlcC1pdGVtLXNjaGVkdWxlLWluZm8udHMiLCAiLi4vc3JjL2FsZ29yaXRobXMvb3NyL3JlcC1pdGVtLXNjaGVkdWxlLWluZm8tb3NyLnRzIiwgIi4uL3NyYy9ub3RlLWVhc2UtbGlzdC50cyIsICIuLi9zcmMvYWxnb3JpdGhtcy9vc3Ivb3NyLW5vdGUtZ3JhcGgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmltYXRjaEAxMC4wLjEvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvaW5kZXgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmltYXRjaEAxMC4wLjEvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvYXNzZXJ0LXZhbGlkLXBhdHRlcm4udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmltYXRjaEAxMC4wLjEvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvYnJhY2UtZXhwcmVzc2lvbnMudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmltYXRjaEAxMC4wLjEvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvdW5lc2NhcGUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL21pbmltYXRjaEAxMC4wLjEvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvYXN0LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9taW5pbWF0Y2hAMTAuMC4xL25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvc3JjL2VzY2FwZS50cyIsICIuLi9zcmMvdXRpbHMvZnMudHMiLCAiLi4vc3JjL2RhdGEtc3RvcmUtYWxnb3JpdGhtL2RhdGEtc3RvcmUtYWxnb3JpdGhtLnRzIiwgIi4uL3NyYy9kYXRhLXN0b3Jlcy9iYXNlL2RhdGEtc3RvcmUudHMiLCAiLi4vc3JjL3RvcGljLXBhdGgudHMiLCAiLi4vc3JjL2ZsYXNoY2FyZC1yZXZpZXctc2VxdWVuY2VyLnRzIiwgIi4uL3NyYy9kZWNrLnRzIiwgIi4uL3NyYy91dGlscy90eXBlcy50cyIsICIuLi9zcmMvdXRpbHMvbnVtYmVycy50cyIsICIuLi9zcmMvZGVjay10cmVlLWl0ZXJhdG9yLnRzIiwgIi4uL3NyYy9zdGF0cy50cyIsICIuLi9zcmMvZGVjay10cmVlLXN0YXRzLWNhbGN1bGF0b3IudHMiLCAiLi4vc3JjL2R1ZS1kYXRlLWhpc3RvZ3JhbS50cyIsICIuLi9zcmMvbm90ZS50cyIsICIuLi9zcmMvY2FyZC50cyIsICIuLi9zcmMvcGFyc2VyLnRzIiwgIi4uL3NyYy91dGlscy9zdHJpbmdzLnRzIiwgIi4uL3NyYy9xdWVzdGlvbi50cyIsICIuLi9zcmMvcXVlc3Rpb24tdHlwZS50cyIsICIuLi9zcmMvc2V0dGluZ3MudHMiLCAiLi4vc3JjL2d1aS90YWJzLnRzeCIsICIuLi9zcmMvc3ItZmlsZS50cyIsICIuLi9zcmMvbm90ZS1xdWVzdGlvbi1wYXJzZXIudHMiLCAiLi4vc3JjL25vdGUtZmlsZS1sb2FkZXIudHMiLCAiLi4vc3JjL25vdGUtcmV2aWV3LWRlY2sudHMiLCAiLi4vc3JjL25vdGUtcmV2aWV3LXF1ZXVlLnRzIiwgIi4uL3NyYy9jb3JlLnRzIiwgIi4uL3NyYy9hcHAtY29yZS50cyIsICIuLi9zcmMvZGF0YS1zdG9yZS1hbGdvcml0aG0vZGF0YS1zdG9yZS1pbi1ub3RlLWFsZ29yaXRobS1vc3IudHMiLCAiLi4vc3JjL2RhdGEtc3RvcmVzL3N0b3JlLWluLW5vdGUvbm90ZS50cyIsICIuLi9zcmMvZ3VpL2ZsYXNoY2FyZC1tb2RhbC50c3giLCAiLi4vc3JjL2d1aS9kZWNrLWxpc3Qtdmlldy50c3giLCAiLi4vc3JjL2d1aS9lZGl0LW1vZGFsLnRzeCIsICIuLi9zcmMvZ3VpL2ZsYXNoY2FyZC1yZXZpZXctdmlldy50c3giLCAiLi4vc3JjL3V0aWxzL3JlbmRlcmVycy50cyIsICIuLi9zcmMvZ3VpL3Jldmlldy1xdWV1ZS1saXN0LXZpZXcudHN4IiwgIi4uL3NyYy9ndWkvc2lkZWJhci50c3giLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BrdXJrbGUrY29sb3JAMC4zLjIvbm9kZV9tb2R1bGVzL0BrdXJrbGUvY29sb3IvZGlzdC9jb2xvci5lc20uanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLmNvcmUudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLm1hdGgudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLmNvbGxlY3Rpb24udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLmV4dHJhcy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9oZWxwZXJzL2hlbHBlcnMuZWFzaW5nLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2hlbHBlcnMvaGVscGVycy5jb2xvci50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuYW5pbWF0aW9ucy5kZWZhdWx0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUubGF5b3V0cy5kZWZhdWx0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9oZWxwZXJzL2hlbHBlcnMuaW50bC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUudGlja3MuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29yZS9jb3JlLnNjYWxlLmRlZmF1bHRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2NvcmUvY29yZS5kZWZhdWx0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9oZWxwZXJzL2hlbHBlcnMuY2FudmFzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2hlbHBlcnMvaGVscGVycy5vcHRpb25zLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2hlbHBlcnMvaGVscGVycy5jb25maWcudHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLmN1cnZlLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2hlbHBlcnMvaGVscGVycy5kb20udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLmludGVycG9sYXRpb24udHMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvaGVscGVycy9oZWxwZXJzLnJ0bC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9oZWxwZXJzL2hlbHBlcnMuc2VnbWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuYW5pbWF0b3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29yZS9jb3JlLmFuaW1hdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuYW5pbWF0aW9ucy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuZGF0YXNldENvbnRyb2xsZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5iYXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5idWJibGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5kb3VnaG51dC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb250cm9sbGVycy9jb250cm9sbGVyLmxpbmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5wb2xhckFyZWEuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5waWUuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29udHJvbGxlcnMvY29udHJvbGxlci5yYWRhci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb250cm9sbGVycy9jb250cm9sbGVyLnNjYXR0ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29yZS9jb3JlLmFkYXB0ZXJzLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2NvcmUvY29yZS5pbnRlcmFjdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUubGF5b3V0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbGF0Zm9ybS9wbGF0Zm9ybS5iYXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3BsYXRmb3JtL3BsYXRmb3JtLmJhc2ljLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3BsYXRmb3JtL3BsYXRmb3JtLmRvbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbGF0Zm9ybS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuZWxlbWVudC50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuc2NhbGUuYXV0b3NraXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvY29yZS9jb3JlLnNjYWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2NvcmUvY29yZS50eXBlZFJlZ2lzdHJ5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2NvcmUvY29yZS5yZWdpc3RyeS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUucGx1Z2lucy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9jb3JlL2NvcmUuY29uZmlnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2NvcmUvY29yZS5jb250cm9sbGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2VsZW1lbnRzL2VsZW1lbnQuYXJjLnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2VsZW1lbnRzL2VsZW1lbnQubGluZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9lbGVtZW50cy9lbGVtZW50LnBvaW50LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2VsZW1lbnRzL2VsZW1lbnQuYmFyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3BsdWdpbnMvcGx1Z2luLmNvbG9ycy50cyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5kZWNpbWF0aW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3BsdWdpbnMvcGx1Z2luLmZpbGxlci9maWxsZXIuc2VnbWVudC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5maWxsZXIvZmlsbGVyLmhlbHBlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5maWxsZXIvZmlsbGVyLm9wdGlvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvcGx1Z2lucy9wbHVnaW4uZmlsbGVyL2ZpbGxlci50YXJnZXQuc3RhY2suanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvcGx1Z2lucy9wbHVnaW4uZmlsbGVyL3NpbXBsZUFyYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5maWxsZXIvZmlsbGVyLnRhcmdldC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5maWxsZXIvZmlsbGVyLmRyYXdpbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NoYXJ0LmpzQDQuNC40L25vZGVfbW9kdWxlcy9jaGFydC5qcy9zcmMvcGx1Z2lucy9wbHVnaW4uZmlsbGVyL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3BsdWdpbnMvcGx1Z2luLmxlZ2VuZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi50aXRsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi5zdWJ0aXRsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9wbHVnaW5zL3BsdWdpbi50b29sdGlwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3NjYWxlcy9zY2FsZS5jYXRlZ29yeS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9zY2FsZXMvc2NhbGUubGluZWFyYmFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9zY2FsZXMvc2NhbGUubGluZWFyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3NjYWxlcy9zY2FsZS5sb2dhcml0aG1pYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhcnQuanNANC40LjQvbm9kZV9tb2R1bGVzL2NoYXJ0LmpzL3NyYy9zY2FsZXMvc2NhbGUucmFkaWFsTGluZWFyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3NjYWxlcy9zY2FsZS50aW1lLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL3NjYWxlcy9zY2FsZS50aW1lc2VyaWVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaGFydC5qc0A0LjQuNC9ub2RlX21vZHVsZXMvY2hhcnQuanMvc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9ndWkvc3RhdHMtbW9kYWwudHN4IiwgIi4uL3NyYy9pY29ucy9hcHAtaWNvbi50cyIsICIuLi9zcmMvbmV4dC1ub3RlLXJldmlldy1oYW5kbGVyLnRzIiwgIi4uL3NyYy9ndWkvcmV2aWV3LWRlY2stc2VsZWN0aW9uLW1vZGFsLnRzeCIsICIuLi9zcmMvcGx1Z2luLWRhdGEudHMiLCAiLi4vc3JjL3F1ZXN0aW9uLXBvc3Rwb25lbWVudC1saXN0LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSxtRUFBQUEsVUFBQUMsU0FBQTtBQU1DLEtBQUMsU0FBVUMsU0FBUSxT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RSxDQUFDLEdBQUVDLEtBQUUsR0FBRUEsS0FBRSxVQUFVLFFBQU9BLEtBQUksQ0FBQUQsR0FBRUMsS0FBRSxDQUFDLElBQUUsVUFBVUEsRUFBQztBQUFFLGlCQUFPLEVBQUVKLEdBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRSxnQkFBZ0IsQ0FBQ0EsRUFBQyxHQUFFRyxJQUFFLEtBQUUsQ0FBQztBQUFBLFFBQUM7QUFBQyxpQkFBUyxJQUFHO0FBQUEsUUFBQztBQUFDLGlCQUFTLEVBQUVELElBQUU7QUFBQyxtQkFBUUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsR0FBRUEsS0FBRSxVQUFVLFFBQU9BLEtBQUksQ0FBQUQsR0FBRUMsS0FBRSxDQUFDLElBQUUsVUFBVUEsRUFBQztBQUFFLGlCQUFPSixHQUFFLE1BQU0sUUFBTyxnQkFBZ0IsQ0FBQ0UsR0FBRSxVQUFVLEdBQUVDLElBQUUsS0FBRSxDQUFDO0FBQUEsUUFBQztBQUFDLGlCQUFTLEVBQUVELElBQUU7QUFBQyxpQkFBTyxTQUFTQyxJQUFFO0FBQUMscUJBQVFDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLEdBQUVBLEtBQUUsVUFBVSxRQUFPQSxLQUFJLENBQUFELEdBQUVDLEtBQUUsQ0FBQyxJQUFFLFVBQVVBLEVBQUM7QUFBRSxZQUFBRixHQUFFRCxFQUFDLEVBQUUsUUFBUyxTQUFTQSxJQUFFO0FBQUMscUJBQU9GLEdBQUUsTUFBTSxRQUFPLGdCQUFnQixDQUFDRSxFQUFDLEdBQUVFLElBQUUsS0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFFO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQyxZQUFJLElBQUUsRUFBQyxTQUFRLFNBQVNGLElBQUU7QUFBQyxtQkFBUUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsR0FBRUEsS0FBRSxVQUFVLFFBQU9BLEtBQUksQ0FBQUQsR0FBRUMsS0FBRSxDQUFDLElBQUUsVUFBVUEsRUFBQztBQUFFLG1CQUFRQyxLQUFFLEdBQUVDLEtBQUVKLEdBQUUsU0FBUUcsS0FBRUMsR0FBRSxRQUFPRCxNQUFJO0FBQUMsZ0JBQUksSUFBRUMs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SUFBRSxFQUFFQyxJQUFFLENBQUMsS0FBSyxZQUFZLEdBQUUsRUFBRSxDQUFDLEtBQUssZ0JBQWUsQ0FBQyxHQUFFQyxHQUFFQyxJQUFFLEdBQUVMLElBQUVILEdBQUUsS0FBRyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsR0FBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUVLO0FBQUEsUUFBQyxHQUFFLFVBQVMsU0FBU0gsSUFBRUYsSUFBRTtBQUFDLGlCQUFPLEVBQUUsQ0FBQyxLQUFLLGFBQWEsR0FBRSxTQUFTQSxHQUFFRyxJQUFFQyxJQUFFO0FBQUMsZ0JBQUdELEdBQUUsU0FBTyxHQUFFO0FBQUMsa0JBQUlFLEtBQUVILEdBQUUsU0FBUyxTQUFPQyxHQUFFLFNBQU87QUFBRSxxQkFBTyxFQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFLEVBQUMsSUFBR0MsR0FBRSxJQUFHLEtBQUlBLEdBQUUsS0FBSSxPQUFNQSxHQUFFLE9BQU0sUUFBTyxLQUFJLENBQUMsR0FBRSxFQUFFRCxHQUFFLENBQUMsRUFBRSxTQUFPLEdBQUUsQ0FBQyxLQUFLLFlBQVksR0FBRUgsR0FBRUcsR0FBRSxNQUFNLENBQUMsR0FBRSxFQUFDLElBQUdDLEdBQUUsS0FBRyxHQUFFLEtBQUlBLEdBQUUsS0FBSSxPQUFNQSxHQUFFLE9BQU0sUUFBT0EsR0FBRSxPQUFNLENBQUMsR0FBRSxFQUFFQyxLQUFFLElBQUUsQ0FBQyxLQUFLLE9BQU1BLEVBQUMsSUFBRSxDQUFDLEtBQUssR0FBRyxHQUFFLENBQUMsS0FBSyxZQUFZLEdBQUUsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFBQSxZQUFDO0FBQUMsZ0JBQUdELEdBQUUsU0FBT0EsR0FBRSxNQUFNLFNBQU8sRUFBRSxRQUFPLEVBQUUsQ0FBQyxLQUFLLE9BQU1GLEdBQUUsU0FBUyxTQUFPLEdBQUVFLEdBQUUsTUFBTSxNQUFNLEdBQUVBLEdBQUUsTUFBTSxJQUFLLFNBQVNGLElBQUU7QUFBQyxxQkFBT0UsR0FBRSxLQUFHRjtBQUFBLFlBQUMsQ0FBRSxDQUFDO0FBQUUsZ0JBQUdFLEdBQUUsUUFBTztBQUFDLGtCQUFJRSxLQUFFLEVBQUUsT0FBRyxPQUFPLEtBQUtGLEdBQUUsR0FBRyxHQUFFQSxHQUFFLE1BQU07QUFBRSxxQkFBTyxFQUFFLENBQUMsS0FBSyxnQkFBZUYsR0FBRSxTQUFTLE1BQU0sR0FBRUssR0FBRUQsSUFBRUosR0FBRSxTQUFTLFNBQU8sR0FBRUUsR0FBRSxLQUFJQSxHQUFFLEVBQUUsQ0FBQztBQUFBLFlBQUM7QUFBQyxtQkFBTyxFQUFFLENBQUMsS0FBSyxNQUFLRixHQUFFLFNBQVMsTUFBTSxHQUFFLENBQUMsS0FBSyxHQUFHLENBQUM7QUFBQSxVQUFDLEVBQUVBLEdBQUUsVUFBUyxFQUFDLElBQUdGLEdBQUUsS0FBRyxHQUFFLEtBQUlBLEdBQUUsS0FBSSxPQUFNLENBQUMsR0FBRSxRQUFPQSxHQUFFLE9BQU0sQ0FBQyxDQUFDO0FBQUEsUUFBQyxHQUFFLFNBQVEsU0FBU0UsSUFBRUUsSUFBRTtBQUFDLGNBQUlDLEtBQUVELEdBQUUsS0FBSUUsS0FBRUosR0FBRSxPQUFNTSxLQUFFSixHQUFFLEtBQUc7QUFBRSxVQUFBRSxPQUFJRCxLQUFFLEVBQUVELEdBQUUsR0FBRyxHQUFFQSxHQUFFLElBQUlFLEVBQUMsSUFBRUUsS0FBR04sR0FBRSxRQUFNRSxHQUFFLE1BQU0sS0FBS0ksRUFBQztBQUFFLGNBQUlDLEtBQUUsRUFBRVAsR0FBRSxZQUFXLEVBQUMsSUFBR0UsR0FBRSxJQUFHLEtBQUlDLElBQUUsUUFBTyxLQUFJLENBQUM7QUFBRSxpQkFBT0MsTUFBR0osR0FBRSxpQkFBZUYsTUFBRyxxQkFBbUJBLEdBQUUsU0FBTyxFQUFFLENBQUMsS0FBSyx1QkFBc0JRLElBQUUsRUFBRSxJQUFJRixFQUFDLEdBQUUsRUFBRUosR0FBRSxhQUFhLENBQUMsR0FBRU8sSUFBRSxDQUFDLEtBQUssc0JBQXFCRCxFQUFDLENBQUMsSUFBRUM7QUFBQSxRQUFDLEdBQUUsTUFBSyxTQUFTUCxJQUFFRixJQUFFO0FBQUMsaUJBQU8sRUFBRSxDQUFDLEtBQUssYUFBYSxHQUFFLEVBQUVFLEdBQUUsWUFBVyxFQUFDLElBQUdGLEdBQUUsS0FBRyxHQUFFLEtBQUksRUFBRUEsR0FBRSxHQUFHLEdBQUUsUUFBTyxLQUFJLENBQUMsR0FBRSxFQUFFRSxHQUFFLFNBQU8sR0FBRSxDQUFDLEtBQUssWUFBWSxHQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQUEsUUFBQyxHQUFFLFlBQVcsU0FBU0EsSUFBRUYsSUFBRTtBQUFDLGlCQUFPLEVBQUVFLEdBQUUsWUFBVyxPQUFHRixFQUFDO0FBQUEsUUFBQyxHQUFFLFlBQVcsU0FBU0UsSUFBRUYsSUFBRTtBQUFDLGlCQUFPLEVBQUVFLEdBQUUsWUFBVyxNQUFHRixFQUFDO0FBQUEsUUFBQyxHQUFFLFVBQVMsU0FBU0UsSUFBRUYsSUFBRTtBQUFDLGlCQUFPLEVBQUUsRUFBRUUsR0FBRSxZQUFXLEVBQUMsSUFBR0YsR0FBRSxJQUFHLEtBQUksRUFBRUEsR0FBRSxHQUFHLEdBQUUsUUFBTyxLQUFJLENBQUMsR0FBRSxFQUFFLEVBQUVFLEdBQUUsV0FBVyxTQUFPLElBQUcsQ0FBQyxLQUFLLFFBQVEsR0FBRSxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUUsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsUUFBQyxHQUFFLGNBQWEsU0FBU0EsSUFBRUYsSUFBRTtBQUFDLGNBQUlHLEtBQUUsRUFBRUQsR0FBRSxZQUFXLEVBQUMsSUFBR0YsR0FBRSxLQUFHLEdBQUUsS0FBSSxFQUFFQSxHQUFFLEdBQUcsR0FBRSxRQUFPLEtBQUksQ0FBQztBQUFFLGlCQUFPLEVBQUUsQ0FBQyxLQUFLLGdCQUFnQixHQUFFRyxJQUFFLEVBQUVBLEVBQUMsR0FBRSxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQUEsUUFBQyxHQUFFLGFBQVksU0FBU0QsSUFBRUYsSUFBRTtBQUFDLGNBQUlHLEtBQUUsRUFBRUQsR0FBRSxZQUFX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RUc7QUFBRSxtQkFBT0gsS0FBRSxJQUFHRyxLQUFFLElBQUcsR0FBRyxHQUFFQSxLQUFFLEVBQUUsVUFBVUEsSUFBRSxFQUFFLEdBQUUsS0FBR0gsSUFBRSxHQUFHRyxFQUFDO0FBQUEsVUFBQyxFQUFFLEdBQUVFLEtBQUUsV0FBVTtBQUFDLGdCQUFJTCxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFJTixLQUFFLElBQUdHLEtBQUUsSUFBR0UsS0FBRSxDQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUlDLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUcsQ0FBQUQsR0FBRSxLQUFLQyxFQUFDLEdBQUUsRUFBRSxTQUFPLE1BQUlBLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRTtBQUFHLG1CQUFPSCxLQUFFLEVBQUUsVUFBVUEsSUFBRSxFQUFFLEdBQUUsS0FBR0gsSUFBRSxHQUFHRyxFQUFDO0FBQUEsVUFBQyxFQUFFLEdBQUUsS0FBR0gsSUFBRSxHQUFHRyxJQUFFRSxFQUFDO0FBQUEsUUFBQyxFQUFDLEdBQUUsSUFBRSxJQUFHLElBQUUsVUFBUyxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLE1BQUssSUFBRSxLQUFJRSxLQUFFLEtBQUksSUFBRSxRQUFPLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxNQUFLLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsTUFBSyxJQUFFLFFBQU8sSUFBRSxNQUFLLElBQUUsTUFBSyxJQUFFLE1BQUssSUFBRSxNQUFLLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLEtBQUksSUFBRSxLQUFJLElBQUUsS0FBSSxJQUFFLFVBQVMsSUFBRSxXQUFVLElBQUUsU0FBUSxJQUFFLDhEQUE2RCxJQUFFLHVCQUFzQixJQUFFLHNCQUFxQixJQUFFLDJzSUFBMHNJLElBQUUsMGhGQUF5aEYsS0FBRywyQkFBMEIsS0FBRywyQkFBMEIsS0FBRyw2QkFBNEIsS0FBRyxXQUFVLEtBQUcsWUFBVyxLQUFHLFVBQVMsS0FBRyxjQUFhLEtBQUcsU0FBUSxLQUFHLEVBQUMsTUFBSyxNQUFLLEdBQUUsS0FBRyxHQUFHLFVBQVMsS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxNQUFLLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxRQUFPLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsS0FBSSxLQUFJLEdBQUcsR0FBRSxPQUFHLEtBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUksR0FBRyxHQUFFLEdBQUcsR0FBRSxPQUFHLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLE1BQUssS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUksR0FBRyxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxZQUFZLEdBQUUsS0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQUssSUFBSSxHQUFFLEtBQUksUUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLFVBQUksUUFBUSxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLE1BQUssTUFBSyxVQUFTLFFBQVEsR0FBRSxPQUFHLEtBQUUsR0FBRSxLQUFHLEdBQUcsYUFBYSxHQUFFLEtBQUcsR0FBRyxNQUFLLEtBQUUsR0FBRSxLQUFHLEdBQUcsUUFBTyxLQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsTUFBSyxDQUFDLFVBQVMsUUFBUSxDQUFDLEdBQUUsT0FBRyxLQUFFLEdBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRSxLQUFHLEdBQUcsTUFBSyxLQUFFLEdBQUUsS0FBRyxHQUFHLE1BQUssS0FBRSxHQUFFLEtBQUcsR0FBRyxNQUFLLEtBQUUsR0FBRSxLQUFHLEdBQUcsWUFBWSxHQUFFLEtBQUcsR0FBRyxDQUFDLENBQUMsS0FBSSxHQUFHLEdBQUUsS0FBSSxDQUFDLEtBQUksR0FBRyxHQUFFLFFBQUksUUFBSSxRQUFJLENBQUMsUUFBSSxNQUFHLEdBQUUsQ0FBQyxRQUFJLE1BQUcsR0FBRSxDQUFDLFFBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxDQUFDLEdBQUUsT0FBRyxLQUFFLEdBQUUsS0FBRyxHQUFHLE1BQUssS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLEtBQUksQ0FBQyxLQUFJLEdBQUcsR0FBRSxLQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksVUFBSSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxVQUFJLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLFVBQUksQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsVUFBSSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxVQUFJLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxDQUFDLFVBQUksUUFBRyxHQUFFLENBQUMsVUFBSSxRQUFHLEdBQUUsQ0FBQyxVQUFJLFFBQUcsR0FBRSxRQUFHLEdBQUUsT0FBRyxLQUFFLEdBQUUsS0FBRyxHQUFHLFNBQVMsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLFFBQVEsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLE1BQUssTUFBSyxLQUFJLE1BQUssQ0FBQyxVQUFTLFFBQVEsQ0FBQyxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLE1BQUssTUFBSyxLQUFJLE1BQUssQ0FBQyxVQUFTLFFBQVEsQ0FBQyxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxpQkFBaUIsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsTUFBSyxNQUFLLENBQUMsTUFBSyxHQUFHLEdBQUUsQ0FBQyxVQUFTLFFBQVEsQ0FBQyxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQyxLQUFJLEtBQUksSUFBSSxHQUFFLE9BQUcsS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsS0FBSSxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxDQUFDLENBQUMsS0FBSSxHQUFHLEdBQUUsS0FBSSxHQUFHLEdBQUUsT0FBRyxLQUFFLEdBQUUsS0FBRyxHQUFHLEtBQUksS0FBRSxHQUFFLEtBQUcsR0FBRyxLQUFJLEtBQUUsR0FBRSxLQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUksR0FBRyxDQUFDLEdBQUUsT0FBRyxLQUFFLEdBQUUsS0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFJLEdBQUcsR0FBRSxDQUFDLEtBQUksR0FBRyxDQUFDLEdBQUUsT0FBRyxJQUFFLEdBQUUsS0FBRyxHQUFHLFlBQVksR0FBRSxLQUFHLEdBQUcsQ0FBQyxLQUFJLEdBQUcsR0FBRSxPQUFHLEtBQUUsR0FBRSxLQUFHLFNBQVNMLElBQUVGLElBQUVHLElBQUVDLElBQUU7QUFBQyxpQkFBTSxFQUFDLE1BQUssV0FBVSxTQUFRRixJQUFFLHFCQUFvQkYsSUFBRSxhQUFZRyxJQUFFLE9B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RSxJQUFFQztBQUFFLG1CQUFPTixLQUFFLElBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJRSxLQUFFLEdBQUcsT0FBSyxLQUFHLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0MsS0FBRUMsSUFBRSxTQUFPRCxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsR0FBRyxNQUFJLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHSyxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0E7QUFBQSxVQUFDLEVBQUUsR0FBRVEsT0FBSSxJQUFFSCxLQUFFRyxNQUFHLEtBQUdILElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLE9BQU1DLEtBQUUsSUFBR0UsS0FBRSxHQUFHLEdBQUVDLEtBQUUsV0FBVTtBQUFDLGdCQUFJUCxJQUFFRjtBQUFFLG1CQUFPRSxLQUFFLEtBQUlGLEtBQUUsR0FBRyxPQUFLLEtBQUcsR0FBRyxNQUFJLEtBQUcsS0FBR0UsSUFBRUEsS0FBRSxHQUFHRixFQUFDLE1BQUksS0FBR0UsSUFBRUEsS0FBRSxJQUFHQTtBQUFBLFVBQUMsRUFBRSxHQUFFTyxPQUFJLElBQUVILEtBQUVHLE1BQUcsS0FBR0gsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTUUsS0FBRSxHQUFHLEdBQUVDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLEtBQUlDLEtBQUUsR0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFFRCxLQUFFQyxPQUFJLEtBQUdELElBQUVBLEtBQUUsSUFBR0EsT0FBSSxFQUFFLFFBQUtBLE9BQUksSUFBRyxDQUFBRCxHQUFFLEtBQUtDLEVBQUMsR0FBRUEsS0FBRSxLQUFJQyxLQUFFLEdBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRUQsS0FBRUMsT0FBSSxLQUFHRCxJQUFFQSxLQUFFO0FBQUEsY0FBUSxDQUFBRCxLQUFFO0FBQUUsaUJBQU9BLE9BQUksS0FBRyxLQUFHVCxJQUFFQSxLQUFFLEdBQUdHLElBQUVFLElBQUVDLElBQUVHLEVBQUMsTUFBSSxLQUFHVCxJQUFFQSxLQUFFLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJRSxJQUFFRjtBQUFFLGVBQUlFLEtBQUUsQ0FBQyxHQUFFRixLQUFFLEdBQUcsR0FBRUEsT0FBSSxJQUFHLENBQUFFLEdBQUUsS0FBS0YsRUFBQyxHQUFFQSxLQUFFLEdBQUc7QUFBRSxpQkFBT0U7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlGLElBQUVHLElBQUVFLElBQUVDLElBQUVFLElBQUVPLElBQUVDLElBQUVDO0FBQUUsaUJBQU9qQixLQUFFLElBQUcsR0FBRyxHQUFFLEVBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHRyxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsR0FBRyxHQUFFRSxLQUFFLFdBQVU7QUFBQyxnQkFBSUwsSUFBRUcsSUFBRUUsSUFBRUMsSUFBRUU7QUFBRSxvQkFBT1IsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxJQUFHRyxLQUFFLFdBQVU7QUFBQyxrQkFBSUQsSUFBRUY7QUFBRSxxQkFBT0UsS0FBRSxLQUFJRixLQUFFLEdBQUcsT0FBSyxNQUFJLEtBQUdFLElBQUVGLEtBQUUsR0FBR0EsRUFBQyxJQUFHRSxLQUFFRjtBQUFBLFlBQUMsRUFBRSxHQUFFRyxPQUFJLEtBQUdFLEtBQUUsSUFBRyxHQUFHLEdBQUUsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsSUFBR0UsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHLElBQUdBLE9BQUksSUFBRUgsS0FBRUcsTUFBRyxLQUFHSCxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxLQUFHTCxJQUFFQSxLQUFFLEdBQUdHLElBQUVFLEVBQUMsTUFBSSxLQUFHTCxJQUFFQSxLQUFFLEtBQUlBO0FBQUEsVUFBQyxFQUFFLEdBQUVLLE9BQUksS0FBR0MsS0FBRSxHQUFHLEdBQUVFLEtBQUUsV0FBVTtBQUFDLGdCQUFJUixJQUFFRyxJQUFFRTtBQUFFLG1CQUFPTCxLQUFFLElBQUcsRUFBRSxPQUFPLElBQUcsQ0FBQyxNQUFJLEtBQUdHLEtBQUUsR0FBRSxNQUFJLE1BQUlBLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLElBQUdFLEtBQUUsR0FBRyxPQUFLLElBQUVMLEtBQUVLLE1BQUcsS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0E7QUFBQSxVQUFDLEVBQUUsR0FBRVEsT0FBSSxLQUFHTyxLQUFFLElBQUdDLEtBQUUsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0MsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksSUFBRUYsS0FBRUMsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0YsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxLQUFHZixJQUFFQSxLQUFFLEdBQUdLLElBQUVHLEVBQUMsTUFBSSxLQUFHUixJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLElBQUcsR0FBRyxHQUFFLEVBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHRyxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsR0FBRyxJQUFHRSxLQUFFLEdBQUcsT0FBSyxLQUFHQyxLQUFFLElBQUdFLEtBQUUsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR08sS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksSUFBRVQsS0FBRUUsS0FBRSxDQUFDQSxJQUFFTyxFQUFDLEtBQUcsS0FBR1QsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxLQUFHTixJQUFFQSxLQUFFLEdBQUdLLEVBQUMsTUFBSSxLQUFHTCxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxLQUFJQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUcsSUFBRUUsSUFBRUM7QUFBRSxpQkFBT04sS0FBRSxJQUFHLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxPQUFPLElBQUcsQ0FBQyxNQUFJLEtBQUdFLEtBQUUsR0FBRSxNQUFJLE1BQUlBLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLElBQUdDLEtBQUUsR0FBRyxPQUFLLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHTSxFQUFDLE1BQUksS0FBR04sSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRTtBQUFFLGlCQUFPUixLQUFFLElBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdFLEtBQUVFLElBQUUsU0FBT0YsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEtBQUdMLElBQUVBLEtBQUUsR0FBRyxNQUFJLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxJQUFHLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLEdBQUVFLEtBQUUsV0FBVTtBQUFDLGdCQUFJTCxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQztBQUFFLGlCQUFJVCxLQUFFLElBQUdHLEtBQUUsQ0FBQyxHQUFFRSxLQUFFLEdBQUcsR0FBRUEsT0FBSSxJQUFHLENBQUFGLEdBQUUsS0FBS0UsRUFBQyxHQUFFQSxLQUFFLElBQUdDLEtBQUUsSUFBR0UsS0FBRSxHQUFHLEdBQUUsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxJQUFFSCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLElBQUUsR0FBRyxDQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsR0FBRyxPQUFLLEtBQUcsS0FBR0QsSUFBRUEsS0FBRSxLQUFHQSxLQUFFQztBQUFFLG1CQUFPSCxHQUFFLFNBQU8sS0FBRyxLQUFHSCxJQUFFQSxLQUFFLEtBQUdBLEtBQUVHLElBQUVIO0FBQUEsVUFBQyxFQUFFLEdBQUVLLE9BQUksS0FBRyxHQUFHLEdBQUVDLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdFLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVGLEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRSxHQUFHLENBQUMsS0FBRyxLQUFHRixJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxPQUFNLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0UsS0FBRUQsSUFBRSxTQUFPQyxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVSLEtBQUVLLE1BQUcsS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLEtBQUlBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFPTixLQUFFLElBQUdHLEtBQUUsV0FBVTtBQUFDLGdCQUFJRCxJQUFFRjtBQUFFLG9CQUFPRSxLQUFFLEdBQUcsT0FBSyxNQUFJQSxLQUFFLEtBQUlGLEtBQUUsR0FBRyxPQUFLLE1BQUksS0FBR0UsSUFBRUYsS0FBRSxHQUFHQSxFQUFDLElBQUdFLEtBQUVGLEtBQUdFO0FBQUEsVUFBQyxFQUFFLEdBQUVDLE9BQUksS0FBRyxHQUFHLEdBQUUsRUFBRSxPQUFPLElBQUcsQ0FBQyxNQUFJLEtBQUdFLEtBQUUsR0FBRSxNQUFJLE1BQUlBLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLElBQUdDLEtBQUUsR0FBRyxPQUFLLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHRyxJQUFFRyxFQUFDLE1BQUksS0FBR04sSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxLQUFJRyxLQUFFLEdBQUcsT0FBSyxNQUFJLEtBQUdILElBQUVHLEtBQUUsR0FBR0EsRUFBQyxJQUFHSCxLQUFFRyxLQUFHSDtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUUsSUFBRUY7QUFBRSxpQkFBT0UsS0FBRSxLQUFJRixLQUFFLEdBQUcsT0FBSyxNQUFJLEtBQUdFLElBQUVGLEtBQUUsR0FBR0EsRUFBQyxJQUFHQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUUsSUFBRUY7QUFBRSxpQkFBT0UsS0FBRSxJQUFHRixLQUFFLFdBQVU7QUFBQyxnQkFBSUUsSUFBRUY7QUFBRSxtQkFBT0UsS0FBRSxLQUFJRixLQUFFLEdBQUcsT0FBSyxNQUFJLEtBQUdFLElBQUVGLEtBQUUsR0FBR0EsRUFBQyxJQUFHRSxLQUFFRjtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUksS0FBR0UsSUFBRUYsS0FBRSxHQUFHQSxFQUFDLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRTtBQUFFLGlCQUFPUixLQUFFLEtBQUlHLEtBQUUsR0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFFRSxLQUFFLEtBQUlDLEtBQUUsR0FBRyxPQUFLLEtBQUcsR0FBRyxHQUFFRCxLQUFFQyxPQUFJLEtBQUdELElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLE9BQU0sT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsSUFBR0UsS0FBRSxHQUFHLE9BQUssS0FBRyxHQUFHLE1BQUksS0FBRyxLQUFHUixJQUFFQSxLQUFFLEdBQUdHLElBQUVFLElBQUVHLEVBQUMsTUFBSSxLQUFHUixJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFLElBQUVDLElBQUVFLElBQUVDO0FBQUUsY0FBR1QsS0FBRSxLQUFJRyxLQUFFLEdBQUcsT0FBSyxHQUFFO0FBQUMsaUJBQUlFLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLElBQUcsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0UsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLElBQUdDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVHLE1BQUcsS0FBR0gsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxJQUFHLENBQUFELEdBQUUsS0FBS0MsRUFBQyxHQUFFQSxLQUFFLElBQUcsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0UsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLElBQUdDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVHLE1BQUcsS0FBR0gsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUU7QUFBRyxpQkFBR04sSUFBRUEsS0FBRSxHQUFHRyxJQUFFRSxFQUFDO0FBQUEsVUFBQyxNQUFNLE1BQUdMLElBQUVBLEtBQUU7QUFBRSxpQkFBT0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlFLElBQUVGLElBQUVHLElBQUVFO0FBQUUsaUJBQU9ILEtBQUUsSUFBR0YsS0FBRSxXQUFVO0FBQUMsZ0JBQUlFLElBQUVGLElBQUVHLElBQUVFLElBQUVDO0FBQUUsZ0JBQUdKLEtBQUUsS0FBSUYsS0FBRSxHQUFHLE9BQUssR0FBRTtBQUFDLG1CQUFJRyxLQUFFLENBQUMsR0FBRUUsS0FBRSxJQUFHLEdBQUcsSUFBR0MsS0FBRSxHQUFHLE9BQUssSUFBRUQsS0FBRUMsTUFBRyxLQUFHRCxJQUFFQSxLQUFFLElBQUdBLE9BQUksSUFBRyxDQUFBRixHQUFFLEtBQUtFLEVBQUMsR0FBRUEsS0FBRSxJQUFHLEdBQUcsSUFBR0MsS0FBRSxHQUFHLE9BQUssSUFBRUQsS0FBRUMsTUFBRyxLQUFHRCxJQUFFQSxLQUFFO0FBQUcsbUJBQUdILElBQUVBLEtBQUUsR0FBR0YsSUFBRUcsRUFBQztBQUFBLFlBQUMsTUFBTSxNQUFHRCxJQUFFQSxLQUFFO0FBQUUsbUJBQU9BO0FBQUEsVUFBQyxFQUFFLEdBQUVGLE9BQUksS0FBR0csS0FBRSxJQUFHLEdBQUcsSUFBR0UsS0FBRSxHQUFHLE9BQUssSUFBRUYsS0FBRUUsTUFBRyxLQUFHRixJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxPQUFNLEtBQUdELElBQUVBLEtBQUUsR0FBR0YsSUFBRUcsRUFBQyxNQUFJLEtBQUdELElBQUVBLEtBQUUsSUFBR0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlGLElBQUVHLElBQUVFLElBQUVDO0FBQUUsaUJBQU9OLEtBQUUsSUFBR0csS0FBRSxXQUFVO0FBQUMsZ0JBQUlILElBQUVHO0FBQUUsbUJBQU9ILEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUksS0FBR0gsSUFBRUcsS0FBRSxHQUFHLElBQUdILEtBQUVHO0FBQUEsVUFBQyxFQUFFLEdBQUVBLE9BQUksTUFBSUUsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxRQUFPQyxLQUFFLEdBQUcsT0FBSyxLQUFHLEtBQUdOLElBQUVBLEtBQUUsR0FBR0csSUFBRUUsSUFBRUMsRUFBQyxNQUFJLEtBQUdOLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxLQUFJRyxLQUFFLEdBQUcsT0FBSyxNQUFJRSxLQUFFLEdBQUcsT0FBSyxLQUFHLEtBQUdMLElBQUVBLEtBQUUsR0FBR0csSUFBRUUsRUFBQyxNQUFJLEtBQUdMLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEdBQUcsS0FBSUE7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFO0FBQUUsaUJBQU9MLEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssS0FBRyxHQUFHLEdBQUUsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRSxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsR0FBRSxLQUFHTCxJQUFFQSxLQUFFLEdBQUdHLEVBQUMsTUFBSSxLQUFHSCxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUcsSUFBRUU7QUFBRSxpQkFBT0wsS0FBRSxJQUFHRyxLQUFFLFdBQVU7QUFBQyxnQkFBSUg7QUFBRSxtQkFBT0EsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEVBQUUsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBO0FBQUEsVUFBQyxFQUFFLEdBQUVHLE9BQUksS0FBRyxHQUFHLElBQUdFLEtBQUUsR0FBRyxPQUFLLEtBQUcsS0FBR0wsSUFBRUEsS0FBRSxHQUFHRyxJQUFFRSxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEdBQUcsSUFBR0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFO0FBQUUsaUJBQU9MLEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssS0FBRyxHQUFHLEdBQUVFLEtBQUUsV0FBVTtBQUFDLGdCQUFJTDtBQUFFLG1CQUFPQSxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0E7QUFBQSxVQUFDLEVBQUUsR0FBRUssT0FBSSxLQUFHLEtBQUdMLElBQUVBLEtBQUUsR0FBR0csSUFBRUUsRUFBQyxNQUFJLEtBQUdMLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxXQUFVO0FBQUMsZ0JBQUlBLElBQUVHLElBQUVFLElBQUVDLElBQUVFLElBQUVDLElBQUVDO0FBQUUsbUJBQU9WLEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssS0FBRyxHQUFHLEdBQUUsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHRSxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsR0FBRUMsS0FBRSxXQUFVO0FBQUMsa0JBQUlOLElBQUVHLElBQUVFLElBQUVDO0FBQUUscUJBQU9OLEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxPQUFNLEdBQUcsR0FBRSxFQUFFLE9BQU8sSUFBRyxDQUFDLE1BQUksS0FBR0UsS0FBRSxHQUFFLE1BQUksTUFBSUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHLEdBQUcsSUFBR0MsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxPQUFNLEtBQUdOLElBQUVBLEtBQUUsR0FBR0csSUFBRUcsRUFBQyxNQUFJLEtBQUdOLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEtBQUlHLEtBQUUsR0FBRyxPQUFLLE1BQUksS0FBR0gsSUFBRUcsS0FBRSxHQUFHQSxFQUFDLElBQUdILEtBQUVHLEtBQUdIO0FBQUEsWUFBQyxFQUFFLEdBQUVNLE9BQUksS0FBRyxHQUFHLEdBQUVFLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdDLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsR0FBRyxJQUFHQyxLQUFFLEdBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRUYsS0FBRUUsT0FBSSxLQUFHRixJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdDLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsS0FBR1QsSUFBRUEsS0FBRSxHQUFHRyxJQUFFRyxJQUFFRSxFQUFDLE1BQUksS0FBR1IsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQTtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsR0FBRyxLQUFJQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUc7QUFBRSxpQkFBT0gsS0FBRSxJQUFHRyxLQUFFLFdBQVU7QUFBQyxnQkFBSUgsSUFBRUcsSUFBRUUsSUFBRUM7QUFBRSxnQkFBR04sS0FBRSxJQUFHRyxLQUFFLElBQUdFLEtBQUUsQ0FBQyxJQUFHQyxLQUFFLEdBQUcsT0FBSyxFQUFFLFFBQUtBLE9BQUksSUFBRyxDQUFBRCxHQUFFLEtBQUtDLEVBQUMsR0FBRUEsS0FBRSxHQUFHO0FBQUEsZ0JBQU8sQ0FBQUQsS0FBRTtBQUFFLG9CQUFPRixLQUFFRSxPQUFJLElBQUUsRUFBRSxVQUFVRixJQUFFLEVBQUUsSUFBRUUsUUFBSyxNQUFJLEtBQUdMLElBQUVHLEtBQUUsR0FBR0EsRUFBQyxJQUFHSCxLQUFFRztBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUksS0FBR0gsSUFBRUcsS0FBRSxHQUFHQSxFQUFDLEtBQUlILEtBQUVHLFFBQUssTUFBSUgsS0FBRSxLQUFJRyxLQUFFLEdBQUcsT0FBSyxNQUFJLEtBQUdILElBQUVHLEtBQUUsR0FBR0EsRUFBQyxLQUFJSCxLQUFFRyxRQUFLLE1BQUlILEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssTUFBSSxLQUFHSCxJQUFFRyxLQUFFLEdBQUdBLEVBQUMsSUFBR0gsS0FBRUcsTUFBSUg7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFLElBQUVDO0FBQUUsaUJBQU9OLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRyxJQUFFRTtBQUFFLG1CQUFPLE1BQUtMLEtBQUUsS0FBSUcsS0FBRSxHQUFHLE9BQUssS0FBRyxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdFLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxLQUFHTCxJQUFFQSxLQUFFLEdBQUdHLElBQUVFLEVBQUMsTUFBSSxLQUFHTCxJQUFFQSxLQUFFLElBQUcsTUFBS0EsT0FBSSxNQUFJRyxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHSDtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQztBQUFFLGdCQUFHLE1BQUtULEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEdBQUU7QUFBQyxtQkFBSSxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdFLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTUMsS0FBRSxDQUFDLElBQUdFLEtBQUUsR0FBRyxPQUFLLE1BQUlBLEtBQUUsR0FBRyxJQUFHQSxPQUFJLElBQUcsQ0FBQUYsR0FBRSxLQUFLRSxFQUFDLElBQUdBLEtBQUUsR0FBRyxPQUFLLE1BQUlBLEtBQUUsR0FBRztBQUFHLHFCQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdBLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLE9BQU0sS0FBR1QsSUFBRUEsS0FBRSxHQUFHSyxJQUFFQyxJQUFFRyxFQUFDLE1BQUksS0FBR1QsSUFBRUEsS0FBRTtBQUFBLFlBQUUsTUFBTSxNQUFHQSxJQUFFQSxLQUFFO0FBQUUsbUJBQU8sTUFBS0EsT0FBSSxNQUFJRyxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHSDtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRztBQUFFLG1CQUFPSCxLQUFFLElBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJLEtBQUdILElBQUVHLEtBQUUsR0FBRyxJQUFHSCxLQUFFRztBQUFBLFVBQUMsRUFBRSxHQUFFSCxPQUFJLE1BQUlBLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQyxJQUFFQztBQUFFLG1CQUFPVixLQUFFLEtBQUlHLEtBQUUsR0FBRyxPQUFLLEtBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRSxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxLQUFHLEtBQUdOLElBQUVBLEtBQUUsR0FBR0csSUFBRUcsRUFBQyxNQUFJLEtBQUdOLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxLQUFJRyxLQUFFLEdBQUcsT0FBSyxLQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxJQUFHRSxLQUFFLEdBQUcsR0FBRUMsS0FBRSxLQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFRCxLQUFFQyxLQUFFLENBQUNBLElBQUUsR0FBRyxDQUFDLEtBQUcsS0FBR0QsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsT0FBTSxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdDLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVKLEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsSUFBRUMsRUFBQyxLQUFHLEtBQUdKLElBQUVBLEtBQUUsSUFBRyxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksS0FBRyxLQUFHTCxJQUFFQSxLQUFFLEdBQUdHLEVBQUMsTUFBSSxLQUFHSCxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxLQUFJQTtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRyxJQUFFRTtBQUFFLG1CQUFPTCxLQUFFLElBQUdHLEtBQUUsV0FBVTtBQUFDLGtCQUFJSDtBQUFFLHFCQUFPQSxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0E7QUFBQSxZQUFDLEVBQUUsR0FBRUcsT0FBSSxLQUFHLEdBQUcsSUFBR0UsS0FBRSxHQUFHLE9BQUssS0FBRyxLQUFHTCxJQUFFQSxLQUFFLEdBQUdHLElBQUVFLEVBQUMsTUFBSSxLQUFHTCxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQTtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsR0FBRyxJQUFHRSxLQUFFLEdBQUcsT0FBSyxLQUFHLEdBQUcsR0FBRSxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdDLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHSyxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLFNBQVFBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQTtBQUFFLGlCQUFPLEVBQUUsU0FBTyxNQUFJQSxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBO0FBQUUsaUJBQU8sTUFBS0EsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEVBQUUsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUcsTUFBS0EsT0FBSSxLQUFHLE1BQUksTUFBSSxHQUFHLEVBQUUsR0FBRUE7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBO0FBQUUsaUJBQU9BLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxFQUFFLEtBQUtBLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUE7QUFBRSxpQkFBTyxNQUFLLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0EsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksTUFBSSxFQUFFLE9BQU8sSUFBRyxDQUFDLE1BQUksS0FBR0EsS0FBRSxHQUFFLE1BQUksTUFBSUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsTUFBSyxNQUFLQSxPQUFJLEtBQUcsTUFBSSxNQUFJLEdBQUcsRUFBRSxHQUFFQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUE7QUFBRSxpQkFBTyxPQUFNQSxLQUFFLFdBQVU7QUFBQyxnQkFBSUEsSUFBRUcsSUFBRUUsSUFBRUMsSUFBRUUsSUFBRUM7QUFBRSxnQkFBR1QsS0FBRSxJQUFHLEVBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHRyxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEdBQUU7QUFBQyxtQkFBSUUsS0FBRSxDQUFDLEdBQUVDLEtBQUUsSUFBR0UsS0FBRSxJQUFHLE1BQUssRUFBRSxPQUFPLElBQUcsQ0FBQyxNQUFJLEtBQUdDLEtBQUUsR0FBRSxNQUFJLE1BQUlBLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUcsTUFBS0EsT0FBSSxJQUFFRCxLQUFFLFVBQVEsS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsRUFBQyxLQUFHLEtBQUdILElBQUVBLEtBQUUsSUFBR0EsT0FBSSxJQUFHLENBQUFELEdBQUUsS0FBS0MsRUFBQyxHQUFFQSxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLLEVBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHQyxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHLE1BQUtBLE9BQUksSUFBRUQsS0FBRSxVQUFRLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFSCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLEVBQUMsS0FBRyxLQUFHSCxJQUFFQSxLQUFFO0FBQUcsZ0JBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHQSxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVOLEtBQUVHLEtBQUUsQ0FBQ0EsSUFBRUUsSUFBRUMsRUFBQyxLQUFHLEtBQUdOLElBQUVBLEtBQUU7QUFBQSxZQUFFLE1BQU0sTUFBR0EsSUFBRUEsS0FBRTtBQUFFLG1CQUFPQTtBQUFBLFVBQUMsRUFBRSxPQUFLLE1BQUlBLEtBQUUsR0FBRyxJQUFHLE1BQUtBLE9BQUksS0FBRyxNQUFJLE1BQUksR0FBRyxFQUFFLEdBQUVBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQztBQUFFLGNBQUdULEtBQUUsSUFBRyxFQUFFLE9BQU8sSUFBRyxDQUFDLE1BQUksS0FBR0csS0FBRSxHQUFFLE1BQUksTUFBSUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxHQUFFO0FBQUMsaUJBQUlFLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLLEVBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHQyxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsR0FBRyxJQUFHLE1BQUtBLE9BQUksSUFBRUQsS0FBRSxVQUFRLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFSCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLEVBQUMsS0FBRyxLQUFHSCxJQUFFQSxLQUFFLElBQUdBLE9BQUksSUFBRyxDQUFBRCxHQUFFLEtBQUtDLEVBQUMsR0FBRUEsS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBSyxFQUFFLE9BQU8sSUFBRyxDQUFDLE1BQUksS0FBR0MsS0FBRSxHQUFFLE1BQUksTUFBSUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEdBQUcsSUFBRyxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRTtBQUFHLGNBQUUsT0FBTyxJQUFHLENBQUMsTUFBSSxLQUFHQSxLQUFFLEdBQUUsTUFBSSxNQUFJQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVOLEtBQUVHLEtBQUUsQ0FBQ0EsSUFBRUUsSUFBRUMsRUFBQyxLQUFHLEtBQUdOLElBQUVBLEtBQUU7QUFBQSxVQUFFLE1BQU0sTUFBR0EsSUFBRUEsS0FBRTtBQUFFLGlCQUFPQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUcsSUFBRUUsSUFBRUMsSUFBRUUsSUFBRUM7QUFBRSxjQUFHVCxLQUFFLElBQUcsRUFBRSxPQUFPLElBQUcsQ0FBQyxNQUFJLEtBQUdHLEtBQUUsR0FBRSxNQUFJLE1BQUlBLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksR0FBRTtBQUFDLGlCQUFJRSxLQUFFLENBQUMsR0FBRUMsS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxHQUFHLEdBQUUsTUFBS0EsT0FBSSxJQUFFRCxLQUFFLFVBQVEsS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsRUFBQyxLQUFHLEtBQUdILElBQUVBLEtBQUUsSUFBR0EsT0FBSSxJQUFHLENBQUFELEdBQUUsS0FBS0MsRUFBQyxHQUFFQSxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLQyxLQUFFLEdBQUcsR0FBRSxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRTtBQUFHLFlBQUFOLEtBQUVHLEtBQUUsQ0FBQ0EsSUFBRUUsRUFBQztBQUFBLFVBQUMsTUFBTSxNQUFHTCxJQUFFQSxLQUFFO0FBQUUsaUJBQU9BO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJRSxJQUFFRixJQUFFRyxJQUFFRTtBQUFFLGNBQUcsTUFBS0gsS0FBRSxLQUFJRixLQUFFLEdBQUcsT0FBSyxHQUFFO0FBQUMsaUJBQUlHLEtBQUUsQ0FBQyxHQUFFRSxLQUFFLEdBQUcsR0FBRUEsT0FBSSxJQUFHLENBQUFGLEdBQUUsS0FBS0UsRUFBQyxHQUFFQSxLQUFFLEdBQUc7QUFBRSxpQkFBR0gsSUFBRUEsS0FBRSxHQUFHRixJQUFFRyxFQUFDO0FBQUEsVUFBQyxNQUFNLE1BQUdELElBQUVBLEtBQUU7QUFBRSxpQkFBTyxNQUFLQSxPQUFJLE1BQUlGLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdFO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJRixJQUFFRyxJQUFFRTtBQUFFLGlCQUFPTCxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsRUFBRSxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLElBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJRSxLQUFFLEdBQUcsT0FBSyxJQUFFTCxLQUFFSyxNQUFHLEtBQUdMLElBQUVBLEtBQUUsS0FBSUE7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBO0FBQUUsa0JBQU9BLEtBQUUsR0FBRyxPQUFLLE1BQUlBLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxFQUFFLEtBQUtBLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxLQUFJQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUcsSUFBRUUsSUFBRUM7QUFBRSxjQUFHLE1BQUtOLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEdBQUU7QUFBQyxpQkFBSUUsS0FBRSxDQUFDLEdBQUVDLEtBQUUsR0FBRyxHQUFFQSxPQUFJLElBQUcsQ0FBQUQsR0FBRSxLQUFLQyxFQUFDLEdBQUVBLEtBQUUsR0FBRztBQUFFLG1CQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdBLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHSyxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRTtBQUFBLFVBQUUsTUFBTSxNQUFHQSxJQUFFQSxLQUFFO0FBQUUsY0FBR0EsT0FBSSxFQUFFLEtBQUdBLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEdBQUU7QUFBQyxpQkFBSUUsS0FBRSxDQUFDLEdBQUVDLEtBQUUsR0FBRyxHQUFFQSxPQUFJLElBQUcsQ0FBQUQsR0FBRSxLQUFLQyxFQUFDLEdBQUVBLEtBQUUsR0FBRztBQUFFLG1CQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdBLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHSyxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRTtBQUFBLFVBQUUsTUFBTSxNQUFHQSxJQUFFQSxLQUFFO0FBQUUsaUJBQU8sTUFBS0EsT0FBSSxNQUFJRyxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHSDtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUcsSUFBRUUsSUFBRUM7QUFBRSxpQkFBT04sS0FBRSxJQUFHRyxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLQyxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsR0FBRyxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBRyxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRSxLQUFJSCxLQUFFRyxPQUFJLElBQUUsRUFBRSxVQUFVSCxJQUFFLEVBQUUsSUFBRUcsUUFBSyxNQUFJSCxLQUFFLElBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJRSxLQUFFLEdBQUcsT0FBSyxJQUFFTCxLQUFFSyxNQUFHLEtBQUdMLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLEdBQUcsS0FBSUE7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFLElBQUVDO0FBQUUsaUJBQU9OLEtBQUUsSUFBR0csS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEdBQUcsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUcsTUFBS0EsT0FBSSxJQUFFRCxLQUFFLFVBQVEsS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsRUFBQyxLQUFHLEtBQUdILElBQUVBLEtBQUUsS0FBSUgsS0FBRUcsT0FBSSxJQUFFLEVBQUUsVUFBVUgsSUFBRSxFQUFFLElBQUVHLFFBQUssTUFBSUgsS0FBRSxJQUFHLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksTUFBSUUsS0FBRSxHQUFHLE9BQUssSUFBRUwsS0FBRUssTUFBRyxLQUFHTCxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxHQUFHLEtBQUlBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFPTixLQUFFLEtBQUlHLEtBQUUsR0FBRyxPQUFLLEtBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRSxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxLQUFHLEtBQUdOLElBQUVBLEtBQUUsR0FBR0csSUFBRUcsRUFBQyxNQUFJLEtBQUdOLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFPTixLQUFFLElBQUdHLEtBQUUsSUFBR0UsS0FBRSxJQUFHLE1BQUtDLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxHQUFHLEtBQUtBLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHLE1BQUtBLE9BQUksSUFBRUQsS0FBRSxVQUFRLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFSCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLEVBQUMsS0FBRyxLQUFHSCxJQUFFQSxLQUFFLEtBQUlILEtBQUVHLE9BQUksSUFBRSxFQUFFLFVBQVVILElBQUUsRUFBRSxJQUFFRyxRQUFLLE1BQUlILEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUlFLEtBQUUsR0FBRyxPQUFLLElBQUVMLEtBQUVLLE1BQUcsS0FBR0wsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsR0FBRyxLQUFJQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUEsSUFBRUc7QUFBRSxpQkFBT0gsS0FBRSxJQUFHLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBRyxHQUFHLE1BQUksS0FBRyxLQUFHSCxJQUFFQSxLQUFFLEdBQUcsTUFBSSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFPTixLQUFFLFdBQVU7QUFBQyxnQkFBSUE7QUFBRSxvQkFBT0EsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxXQUFVO0FBQUMsa0JBQUlBLElBQUVHLElBQUVFLElBQUVDO0FBQUUscUJBQU9OLEtBQUUsSUFBR0csS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxXQUFVO0FBQUMsb0JBQUlOO0FBQUUsd0JBQU9BLEtBQUUsR0FBRyxPQUFLLE1BQUlBLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxHQUFHLEtBQUtBLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxLQUFJQTtBQUFBLGNBQUMsRUFBRSxHQUFFTSxPQUFJLE1BQUlBLEtBQUUsR0FBRyxJQUFHLE1BQUtBLE9BQUksSUFBRUQsS0FBRSxVQUFRLEtBQUdBLElBQUVBLEtBQUUsSUFBR0EsT0FBSSxNQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFSCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLEVBQUMsS0FBRyxLQUFHSCxJQUFFQSxLQUFFLElBQUdILEtBQUVHLE9BQUksSUFBRSxFQUFFLFVBQVVILElBQUUsRUFBRSxJQUFFRztBQUFBLFlBQUMsRUFBRSxJQUFHSDtBQUFBLFVBQUMsRUFBRSxHQUFFQSxPQUFJLE1BQUlBLEtBQUUsSUFBRyxPQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUdFLEtBQUUsSUFBRyxNQUFLQyxLQUFFLEdBQUcsR0FBRSxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksS0FBRyxLQUFHTCxJQUFFQSxLQUFFLEdBQUcsTUFBSSxLQUFHQSxJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlBLEtBQUUsV0FBVTtBQUFDLGdCQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQztBQUFFLG1CQUFPVCxLQUFFLElBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHRSxLQUFFLElBQUdDLEtBQUUsS0FBSUUsS0FBRSxHQUFHLE9BQUssTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRSxLQUFJRCxLQUFFQyxPQUFJLElBQUUsRUFBRSxVQUFVRCxJQUFFLEVBQUUsSUFBRUMsUUFBSyxLQUFHLEtBQUdOLElBQUVBLEtBQUUsR0FBR0ssRUFBQyxNQUFJLEtBQUdMLElBQUVBLEtBQUUsT0FBSyxLQUFHQSxJQUFFQSxLQUFFLElBQUdBO0FBQUEsVUFBQyxFQUFFLEdBQUVBLE9BQUksTUFBSUEsS0FBRSxHQUFHLE1BQUtBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRztBQUFFLGlCQUFPSCxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsR0FBRyxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJQSxLQUFFLElBQUcsT0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJLEtBQUdILElBQUVHLEtBQUUsR0FBRyxLQUFJSCxLQUFFRyxRQUFLLE1BQUlILEtBQUUsSUFBRyxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUksS0FBR0gsSUFBRUcsS0FBRSxHQUFHLEtBQUlILEtBQUVHLFFBQUssTUFBSUgsS0FBRSxJQUFHLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksTUFBSSxLQUFHSCxJQUFFRyxLQUFFLEdBQUcsS0FBSUgsS0FBRUcsUUFBSyxNQUFJSCxLQUFFLElBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHRyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxNQUFJLEtBQUdILElBQUVHLEtBQUUsR0FBRyxLQUFJSCxLQUFFRyxRQUFLLE1BQUlILEtBQUUsSUFBRyxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLE1BQUksS0FBR0gsSUFBRUcsS0FBRSxHQUFHLEtBQUlILEtBQUVHLFFBQUssTUFBSUgsS0FBRSxJQUFHLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0csS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksTUFBSSxLQUFHSCxJQUFFRyxLQUFFLEdBQUcsSUFBR0gsS0FBRUcsVUFBUUg7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBLElBQUVHLElBQUVFLElBQUVDLElBQUVFLElBQUVDLElBQUVDLElBQUVDO0FBQUUsaUJBQU9YLEtBQUUsSUFBRyxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUdFLEtBQUUsSUFBR0MsS0FBRSxLQUFJRSxLQUFFLEdBQUcsT0FBSyxNQUFJQyxLQUFFLEdBQUcsT0FBSyxNQUFJQyxLQUFFLEdBQUcsT0FBSyxNQUFJQyxLQUFFLEdBQUcsT0FBSyxJQUFFTCxLQUFFRSxLQUFFLENBQUNBLElBQUVDLElBQUVDLElBQUVDLEVBQUMsS0FBRyxLQUFHTCxJQUFFQSxLQUFFLEtBQUlELEtBQUVDLE9BQUksSUFBRSxFQUFFLFVBQVVELElBQUUsRUFBRSxJQUFFQyxRQUFLLEtBQUcsS0FBR04sSUFBRUEsS0FBRSxHQUFHSyxFQUFDLE1BQUksS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBR0E7QUFBQSxRQUFDO0FBQUMsaUJBQVMsS0FBSTtBQUFDLGNBQUlBO0FBQUUsaUJBQU9BLEtBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRSxHQUFHLEtBQUtBLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUE7QUFBRSxpQkFBT0EsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEdBQUcsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGlCQUFPLE1BQUtOLEtBQUUsSUFBRyxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdHLEtBQUUsR0FBRSxTQUFPQSxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLEtBQUdFLEtBQUUsV0FBVTtBQUFDLGdCQUFJSCxJQUFFRjtBQUFFLG1CQUFPRSxLQUFFLElBQUdGLEtBQUUsR0FBRyxHQUFFLEtBQUdFLElBQUVBLEtBQUVGLEtBQUUsR0FBR0EsRUFBQztBQUFBLFVBQUMsRUFBRSxHQUFFLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR00sS0FBRUMsSUFBRSxTQUFPRCxLQUFFLEdBQUUsTUFBSSxNQUFJLEdBQUcsRUFBRSxJQUFHQSxPQUFJLElBQUVOLEtBQUVLLE1BQUcsS0FBR0wsSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsSUFBRyxNQUFLQSxPQUFJLE1BQUlHLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdIO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJQSxJQUFFRyxJQUFFRSxJQUFFQyxJQUFFRSxJQUFFQztBQUFFLGNBQUdULEtBQUUsSUFBR0csS0FBRSxDQUFDLEdBQUVFLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLQyxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsR0FBRyxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBRyxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLEVBQUUsUUFBS0EsT0FBSSxJQUFHLENBQUFELEdBQUUsS0FBS0MsRUFBQyxHQUFFQSxLQUFFLElBQUdFLEtBQUUsSUFBRyxNQUFLQyxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUsR0FBRyxLQUFLQSxFQUFDLElBQUUsUUFBTUEsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBRyxNQUFLQSxPQUFJLElBQUVELEtBQUUsVUFBUSxLQUFHQSxJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUMsS0FBRSxHQUFHLE9BQUssSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRTtBQUFBLGNBQVEsQ0FBQUQsS0FBRTtBQUFFLGVBQUlBLE9BQUksTUFBSUEsS0FBRSxJQUFHLFFBQU0sRUFBRSxXQUFXLEVBQUUsS0FBR0MsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksS0FBR0UsS0FBRSxHQUFHLEdBQUUsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFRixJQUFFLFNBQU9FLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksSUFBRUosS0FBRUMsS0FBRSxDQUFDQSxJQUFFRSxJQUFFQyxFQUFDLEtBQUcsS0FBR0osSUFBRUEsS0FBRSxPQUFLLEtBQUdBLElBQUVBLEtBQUUsS0FBSUEsT0FBSSxLQUFHO0FBQUMsZ0JBQUdGLEdBQUUsS0FBS0UsRUFBQyxHQUFFQSxLQUFFLENBQUMsR0FBRUMsS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEdBQUcsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUcsTUFBS0EsT0FBSSxJQUFFRCxLQUFFLFVBQVEsS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsRUFBQyxLQUFHLEtBQUdILElBQUVBLEtBQUUsSUFBR0EsT0FBSSxFQUFFLFFBQUtBLE9BQUksSUFBRyxDQUFBRCxHQUFFLEtBQUtDLEVBQUMsR0FBRUEsS0FBRSxJQUFHRSxLQUFFLElBQUcsTUFBS0MsS0FBRSxFQUFFLE9BQU8sRUFBRSxHQUFFLEdBQUcsS0FBS0EsRUFBQyxJQUFFLFFBQU1BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUcsTUFBS0EsT0FBSSxJQUFFRCxLQUFFLFVBQVEsS0FBR0EsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLE1BQUlDLEtBQUUsR0FBRyxPQUFLLElBQUVILEtBQUVFLEtBQUUsQ0FBQ0EsSUFBRUMsRUFBQyxLQUFHLEtBQUdILElBQUVBLEtBQUU7QUFBQSxnQkFBUSxDQUFBRCxLQUFFO0FBQUUsWUFBQUEsT0FBSSxNQUFJQSxLQUFFLElBQUcsUUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFHQyxLQUFFLEdBQUUsU0FBT0EsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxLQUFHRSxLQUFFLEdBQUcsR0FBRSxRQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUdDLEtBQUVGLElBQUUsU0FBT0UsS0FBRSxHQUFFLE1BQUksTUFBSSxHQUFHLEVBQUUsSUFBR0EsT0FBSSxJQUFFSixLQUFFQyxLQUFFLENBQUNBLElBQUVFLElBQUVDLEVBQUMsS0FBRyxLQUFHSixJQUFFQSxLQUFFLE9BQUssS0FBR0EsSUFBRUEsS0FBRTtBQUFBLFVBQUc7QUFBQyxpQkFBTyxFQUFFLFVBQVVMLElBQUUsRUFBRTtBQUFBLFFBQUM7QUFBQyxpQkFBUyxLQUFJO0FBQUMsY0FBSUUsSUFBRUY7QUFBRSxlQUFJRSxLQUFFLENBQUMsSUFBR0YsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHLElBQUdBLE9BQUksSUFBRyxDQUFBRSxHQUFFLEtBQUtGLEVBQUMsSUFBR0EsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxHQUFHO0FBQUcsaUJBQU9FO0FBQUEsUUFBQztBQUFDLGlCQUFTLEtBQUk7QUFBQyxjQUFJRixJQUFFRyxJQUFFRSxJQUFFQztBQUFFLGNBQUdOLEtBQUUsQ0FBQyxHQUFFRyxLQUFFLElBQUdFLEtBQUUsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0MsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRSxJQUFHQSxPQUFJLEVBQUUsUUFBS0EsT0FBSSxJQUFHLENBQUFILEdBQUUsS0FBS0csRUFBQyxHQUFFQSxLQUFFLElBQUdFLEtBQUUsR0FBRyxHQUFFLE9BQUssRUFBRSxXQUFXLEVBQUUsS0FBR0MsS0FBRSxHQUFFLFNBQU9BLEtBQUUsR0FBRSxNQUFJLE1BQUksR0FBRyxFQUFFLElBQUdBLE9BQUksSUFBRUgsS0FBRUUsS0FBRSxDQUFDQSxJQUFFQyxFQUFDLEtBQUcsS0FBR0gsSUFBRUEsS0FBRTtBQUFBLGNBQVEsQ0FBQUgsS0FBRTtBQUFFLGlCQUFPQSxPQUFJLE1BQUlBLEtBQUUsSUFBR0csS0FBRSxXQUFVO0FBQUMsZ0JBQUlELElBQUVGO0FBQUUsaUJBQUlFLEtBQUUsQ0FBQyxJQUFHRixLQUFFLEdBQUcsT0FBSyxNQUFJQSxLQUFFLEdBQUcsSUFBR0EsT0FBSSxJQUFHLENBQUFFLEdBQUUsS0FBS0YsRUFBQyxJQUFHQSxLQUFFLEdBQUcsT0FBSyxNQUFJQSxLQUFFLEdBQUc7QUFBRyxtQkFBT0U7QUFBQSxVQUFDLEVBQUUsSUFBR0csS0FBRSxHQUFHLE9BQUssTUFBSUEsS0FBRSxRQUFPQyxLQUFFLEdBQUcsT0FBSyxJQUFFTixLQUFFRyxLQUFFLENBQUNBLElBQUVFLElBQUVDLEVBQUMsS0FBRyxLQUFHTixJQUFFQSxLQUFFLElBQUdBLE9BQUksTUFBSUEsS0FBRSxJQUFHRyxLQUFFLEdBQUcsR0FBRUUsS0FBRSxXQUFVO0FBQUMsZ0JBQUlMLElBQUVHO0FBQUUsbUJBQU9ILEtBQUUsSUFBRyxNQUFLLEVBQUUsU0FBTyxNQUFJRyxLQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUUs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QUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILEdBQUc7QUFDTDtBQUNBLElBQU0sVUFBVTtBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsSUFBSTtBQUFBLEVBQ0osU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsS0FBSztBQUFBLEVBQ0wsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsU0FBUztB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QUFFNUIsUUFBSSxDQUFDLEtBQUssWUFBWTtBQUNsQixXQUFLLGFBQWEsS0FBSyxjQUFjLGlCQUFpQixFQUFFLGNBQWMsR0FBRyxZQUFZO0FBQ2pGLFlBQUksQ0FBQyxLQUFLLFdBQVcsVUFBVTtBQUMzQixnQkFBTSxLQUFLLEtBQUs7QUFDaEIsZUFBSztBQUFBLFlBQ0QsS0FBSyxXQUFXO0FBQUEsWUFDaEIsS0FBSyxXQUFXO0FBQUE7QUFBQSxVQUVwQjtBQUFBLFFBQ0o7QUFBQSxNQUNKLENBQUM7QUFBQSxJQUNMO0FBQ0EsUUFBSSxRQUFRO0FBQ1IsV0FBSyxXQUFXLE1BQU0sVUFBVTtBQUFBLElBQ3BDLE9BQU87QUFDSCxXQUFLLFdBQVcsTUFBTSxVQUFVO0FBQUEsSUFDcEM7QUFBQSxFQUNKO0FBQUEsRUFFQSxjQUFjLFFBQWlCO0FBRTNCLFFBQUksQ0FBQyxLQUFLLFdBQVc7QUFDakIsV0FBSyxZQUFZLEtBQUssaUJBQWlCO0FBQ3ZDLFdBQUssVUFBVSxVQUFVLElBQUksZUFBZTtBQUM1QyxXQUFLLFVBQVUsYUFBYSxjQUFjLEVBQUUsc0JBQXNCLENBQUM7QUFDbkUsV0FBSyxVQUFVLGFBQWEsdUJBQXVCLEtBQUs7QUFDeEQsV0FBSyxVQUFVLGlCQUFpQixTQUFTLFlBQVk7QUFDakQsWUFBSSxDQUFDLEtBQUssV0FBVyxVQUFVO0FBQzNCLGdCQUFNLEtBQUssS0FBSztBQUNoQixlQUFLLHNCQUFzQixvQkFBb0I7QUFBQSxRQUNuRDtBQUFBLE1BQ0osQ0FBQztBQUFBLElBQ0w7QUFFQSxRQUFJLFFBQVE7QUFDUixXQUFLLFVBQVUsTUFBTSxVQUFVO0FBQUEsSUFDbkMsT0FBTztBQUNILFdBQUssVUFBVSxNQUFNLFVBQVU7QUFBQSxJQUNuQztBQUFBLEVBQ0o7QUFDSjsiLAogICJuYW1lcyI6IFsiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2xvYmFsIiwgImNhbGxiYWNrIiwgImlzQXJyYXkiLCAiaXNPYmplY3QiLCAiaXNOdW1iZXIiLCAibWFwIiwgImZvcm1hdCIsICJsb2NhbGUiLCAidCIsICJ0byIsICJmcm9tIiwgIk1vbWVudCIsICJpc0Z1bmN0aW9uIiwgInNldCIsICJub3ciLCAic2lnbiIsICJ0b2tlbiIsICJvcmRpbmFsIiwgImkiLCAiZGlmZiIsICJsb2NhbGVEYXRhIiwgImgiLCAiaG91cnMiLCAibWludXRlcyIsICJuYW1lcyIsICJtYXRjaCIsICJkZWZhdWx0cyIsICJ0b2tlbnMiLCAibWVyaWRpZW0iLCAieWVhcnMiLCAibW9udGhzIiwgIndlZWtzIiwgImRheXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiLCAib2Zmc2V0IiwgImNsb25lIiwgInJvdW5kIiwgInRocmVzaG9sZHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2FsbGJhY2siLCAic2VsZiIsICJhbHBoYSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJleHBhbmQiLCAidCIsICJHcmFtbWFyTG9jYXRpb24iLCAiZSIsICJyIiwgIm4iLCAibyIsICJ1IiwgImgiLCAiYSIsICJpIiwgInMiLCAiYyIsICJkIiwgImciLCAiRSIsICJsIiwgInAiLCAiZiIsICJtIiwgIl8iLCAidiIsICJQIiwgIngiLCAiRCIsICJDIiwgInkiLCAiJCIsICJTIiwgIkYiLCAiYiIsICJlc2MiLCAiU3RyaW5nIiwgInN0ciIsICJyZXBsYWNlIiwgIm1hcCIsICJzIiwgInNldElubmVySFRNTEF0dHIiLCAiRE9NQXR0cmlidXRlTmFtZXMiLCAic2FuaXRpemVkIiwgImgiLCAibmFtZSIsICJhdHRycyIsICJzdGFjayIsICJpIiwgImFyZ3VtZW50cyIsICJsZW5ndGgiLCAicHVzaCIsICJjaGlsZHJlbiIsICJyZXZlcnNlIiwgImVtcHR5VGFncyIsICJpbmRleE9mIiwgIl9faHRtbCIsICJjaGlsZCIsICJwb3AiLCAiaW1wb3J0X29ic2lkaWFuIiwgInBhdGgiLCAiaW1wb3J0X21vbWVudCIsICJuYW1lcyIsICJtb21lbnQiLCAibW9tZW50IiwgInBhdGgiLCAibW9tZW50IiwgInBhdGgiLCAib3B0aW9ucyIsICJfYSIsICJhc3QiLCAic3RhcnQiLCAiZmluYWwiLCAiaSIsICJhY2MiLCAiZXh0IiwgIl9oYXNNYWdpYyIsICJvcHRpb25zIiwgImV4dCIsICJxbWFyayIsICJzdGFyIiwgImV4cGFuZCIsICJyZWdFeHBFc2NhcGUiLCAic2V0IiwgInBhdGgiLCAicGF0aCIsICJyYW5rIiwgInBhdGgiLCAiX2EiLCAic2VwIiwgIl9hIiwgIkRlY2siLCAidCIsICJDYXJkT3JkZXIiLCAiRGVja09yZGVyIiwgIkRlY2siLCAiX2EiLCAiX2EiLCAiaDEiLCAiaDIiLCAiQ2FyZFR5cGUiLCAibWF0Y2giLCAic2VwIiwgInBhcnNlciIsICJvcHRpb25zIiwgInRleHQiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJfYSIsICJ0YWJfaGVhZGVyIiwgImNvbnRhaW5lcl9lbGVtZW50IiwgInRhYl9jb250ZW50IiwgInRhYl9idXR0b24iLCAicGF0aCIsICJjYWxsYmFjayIsICJpbXBvcnRfb2JzaWRpYW4iLCAiT2JzaWRpYW5HZXRBbGxUYWdzIiwgIl9hIiwgInN0YWNrIiwgIkRlY2siLCAiaW1wb3J0X21vbWVudCIsICJtb21lbnQiLCAibWF0Y2giLCAiaW1wb3J0X29ic2lkaWFuIiwgImgiLCAiaW1wb3J0X29ic2lkaWFuIiwgInJlc29sdmUiLCAiX2EiLCAiY2FsbGJhY2siLCAiaW1wb3J0X21vbWVudCIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImVsIiwgImxpbmsiLCAiX2EiLCAiaW1wb3J0X29ic2lkaWFuIiwgIm5vdyIsICJoIiwgImhleCIsICJoIiwgImludGVycG9sYXRlIiwgInQiLCAiY29sb3IiLCAibm9vcCIsICJ1aWQiLCAiaWQiLCAiaXNOdWxsT3JVbmRlZiIsICJ2YWx1ZSIsICJpc0FycmF5IiwgIkFycmF5IiwgInR5cGUiLCAiT2JqZWN0IiwgInByb3RvdHlwZSIsICJ0b1N0cmluZyIsICJjYWxsIiwgInNsaWNlIiwgImlzT2JqZWN0IiwgImlzTnVtYmVyRmluaXRlIiwgIk51bWJlciIsICJpc0Zpbml0ZSIsICJmaW5pdGVPckRlZmF1bHQiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlT3JEZWZhdWx0IiwgInRvUGVyY2VudGFnZSIsICJkaW1lbnNpb24iLCAiZW5kc1dpdGgiLCAicGFyc2VGbG9hdCIsICJ0b0RpbWVuc2lvbiIsICJjYWxsYmFjayIsICJmbiIsICJhcmdzIiwgInRoaXNBcmciLCAiYXBwbHkiLCAiZWFjaCIsICJsb29wYWJsZSIsICJyZXZlcnNlIiwgImkiLCAibGVuIiwgImtleXMiLCAibGVuZ3RoIiwgIl9lbGVtZW50c0VxdWFsIiwgImEwIiwgImExIiwgImlsZW4iLCAidjAiLCAidjEiLCAiZGF0YXNldEluZGV4IiwgImluZGV4IiwgImNsb25lIiwgInNvdXJjZSIsICJtYXAiLCAidGFyZ2V0IiwgImNyZWF0ZSIsICJrbGVuIiwgImsiLCAiaXNWYWxpZEtleSIsICJrZXkiLCAiaW5kZXhPZiIsICJfbWVyZ2VyIiwgIm9wdGlvbnMiLCAidHZhbCIsICJzdmFsIiwgIm1lcmdlIiwgInNvdXJjZXMiLCAibWVyZ2VyIiwgImN1cnJlbnQiLCAibWVyZ2VJZiIsICJfbWVyZ2VySWYiLCAiaGFzT3duUHJvcGVydHkiLCAia2V5UmVzb2x2ZXJzIiwgInYiLCAieCIsICJvIiwgInkiLCAiX3NwbGl0S2V5IiwgImtleSIsICJwYXJ0cyIsICJzcGxpdCIsICJrZXlzIiwgInRtcCIsICJwYXJ0IiwgImVuZHNXaXRoIiwgInNsaWNlIiwgInB1c2giLCAiX2dldEtleVJlc29sdmVyIiwgIm9iaiIsICJrIiwgInJlc29sdmVPYmplY3RLZXkiLCAicmVzb2x2ZXIiLCAiX2NhcGl0YWxpemUiLCAic3RyIiwgImNoYXJBdCIsICJ0b1VwcGVyQ2FzZSIsICJkZWZpbmVkIiwgInZhbHVlIiwgImlzRnVuY3Rpb24iLCAic2V0c0VxdWFsIiwgImEiLCAiYiIsICJzaXplIiwgIml0ZW0iLCAiaGFzIiwgIl9pc0NsaWNrRXZlbnQiLCAiZSIsICJ0eXBlIiwgIlBJIiwgIk1hdGgiLCAiVEFVIiwgIlBJVEFVIiwgIklORklOSVRZIiwgIk51bWJlciIsICJQT1NJVElWRV9JTkZJTklUWSIsICJSQURfUEVSX0RFRyIsICJIQUxGX1BJIiwgIlFVQVJURVJfUEkiLCAiVFdPX1RISVJEU19QSSIsICJsb2cxMCIsICJzaWduIiwgImFsbW9zdEVxdWFscyIsICJlcHNpbG9uIiwgImFicyIsICJuaWNlTnVtIiwgInJhbmdlIiwgInJvdW5kZWRSYW5nZSIsICJyb3VuZCIsICJuaWNlUmFuZ2UiLCAicG93IiwgImZsb29yIiwgImZyYWN0aW9uIiwgIm5pY2VGcmFjdGlvbiIsICJfZmFjdG9yaXplIiwgInJlc3VsdCIsICJzcXJ0IiwgImkiLCAic29ydCIsICJwb3AiLCAiaXNOdW1iZXIiLCAibiIsICJpc05hTiIsICJwYXJzZUZsb2F0IiwgImlzRmluaXRlIiwgImFsbW9zdFdob2xlIiwgInJvdW5kZWQiLCAiX3NldE1pbkFuZE1heEJ5S2V5IiwgImFycmF5IiwgInRhcmdldCIsICJwcm9wZXJ0eSIsICJpbGVuIiwgImxlbmd0aCIsICJtaW4iLCAibWF4IiwgInRvUmFkaWFucyIsICJkZWdyZWVzIiwgInRvRGVncmVlcyIsICJyYWRpYW5zIiwgIl9kZWNpbWFsUGxhY2VzIiwgImlzRmluaXRlTnVtYmVyIiwgInAiLCAiZ2V0QW5nbGVGcm9tUG9pbnQiLCAiY2VudHJlUG9pbnQiLCAiYW5nbGVQb2ludCIsICJkaXN0YW5jZUZyb21YQ2VudGVyIiwgImRpc3RhbmNlRnJvbVlDZW50ZXIiLCAicmFkaWFsRGlzdGFuY2VGcm9tQ2VudGVyIiwgImFuZ2xlIiwgImF0YW4yIiwgImRpc3RhbmNlIiwgImRpc3RhbmNlQmV0d2VlblBvaW50cyIsICJwdDEiLCAicHQyIiwgIl9ub3JtYWxpemVBbmdsZSIsICJhIiwgIlRBVSIsICJfYW5nbGVCZXR3ZWVuIiwgImFuZ2xlIiwgInN0YXJ0IiwgImVuZCIsICJzYW1lQW5nbGVJc0Z1bGxDaXJjbGUiLCAicyIsICJlIiwgImFuZ2xlVG9TdGFydCIsICJhbmdsZVRvRW5kIiwgInN0YXJ0VG9BbmdsZSIsICJlbmRUb0FuZ2xlIiwgIl9saW1pdFZhbHVlIiwgInZhbHVlIiwgIm1pbiIsICJtYXgiLCAiTWF0aCIsICJfaW50MTZSYW5nZSIsICJfaXNCZXR3ZWVuIiwgImVwc2lsb24iLCAiX2xvb2t1cCIsICJ0YWJsZSIsICJjbXAiLCAiaW5kZXgiLCAiaGkiLCAibGVuZ3RoIiwgImxvIiwgIm1pZCIsICJfbG9va3VwQnlLZXkiLCAia2V5IiwgImxhc3QiLCAidGkiLCAiX3Jsb29rdXBCeUtleSIsICJfZmlsdGVyQmV0d2VlbiIsICJ2YWx1ZXMiLCAic2xpY2UiLCAiYXJyYXlFdmVudHMiLCAibGlzdGVuQXJyYXlFdmVudHMiLCAiYXJyYXkiLCAibGlzdGVuZXIiLCAiX2NoYXJ0anMiLCAibGlzdGVuZXJzIiwgInB1c2giLCAiT2JqZWN0IiwgImRlZmluZVByb3BlcnR5IiwgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiwgImZvckVhY2giLCAibWV0aG9kIiwgIl9jYXBpdGFsaXplIiwgImJhc2UiLCAiYXJncyIsICJyZXMiLCAiYXBwbHkiLCAib2JqZWN0IiwgInVubGlzdGVuQXJyYXlFdmVudHMiLCAic3R1YiIsICJpbmRleE9mIiwgInNwbGljZSIsICJfYXJyYXlVbmlxdWUiLCAiaXRlbXMiLCAic2V0IiwgIlNldCIsICJzaXplIiwgIkFycmF5IiwgImZyb20iLCAicmVxdWVzdEFuaW1GcmFtZSIsICJ3aW5kb3ciLCAiY2FsbGJhY2siLCAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwgInRocm90dGxlZCIsICJmbiIsICJ0aGlzQXJnIiwgImFyZ3NUb1VzZSIsICJ0aWNraW5nIiwgImFyZ3MiLCAiY2FsbCIsICJhcHBseSIsICJkZWJvdW5jZSIsICJkZWxheSIsICJ0aW1lb3V0IiwgImNsZWFyVGltZW91dCIsICJzZXRUaW1lb3V0IiwgIl90b0xlZnRSaWdodENlbnRlciIsICJhbGlnbiIsICJfYWxpZ25TdGFydEVuZCIsICJzdGFydCIsICJlbmQiLCAiX3RleHRYIiwgImxlZnQiLCAicmlnaHQiLCAicnRsIiwgImNoZWNrIiwgImF0RWRnZSIsICJ0IiwgImVsYXN0aWNJbiIsICJzIiwgInAiLCAiTWF0aCIsICJwb3ciLCAic2luIiwgIlRBVSIsICJlbGFzdGljT3V0IiwgImVmZmVjdHMiLCAibGluZWFyIiwgImVhc2VJblF1YWQiLCAiZWFzZU91dFF1YWQiLCAiZWFzZUluT3V0UXVhZCIsICJlYXNlSW5DdWJpYyIsICJlYXNlT3V0Q3ViaWMiLCAiZWFzZUluT3V0Q3ViaWMiLCAiZWFzZUluUXVhcnQiLCAiZWFzZU91dFF1YXJ0IiwgImVhc2VJbk91dFF1YXJ0IiwgImVhc2VJblF1aW50IiwgImVhc2VPdXRRdWludCIsICJlYXNlSW5PdXRRdWludCIsICJlYXNlSW5TaW5lIiwgImNvcyIsICJIQUxGX1BJIiwgImVhc2VPdXRTaW5lIiwgImVhc2VJbk91dFNpbmUiLCAiUEkiLCAiZWFzZUluRXhwbyIsICJlYXNlT3V0RXhwbyIsICJlYXNlSW5PdXRFeHBvIiwgImVhc2VJbkNpcmMiLCAic3FydCIsICJlYXNlT3V0Q2lyYyIsICJlYXNlSW5PdXRDaXJjIiwgImVhc2VJbkVsYXN0aWMiLCAiZWFzZU91dEVsYXN0aWMiLCAiZWFzZUluT3V0RWxhc3RpYyIsICJlYXNlSW5CYWNrIiwgImVhc2VPdXRCYWNrIiwgImVhc2VJbk91dEJhY2siLCAiZWFzZUluQm91bmNlIiwgImVhc2VPdXRCb3VuY2UiLCAibSIsICJkIiwgImVhc2VJbk91dEJvdW5jZSIsICJpc1BhdHRlcm5PckdyYWRpZW50IiwgInZhbHVlIiwgInR5cGUiLCAidG9TdHJpbmciLCAiY29sb3IiLCAiQ29sb3IiLCAiZ2V0SG92ZXJDb2xvciIsICJzYXR1cmF0ZSIsICJkYXJrZW4iLCAiaGV4U3RyaW5nIiwgIm51bWJlcnMiLCAiY29sb3JzIiwgImFwcGx5QW5pbWF0aW9uc0RlZmF1bHRzIiwgImRlZmF1bHRzIiwgInNldCIsICJkZWxheSIsICJ1bmRlZmluZWQiLCAiZHVyYXRpb24iLCAiZWFzaW5nIiwgImZuIiwgImZyb20iLCAibG9vcCIsICJ0byIsICJkZXNjcmliZSIsICJfZmFsbGJhY2siLCAiX2luZGV4YWJsZSIsICJfc2NyaXB0YWJsZSIsICJuYW1lIiwgInByb3BlcnRpZXMiLCAiYWN0aXZlIiwgImFuaW1hdGlvbiIsICJyZXNpemUiLCAic2hvdyIsICJhbmltYXRpb25zIiwgInZpc2libGUiLCAiaGlkZSIsICJ2IiwgImFwcGx5TGF5b3V0c0RlZmF1bHRzIiwgImF1dG9QYWRkaW5nIiwgInBhZGRpbmciLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgImludGxDYWNoZSIsICJNYXAiLCAiZ2V0TnVtYmVyRm9ybWF0IiwgImxvY2FsZSIsICJvcHRpb25zIiwgImNhY2hlS2V5IiwgIkpTT04iLCAic3RyaW5naWZ5IiwgImZvcm1hdHRlciIsICJnZXQiLCAiSW50bCIsICJOdW1iZXJGb3JtYXQiLCAiZm9ybWF0TnVtYmVyIiwgIm51bSIsICJmb3JtYXQiLCAiZm9ybWF0dGVycyIsICJ2YWx1ZXMiLCAiaXNBcnJheSIsICJudW1lcmljIiwgInRpY2tWYWx1ZSIsICJpbmRleCIsICJ0aWNrcyIsICJjaGFydCIsICJub3RhdGlvbiIsICJkZWx0YSIsICJsZW5ndGgiLCAibWF4VGljayIsICJtYXgiLCAiYWJzIiwgImNhbGN1bGF0ZURlbHRhIiwgImxvZ0RlbHRhIiwgImxvZzEwIiwgIm51bURlY2ltYWwiLCAiaXNOYU4iLCAibWluIiwgImZsb29yIiwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCAiT2JqZWN0IiwgImFzc2lnbiIsICJsb2dhcml0aG1pYyIsICJyZW1haW4iLCAic2lnbmlmaWNhbmQiLCAiaW5jbHVkZXMiLCAiY2FsbCIsICJhcHBseVNjYWxlRGVmYXVsdHMiLCAiZGlzcGxheSIsICJvZmZzZXQiLCAicmV2ZXJzZSIsICJiZWdpbkF0WmVybyIsICJib3VuZHMiLCAiY2xpcCIsICJncmFjZSIsICJncmlkIiwgImxpbmVXaWR0aCIsICJkcmF3T25DaGFydEFyZWEiLCAiZHJhd1RpY2tzIiwgInRpY2tMZW5ndGgiLCAidGlja1dpZHRoIiwgIl9jdHgiLCAidGlja0NvbG9yIiwgImJvcmRlciIsICJkYXNoIiwgImRhc2hPZmZzZXQiLCAid2lkdGgiLCAidGl0bGUiLCAidGV4dCIsICJtaW5Sb3RhdGlvbiIsICJtYXhSb3RhdGlvbiIsICJtaXJyb3IiLCAidGV4dFN0cm9rZVdpZHRoIiwgInRleHRTdHJva2VDb2xvciIsICJhdXRvU2tpcCIsICJhdXRvU2tpcFBhZGRpbmciLCAibGFiZWxPZmZzZXQiLCAiY2FsbGJhY2siLCAiVGlja3MiLCAibWlub3IiLCAibWFqb3IiLCAiYWxpZ24iLCAiY3Jvc3NBbGlnbiIsICJzaG93TGFiZWxCYWNrZHJvcCIsICJiYWNrZHJvcENvbG9yIiwgImJhY2tkcm9wUGFkZGluZyIsICJyb3V0ZSIsICJzdGFydHNXaXRoIiwgIm92ZXJyaWRlcyIsICJjcmVhdGUiLCAiZGVzY3JpcHRvcnMiLCAiZ2V0U2NvcGUiLCAibm9kZSIsICJrZXkiLCAia2V5cyIsICJzcGxpdCIsICJpIiwgIm4iLCAiayIsICJyb290IiwgInNjb3BlIiwgIm1lcmdlIiwgIkRlZmF1bHRzIiwgImNvbnN0cnVjdG9yIiwgIl9kZXNjcmlwdG9ycyIsICJfYXBwbGllcnMiLCAiYmFja2dyb3VuZENvbG9yIiwgImJvcmRlckNvbG9yIiwgImRhdGFzZXRzIiwgImRldmljZVBpeGVsUmF0aW8iLCAiY29udGV4dCIsICJwbGF0Zm9ybSIsICJnZXREZXZpY2VQaXhlbFJhdGlvIiwgImVsZW1lbnRzIiwgImV2ZW50cyIsICJmb250IiwgImZhbWlseSIsICJzaXplIiwgInN0eWxlIiwgImxpbmVIZWlnaHQiLCAid2VpZ2h0IiwgImhvdmVyIiwgImhvdmVyQmFja2dyb3VuZENvbG9yIiwgImN0eCIsICJob3ZlckJvcmRlckNvbG9yIiwgImhvdmVyQ29sb3IiLCAiaW5kZXhBeGlzIiwgImludGVyYWN0aW9uIiwgIm1vZGUiLCAiaW50ZXJzZWN0IiwgImluY2x1ZGVJbnZpc2libGUiLCAibWFpbnRhaW5Bc3BlY3RSYXRpbyIsICJvbkhvdmVyIiwgIm9uQ2xpY2siLCAicGFyc2luZyIsICJwbHVnaW5zIiwgInJlc3BvbnNpdmUiLCAic2NhbGUiLCAic2NhbGVzIiwgInNob3dMaW5lIiwgImRyYXdBY3RpdmVFbGVtZW50c09uVG9wIiwgImFwcGx5IiwgIm92ZXJyaWRlIiwgInRhcmdldFNjb3BlIiwgInRhcmdldE5hbWUiLCAic2NvcGVPYmplY3QiLCAidGFyZ2V0U2NvcGVPYmplY3QiLCAicHJpdmF0ZU5hbWUiLCAiZGVmaW5lUHJvcGVydGllcyIsICJ3cml0YWJsZSIsICJlbnVtZXJhYmxlIiwgImxvY2FsIiwgInRhcmdldCIsICJpc09iamVjdCIsICJ2YWx1ZU9yRGVmYXVsdCIsICJhcHBsaWVycyIsICJmb3JFYWNoIiwgInRvRm9udFN0cmluZyIsICJpc051bGxPclVuZGVmIiwgIl9tZWFzdXJlVGV4dCIsICJkYXRhIiwgImdjIiwgImxvbmdlc3QiLCAic3RyaW5nIiwgInRleHRXaWR0aCIsICJtZWFzdXJlVGV4dCIsICJwdXNoIiwgIl9sb25nZXN0VGV4dCIsICJhcnJheU9mVGhpbmdzIiwgImNhY2hlIiwgImdhcmJhZ2VDb2xsZWN0IiwgInNhdmUiLCAiaWxlbiIsICJqIiwgImpsZW4iLCAidGhpbmciLCAibmVzdGVkVGhpbmciLCAicmVzdG9yZSIsICJnY0xlbiIsICJzcGxpY2UiLCAiX2FsaWduUGl4ZWwiLCAicGl4ZWwiLCAiY3VycmVudERldmljZVBpeGVsUmF0aW8iLCAiaGFsZldpZHRoIiwgInJvdW5kIiwgImNsZWFyQ2FudmFzIiwgImNhbnZhcyIsICJnZXRDb250ZXh0IiwgInJlc2V0VHJhbnNmb3JtIiwgImNsZWFyUmVjdCIsICJoZWlnaHQiLCAiZHJhd1BvaW50IiwgIngiLCAieSIsICJkcmF3UG9pbnRMZWdlbmQiLCAidyIsICJ4T2Zmc2V0IiwgInlPZmZzZXQiLCAiY29ybmVyUmFkaXVzIiwgInhPZmZzZXRXIiwgInlPZmZzZXRXIiwgInBvaW50U3R5bGUiLCAicm90YXRpb24iLCAicmFkaXVzIiwgInJhZCIsICJSQURfUEVSX0RFRyIsICJ0cmFuc2xhdGUiLCAicm90YXRlIiwgImRyYXdJbWFnZSIsICJiZWdpblBhdGgiLCAiZWxsaXBzZSIsICJhcmMiLCAiY2xvc2VQYXRoIiwgIm1vdmVUbyIsICJUV09fVEhJUkRTX1BJIiwgImxpbmVUbyIsICJRVUFSVEVSX1BJIiwgIlNRUlQxXzIiLCAicmVjdCIsICJmaWxsIiwgImJvcmRlcldpZHRoIiwgInN0cm9rZSIsICJfaXNQb2ludEluQXJlYSIsICJwb2ludCIsICJhcmVhIiwgIm1hcmdpbiIsICJjbGlwQXJlYSIsICJ1bmNsaXBBcmVhIiwgInNldFJlbmRlck9wdHMiLCAiY3R4IiwgIm9wdHMiLCAidHJhbnNsYXRpb24iLCAidHJhbnNsYXRlIiwgImlzTnVsbE9yVW5kZWYiLCAicm90YXRpb24iLCAicm90YXRlIiwgImNvbG9yIiwgImZpbGxTdHlsZSIsICJ0ZXh0QWxpZ24iLCAidGV4dEJhc2VsaW5lIiwgImRlY29yYXRlVGV4dCIsICJ4IiwgInkiLCAibGluZSIsICJzdHJpa2V0aHJvdWdoIiwgInVuZGVybGluZSIsICJtZXRyaWNzIiwgIm1lYXN1cmVUZXh0IiwgImxlZnQiLCAiYWN0dWFsQm91bmRpbmdCb3hMZWZ0IiwgInJpZ2h0IiwgImFjdHVhbEJvdW5kaW5nQm94UmlnaHQiLCAidG9wIiwgImFjdHVhbEJvdW5kaW5nQm94QXNjZW50IiwgImJvdHRvbSIsICJhY3R1YWxCb3VuZGluZ0JveERlc2NlbnQiLCAieURlY29yYXRpb24iLCAic3Ryb2tlU3R5bGUiLCAiYmVnaW5QYXRoIiwgImxpbmVXaWR0aCIsICJkZWNvcmF0aW9uV2lkdGgiLCAibW92ZVRvIiwgImxpbmVUbyIsICJzdHJva2UiLCAiZHJhd0JhY2tkcm9wIiwgIm9sZENvbG9yIiwgImZpbGxSZWN0IiwgIndpZHRoIiwgImhlaWdodCIsICJyZW5kZXJUZXh0IiwgInRleHQiLCAiZm9udCIsICJsaW5lcyIsICJpc0FycmF5IiwgInN0cm9rZVdpZHRoIiwgInN0cm9rZUNvbG9yIiwgImkiLCAic2F2ZSIsICJzdHJpbmciLCAibGVuZ3RoIiwgImJhY2tkcm9wIiwgInN0cm9rZVRleHQiLCAibWF4V2lkdGgiLCAiZmlsbFRleHQiLCAiTnVtYmVyIiwgImxpbmVIZWlnaHQiLCAicmVzdG9yZSIsICJhZGRSb3VuZGVkUmVjdFBhdGgiLCAicmVjdCIsICJ3IiwgImgiLCAicmFkaXVzIiwgImFyYyIsICJ0b3BMZWZ0IiwgIlBJIiwgImJvdHRvbUxlZnQiLCAiSEFMRl9QSSIsICJib3R0b21SaWdodCIsICJ0b3BSaWdodCIsICJMSU5FX0hFSUdIVCIsICJGT05UX1NUWUxFIiwgInRvTGluZUhlaWdodCIsICJ2YWx1ZSIsICJzaXplIiwgIm1hdGNoZXMiLCAibWF0Y2giLCAibnVtYmVyT3JaZXJvIiwgInYiLCAiX3JlYWRWYWx1ZVRvUHJvcHMiLCAicHJvcHMiLCAicmV0IiwgIm9ialByb3BzIiwgImlzT2JqZWN0IiwgImtleXMiLCAiT2JqZWN0IiwgInJlYWQiLCAicHJvcCIsICJ2YWx1ZU9yRGVmYXVsdCIsICJ0b1RSQkwiLCAidG9UUkJMQ29ybmVycyIsICJ0b1BhZGRpbmciLCAib2JqIiwgInRvRm9udCIsICJvcHRpb25zIiwgImZhbGxiYWNrIiwgImRlZmF1bHRzIiwgInBhcnNlSW50IiwgInN0eWxlIiwgImNvbnNvbGUiLCAid2FybiIsICJ1bmRlZmluZWQiLCAiZmFtaWx5IiwgIndlaWdodCIsICJ0b0ZvbnRTdHJpbmciLCAicmVzb2x2ZSIsICJpbnB1dHMiLCAiY29udGV4dCIsICJpbmRleCIsICJpbmZvIiwgImNhY2hlYWJsZSIsICJpbGVuIiwgIl9hZGRHcmFjZSIsICJtaW5tYXgiLCAiZ3JhY2UiLCAiYmVnaW5BdFplcm8iLCAibWluIiwgIm1heCIsICJjaGFuZ2UiLCAidG9EaW1lbnNpb24iLCAia2VlcFplcm8iLCAiYWRkIiwgIk1hdGgiLCAiYWJzIiwgImNyZWF0ZUNvbnRleHQiLCAicGFyZW50Q29udGV4dCIsICJhc3NpZ24iLCAiY3JlYXRlIiwgIl9jcmVhdGVSZXNvbHZlciIsICJzY29wZXMiLCAicHJlZml4ZXMiLCAicm9vdFNjb3BlcyIsICJnZXRUYXJnZXQiLCAiZmluYWxSb290U2NvcGVzIiwgIl9yZXNvbHZlIiwgImNhY2hlIiwgIlN5bWJvbCIsICJ0b1N0cmluZ1RhZyIsICJfY2FjaGVhYmxlIiwgIl9zY29wZXMiLCAiX3Jvb3RTY29wZXMiLCAiX2ZhbGxiYWNrIiwgIl9nZXRUYXJnZXQiLCAib3ZlcnJpZGUiLCAic2NvcGUiLCAiUHJveHkiLCAiZGVsZXRlUHJvcGVydHkiLCAidGFyZ2V0IiwgIl9rZXlzIiwgImdldCIsICJfY2FjaGVkIiwgIl9yZXNvbHZlV2l0aFByZWZpeGVzIiwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsICJSZWZsZWN0IiwgImdldFByb3RvdHlwZU9mIiwgImhhcyIsICJnZXRLZXlzRnJvbUFsbFNjb3BlcyIsICJpbmNsdWRlcyIsICJvd25LZXlzIiwgInNldCIsICJzdG9yYWdlIiwgIl9zdG9yYWdlIiwgIl9hdHRhY2hDb250ZXh0IiwgInByb3h5IiwgInN1YlByb3h5IiwgImRlc2NyaXB0b3JEZWZhdWx0cyIsICJfcHJveHkiLCAiX2NvbnRleHQiLCAiX3N1YlByb3h5IiwgIl9zdGFjayIsICJTZXQiLCAiX2Rlc2NyaXB0b3JzIiwgInNldENvbnRleHQiLCAicmVjZWl2ZXIiLCAiX3Jlc29sdmVXaXRoQ29udGV4dCIsICJhbGxLZXlzIiwgImVudW1lcmFibGUiLCAiY29uZmlndXJhYmxlIiwgInNjcmlwdGFibGUiLCAiaW5kZXhhYmxlIiwgIl9zY3JpcHRhYmxlIiwgIl9pbmRleGFibGUiLCAiX2FsbEtleXMiLCAiaXNTY3JpcHRhYmxlIiwgImlzRnVuY3Rpb24iLCAiaXNJbmRleGFibGUiLCAicmVhZEtleSIsICJwcmVmaXgiLCAibmFtZSIsICJfY2FwaXRhbGl6ZSIsICJuZWVkc1N1YlJlc29sdmVyIiwgImNvbnN0cnVjdG9yIiwgInByb3RvdHlwZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJjYWxsIiwgImRlc2NyaXB0b3JzIiwgIl9yZXNvbHZlU2NyaXB0YWJsZSIsICJfcmVzb2x2ZUFycmF5IiwgImdldFZhbHVlIiwgIkVycm9yIiwgIkFycmF5IiwgImZyb20iLCAiam9pbiIsICJkZWxldGUiLCAiY3JlYXRlU3ViUmVzb2x2ZXIiLCAiYXJyIiwgImZpbHRlciIsICJzIiwgIml0ZW0iLCAicmVzb2x2ZXIiLCAicHVzaCIsICJyZXNvbHZlRmFsbGJhY2siLCAiZ2V0U2NvcGUiLCAia2V5IiwgInBhcmVudCIsICJyZXNvbHZlT2JqZWN0S2V5IiwgImFkZFNjb3BlcyIsICJwYXJlbnRTY29wZXMiLCAicGFyZW50RmFsbGJhY2siLCAiYWxsU2NvcGVzIiwgImFkZFNjb3Blc0Zyb21LZXkiLCAic3ViR2V0VGFyZ2V0IiwgInJlc29sdmVLZXlzRnJvbUFsbFNjb3BlcyIsICJrIiwgInN0YXJ0c1dpdGgiLCAiRVBTSUxPTiIsICJOdW1iZXIiLCAiX2lzRG9tU3VwcG9ydGVkIiwgIndpbmRvdyIsICJkb2N1bWVudCIsICJfZ2V0UGFyZW50Tm9kZSIsICJkb21Ob2RlIiwgInBhcmVudCIsICJwYXJlbnROb2RlIiwgInRvU3RyaW5nIiwgImhvc3QiLCAicGFyc2VNYXhTdHlsZSIsICJzdHlsZVZhbHVlIiwgIm5vZGUiLCAicGFyZW50UHJvcGVydHkiLCAidmFsdWVJblBpeGVscyIsICJwYXJzZUludCIsICJpbmRleE9mIiwgImdldENvbXB1dGVkU3R5bGUiLCAiZWxlbWVudCIsICJvd25lckRvY3VtZW50IiwgImRlZmF1bHRWaWV3IiwgImdldFN0eWxlIiwgImVsIiwgInByb3BlcnR5IiwgImdldFByb3BlcnR5VmFsdWUiLCAicG9zaXRpb25zIiwgImdldFBvc2l0aW9uZWRTdHlsZSIsICJzdHlsZXMiLCAic3R5bGUiLCAic3VmZml4IiwgInJlc3VsdCIsICJpIiwgInBvcyIsICJwYXJzZUZsb2F0IiwgIndpZHRoIiwgImxlZnQiLCAicmlnaHQiLCAiaGVpZ2h0IiwgInRvcCIsICJib3R0b20iLCAidXNlT2Zmc2V0UG9zIiwgIngiLCAieSIsICJ0YXJnZXQiLCAic2hhZG93Um9vdCIsICJnZXRDYW52YXNQb3NpdGlvbiIsICJlIiwgImNhbnZhcyIsICJ0b3VjaGVzIiwgInNvdXJjZSIsICJsZW5ndGgiLCAib2Zmc2V0WCIsICJvZmZzZXRZIiwgImJveCIsICJyZWN0IiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJjbGllbnRYIiwgImNsaWVudFkiLCAiZ2V0UmVsYXRpdmVQb3NpdGlvbiIsICJldmVudCIsICJjaGFydCIsICJjdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyIsICJib3JkZXJCb3giLCAiYm94U2l6aW5nIiwgInBhZGRpbmdzIiwgImJvcmRlcnMiLCAieE9mZnNldCIsICJ5T2Zmc2V0IiwgIk1hdGgiLCAicm91bmQiLCAiZ2V0Q29udGFpbmVyU2l6ZSIsICJtYXhXaWR0aCIsICJtYXhIZWlnaHQiLCAidW5kZWZpbmVkIiwgImNvbnRhaW5lciIsICJjbGllbnRXaWR0aCIsICJjbGllbnRIZWlnaHQiLCAiY29udGFpbmVyU3R5bGUiLCAiY29udGFpbmVyQm9yZGVyIiwgImNvbnRhaW5lclBhZGRpbmciLCAiSU5GSU5JVFkiLCAicm91bmQxIiwgInYiLCAiZ2V0TWF4aW11bVNpemUiLCAiYmJXaWR0aCIsICJiYkhlaWdodCIsICJhc3BlY3RSYXRpbyIsICJtYXJnaW5zIiwgImNvbnRhaW5lclNpemUiLCAibWF4IiwgIm1pbiIsICJtYWludGFpbkhlaWdodCIsICJmbG9vciIsICJyZXRpbmFTY2FsZSIsICJmb3JjZVJhdGlvIiwgImZvcmNlU3R5bGUiLCAicGl4ZWxSYXRpbyIsICJkZXZpY2VIZWlnaHQiLCAiZGV2aWNlV2lkdGgiLCAiY3R4IiwgInNldFRyYW5zZm9ybSIsICJzdXBwb3J0c0V2ZW50TGlzdGVuZXJPcHRpb25zIiwgInBhc3NpdmVTdXBwb3J0ZWQiLCAib3B0aW9ucyIsICJwYXNzaXZlIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJyZWFkVXNlZFNpemUiLCAidmFsdWUiLCAibWF0Y2hlcyIsICJtYXRjaCIsICJnZXRSaWdodFRvTGVmdEFkYXB0ZXIiLCAicmVjdFgiLCAid2lkdGgiLCAieCIsICJzZXRXaWR0aCIsICJ3IiwgInRleHRBbGlnbiIsICJhbGlnbiIsICJ4UGx1cyIsICJ2YWx1ZSIsICJsZWZ0Rm9yTHRyIiwgIml0ZW1XaWR0aCIsICJnZXRMZWZ0VG9SaWdodEFkYXB0ZXIiLCAiX2l0ZW1XaWR0aCIsICJnZXRSdGxBZGFwdGVyIiwgInJ0bCIsICJvdmVycmlkZVRleHREaXJlY3Rpb24iLCAiY3R4IiwgImRpcmVjdGlvbiIsICJzdHlsZSIsICJvcmlnaW5hbCIsICJjYW52YXMiLCAiZ2V0UHJvcGVydHlWYWx1ZSIsICJnZXRQcm9wZXJ0eVByaW9yaXR5IiwgInNldFByb3BlcnR5IiwgInByZXZUZXh0RGlyZWN0aW9uIiwgInJlc3RvcmVUZXh0RGlyZWN0aW9uIiwgInVuZGVmaW5lZCIsICJBbmltYXRvciIsICJjb25zdHJ1Y3RvciIsICJfcmVxdWVzdCIsICJfY2hhcnRzIiwgIk1hcCIsICJfcnVubmluZyIsICJfbGFzdERhdGUiLCAidW5kZWZpbmVkIiwgIl9ub3RpZnkiLCAiY2hhcnQiLCAiYW5pbXMiLCAiZGF0ZSIsICJ0eXBlIiwgImNhbGxiYWNrcyIsICJsaXN0ZW5lcnMiLCAibnVtU3RlcHMiLCAiZHVyYXRpb24iLCAiZm9yRWFjaCIsICJmbiIsICJpbml0aWFsIiwgImN1cnJlbnRTdGVwIiwgIk1hdGgiLCAibWluIiwgInN0YXJ0IiwgIl9yZWZyZXNoIiwgInJlcXVlc3RBbmltRnJhbWUiLCAiY2FsbCIsICJ3aW5kb3ciLCAiX3VwZGF0ZSIsICJEYXRlIiwgIm5vdyIsICJyZW1haW5pbmciLCAicnVubmluZyIsICJpdGVtcyIsICJsZW5ndGgiLCAiaSIsICJkcmF3IiwgIml0ZW0iLCAiX2FjdGl2ZSIsICJfdG90YWwiLCAidGljayIsICJwb3AiLCAiX2dldEFuaW1zIiwgImNoYXJ0cyIsICJnZXQiLCAiY29tcGxldGUiLCAicHJvZ3Jlc3MiLCAic2V0IiwgImxpc3RlbiIsICJldmVudCIsICJjYiIsICJwdXNoIiwgImFkZCIsICJoYXMiLCAicmVkdWNlIiwgImFjYyIsICJjdXIiLCAibWF4IiwgIl9kdXJhdGlvbiIsICJzdG9wIiwgImNhbmNlbCIsICJyZW1vdmUiLCAiZGVsZXRlIiwgInRyYW5zcGFyZW50IiwgImludGVycG9sYXRvcnMiLCAiYm9vbGVhbiIsICJmcm9tIiwgInRvIiwgImZhY3RvciIsICJjb2xvciIsICJjMCIsICJoZWxwZXJzQ29sb3IiLCAiYzEiLCAidmFsaWQiLCAibWl4IiwgImhleFN0cmluZyIsICJudW1iZXIiLCAiQW5pbWF0aW9uIiwgImNmZyIsICJ0YXJnZXQiLCAicHJvcCIsICJjdXJyZW50VmFsdWUiLCAicmVzb2x2ZSIsICJfZm4iLCAiX2Vhc2luZyIsICJlZmZlY3RzIiwgImVhc2luZyIsICJsaW5lYXIiLCAiX3N0YXJ0IiwgImZsb29yIiwgImRlbGF5IiwgIl9sb29wIiwgImxvb3AiLCAiX3RhcmdldCIsICJfcHJvcCIsICJfZnJvbSIsICJfdG8iLCAiX3Byb21pc2VzIiwgImFjdGl2ZSIsICJ1cGRhdGUiLCAiZWxhcHNlZCIsICJyZW1haW4iLCAid2FpdCIsICJwcm9taXNlcyIsICJQcm9taXNlIiwgInJlcyIsICJyZWoiLCAicmVzb2x2ZWQiLCAibWV0aG9kIiwgIkFuaW1hdGlvbnMiLCAiY29uZmlnIiwgIl9jaGFydCIsICJfcHJvcGVydGllcyIsICJjb25maWd1cmUiLCAiaXNPYmplY3QiLCAiYW5pbWF0aW9uT3B0aW9ucyIsICJPYmplY3QiLCAia2V5cyIsICJkZWZhdWx0cyIsICJhbmltYXRpb24iLCAiYW5pbWF0ZWRQcm9wcyIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgImtleSIsICJvcHRpb24iLCAiaXNBcnJheSIsICJwcm9wZXJ0aWVzIiwgIl9hbmltYXRlT3B0aW9ucyIsICJ2YWx1ZXMiLCAibmV3T3B0aW9ucyIsICJvcHRpb25zIiwgInJlc29sdmVUYXJnZXRPcHRpb25zIiwgImFuaW1hdGlvbnMiLCAiX2NyZWF0ZUFuaW1hdGlvbnMiLCAiJHNoYXJlZCIsICJhd2FpdEFsbCIsICIkYW5pbWF0aW9ucyIsICJ0aGVuIiwgInByb3BzIiwgImNoYXJBdCIsICJ2YWx1ZSIsICJzaXplIiwgImFzc2lnbiIsICJhbmltYXRvciIsICJhbmltIiwgImFsbCIsICJzY2FsZUNsaXAiLCAic2NhbGUiLCAiYWxsb3dlZE92ZXJmbG93IiwgIm9wdHMiLCAicmV2ZXJzZSIsICJlbmQiLCAiZGVmYXVsdENsaXAiLCAieFNjYWxlIiwgInlTY2FsZSIsICJ4IiwgInkiLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgInRvQ2xpcCIsICJ0IiwgInIiLCAiYiIsICJsIiwgImRpc2FibGVkIiwgImdldFNvcnRlZERhdGFzZXRJbmRpY2VzIiwgImZpbHRlclZpc2libGUiLCAibWV0YXNldHMiLCAiX2dldFNvcnRlZERhdGFzZXRNZXRhcyIsICJpbGVuIiwgImluZGV4IiwgImFwcGx5U3RhY2siLCAic3RhY2siLCAiZHNJbmRleCIsICJzaW5nbGVNb2RlIiwgIm1vZGUiLCAiZGF0YXNldEluZGV4IiwgIm90aGVyVmFsdWUiLCAiaXNGaW5pdGUiLCAic2lnbiIsICJjb252ZXJ0T2JqZWN0RGF0YVRvQXJyYXkiLCAiZGF0YSIsICJtZXRhIiwgImlTY2FsZSIsICJ2U2NhbGUiLCAiaUF4aXNLZXkiLCAiYXhpcyIsICJ2QXhpc0tleSIsICJhZGF0YSIsICJBcnJheSIsICJpc1N0YWNrZWQiLCAic3RhY2tlZCIsICJnZXRTdGFja0tleSIsICJpbmRleFNjYWxlIiwgInZhbHVlU2NhbGUiLCAiaWQiLCAiZ2V0VXNlckJvdW5kcyIsICJtaW5EZWZpbmVkIiwgIm1heERlZmluZWQiLCAiTnVtYmVyIiwgIk5FR0FUSVZFX0lORklOSVRZIiwgIlBPU0lUSVZFX0lORklOSVRZIiwgImdldE9yQ3JlYXRlU3RhY2siLCAic3RhY2tzIiwgInN0YWNrS2V5IiwgImluZGV4VmFsdWUiLCAic3ViU3RhY2siLCAiZ2V0TGFzdEluZGV4SW5TdGFjayIsICJwb3NpdGl2ZSIsICJnZXRNYXRjaGluZ1Zpc2libGVNZXRhcyIsICJ1cGRhdGVTdGFja3MiLCAiY29udHJvbGxlciIsICJwYXJzZWQiLCAiX2NhY2hlZE1ldGEiLCAiX3N0YWNrcyIsICJpQXhpcyIsICJ2QXhpcyIsICJpdGVtU3RhY2tzIiwgIl90b3AiLCAiX2JvdHRvbSIsICJ2aXN1YWxWYWx1ZXMiLCAiX3Zpc3VhbFZhbHVlcyIsICJnZXRGaXJzdFNjYWxlSWQiLCAic2NhbGVzIiwgImZpbHRlciIsICJzaGlmdCIsICJjcmVhdGVEYXRhc2V0Q29udGV4dCIsICJwYXJlbnQiLCAiY3JlYXRlQ29udGV4dCIsICJkYXRhc2V0IiwgImNyZWF0ZURhdGFDb250ZXh0IiwgImVsZW1lbnQiLCAiZGF0YUluZGV4IiwgInJhdyIsICJjbGVhclN0YWNrcyIsICJfcGFyc2VkIiwgImlzRGlyZWN0VXBkYXRlTW9kZSIsICJjbG9uZUlmTm90U2hhcmVkIiwgImNhY2hlZCIsICJzaGFyZWQiLCAiY3JlYXRlU3RhY2siLCAiY2FuU3RhY2siLCAiaGlkZGVuIiwgIl9zdGFja2VkIiwgIkRhdGFzZXRDb250cm9sbGVyIiwgIl9jdHgiLCAiY3R4IiwgIl9jYWNoZWREYXRhT3B0cyIsICJnZXRNZXRhIiwgIl90eXBlIiwgIl9wYXJzaW5nIiwgIl9kYXRhIiwgIl9vYmplY3REYXRhIiwgIl9zaGFyZWRPcHRpb25zIiwgIl9kcmF3U3RhcnQiLCAiX2RyYXdDb3VudCIsICJlbmFibGVPcHRpb25TaGFyaW5nIiwgInN1cHBvcnRzRGVjaW1hdGlvbiIsICIkY29udGV4dCIsICJfc3luY0xpc3QiLCAiZGF0YXNldEVsZW1lbnRUeXBlIiwgImRhdGFFbGVtZW50VHlwZSIsICJpbml0aWFsaXplIiwgImxpbmtTY2FsZXMiLCAiYWRkRWxlbWVudHMiLCAiZmlsbCIsICJpc1BsdWdpbkVuYWJsZWQiLCAiY29uc29sZSIsICJ3YXJuIiwgInVwZGF0ZUluZGV4IiwgImdldERhdGFzZXQiLCAiY2hvb3NlSWQiLCAieGlkIiwgInhBeGlzSUQiLCAidmFsdWVPckRlZmF1bHQiLCAieWlkIiwgInlBeGlzSUQiLCAicmlkIiwgInJBeGlzSUQiLCAiaW5kZXhBeGlzIiwgImlpZCIsICJpQXhpc0lEIiwgInZpZCIsICJ2QXhpc0lEIiwgImdldFNjYWxlRm9ySWQiLCAiclNjYWxlIiwgImRhdGFzZXRzIiwgImdldERhdGFzZXRNZXRhIiwgInNjYWxlSUQiLCAiX2dldE90aGVyU2NhbGUiLCAicmVzZXQiLCAiX2Rlc3Ryb3kiLCAidW5saXN0ZW5BcnJheUV2ZW50cyIsICJfZGF0YUNoZWNrIiwgImlzRXh0ZW5zaWJsZSIsICJsaXN0ZW5BcnJheUV2ZW50cyIsICJidWlsZE9yVXBkYXRlRWxlbWVudHMiLCAicmVzZXROZXdFbGVtZW50cyIsICJzdGFja0NoYW5nZWQiLCAib2xkU3RhY2tlZCIsICJfcmVzeW5jRWxlbWVudHMiLCAic2NvcGVLZXlzIiwgImRhdGFzZXRTY29wZUtleXMiLCAic2NvcGVzIiwgImdldE9wdGlvblNjb3BlcyIsICJjcmVhdGVSZXNvbHZlciIsICJnZXRDb250ZXh0IiwgInBhcnNpbmciLCAicGFyc2UiLCAiY291bnQiLCAic29ydGVkIiwgIl9zb3J0ZWQiLCAicHJldiIsICJwYXJzZUFycmF5RGF0YSIsICJwYXJzZU9iamVjdERhdGEiLCAicGFyc2VQcmltaXRpdmVEYXRhIiwgImlzTm90SW5PcmRlckNvbXBhcmVkVG9QcmV2IiwgImxhYmVscyIsICJnZXRMYWJlbHMiLCAic2luZ2xlU2NhbGUiLCAieEF4aXNLZXkiLCAieUF4aXNLZXkiLCAicmVzb2x2ZU9iamVjdEtleSIsICJnZXRQYXJzZWQiLCAiZ2V0RGF0YUVsZW1lbnQiLCAidXBkYXRlUmFuZ2VGcm9tUGFyc2VkIiwgInJhbmdlIiwgInBhcnNlZFZhbHVlIiwgIk5hTiIsICJnZXRNaW5NYXgiLCAib3RoZXJTY2FsZSIsICJvdGhlck1pbiIsICJvdGhlck1heCIsICJfc2tpcCIsICJnZXRBbGxQYXJzZWRWYWx1ZXMiLCAiZ2V0TWF4T3ZlcmZsb3ciLCAiZ2V0TGFiZWxBbmRWYWx1ZSIsICJsYWJlbCIsICJnZXRMYWJlbEZvclZhbHVlIiwgIl9jbGlwIiwgImNsaXAiLCAiZWxlbWVudHMiLCAiYXJlYSIsICJjaGFydEFyZWEiLCAiZHJhd0FjdGl2ZUVsZW1lbnRzT25Ub3AiLCAiZ2V0U3R5bGUiLCAicmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9ucyIsICJyZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zIiwgImNvbnRleHQiLCAiX3Jlc29sdmVFbGVtZW50T3B0aW9ucyIsICJlbGVtZW50VHlwZSIsICJjYWNoZSIsICJjYWNoZUtleSIsICJzaGFyaW5nIiwgImRlZmluZWQiLCAiZGF0YXNldEVsZW1lbnRTY29wZUtleXMiLCAicHJlZml4ZXMiLCAibmFtZXMiLCAicmVzb2x2ZU5hbWVkT3B0aW9ucyIsICJmcmVlemUiLCAiX3Jlc29sdmVBbmltYXRpb25zIiwgInRyYW5zaXRpb24iLCAiZGF0YXNldEFuaW1hdGlvblNjb3BlS2V5cyIsICJfY2FjaGVhYmxlIiwgImdldFNoYXJlZE9wdGlvbnMiLCAiaW5jbHVkZU9wdGlvbnMiLCAic2hhcmVkT3B0aW9ucyIsICJfYW5pbWF0aW9uc0Rpc2FibGVkIiwgIl9nZXRTaGFyZWRPcHRpb25zIiwgImZpcnN0T3B0cyIsICJwcmV2aW91c2x5U2hhcmVkT3B0aW9ucyIsICJ1cGRhdGVTaGFyZWRPcHRpb25zIiwgInVwZGF0ZUVsZW1lbnQiLCAiX3NldFN0eWxlIiwgInJlbW92ZUhvdmVyU3R5bGUiLCAic2V0SG92ZXJTdHlsZSIsICJfcmVtb3ZlRGF0YXNldEhvdmVyU3R5bGUiLCAiX3NldERhdGFzZXRIb3ZlclN0eWxlIiwgImFyZzEiLCAiYXJnMiIsICJudW1NZXRhIiwgIm51bURhdGEiLCAiX2luc2VydEVsZW1lbnRzIiwgIl9yZW1vdmVFbGVtZW50cyIsICJtb3ZlIiwgImFyciIsICJ1cGRhdGVFbGVtZW50cyIsICJyZW1vdmVkIiwgInNwbGljZSIsICJfc3luYyIsICJhcmdzIiwgIl9kYXRhQ2hhbmdlcyIsICJfb25EYXRhUHVzaCIsICJhcmd1bWVudHMiLCAiX29uRGF0YVBvcCIsICJfb25EYXRhU2hpZnQiLCAiX29uRGF0YVNwbGljZSIsICJuZXdDb3VudCIsICJfb25EYXRhVW5zaGlmdCIsICJnZXRBbGxTY2FsZVZhbHVlcyIsICJfY2FjaGUiLCAiJGJhciIsICJ2aXNpYmxlTWV0YXMiLCAiY29uY2F0IiwgIl9hcnJheVVuaXF1ZSIsICJzb3J0IiwgImEiLCAiY29tcHV0ZU1pblNhbXBsZVNpemUiLCAiX2xlbmd0aCIsICJjdXJyIiwgInVwZGF0ZU1pbkFuZFByZXYiLCAiYWJzIiwgImdldFBpeGVsRm9yVmFsdWUiLCAidGlja3MiLCAiZ2V0UGl4ZWxGb3JUaWNrIiwgImNvbXB1dGVGaXRDYXRlZ29yeVRyYWl0cyIsICJydWxlciIsICJzdGFja0NvdW50IiwgInRoaWNrbmVzcyIsICJiYXJUaGlja25lc3MiLCAicmF0aW8iLCAiaXNOdWxsT3JVbmRlZiIsICJjYXRlZ29yeVBlcmNlbnRhZ2UiLCAiYmFyUGVyY2VudGFnZSIsICJjaHVuayIsICJwaXhlbHMiLCAiY29tcHV0ZUZsZXhDYXRlZ29yeVRyYWl0cyIsICJuZXh0IiwgInBlcmNlbnQiLCAicGFyc2VGbG9hdEJhciIsICJlbnRyeSIsICJzdGFydFZhbHVlIiwgImVuZFZhbHVlIiwgImJhclN0YXJ0IiwgImJhckVuZCIsICJfY3VzdG9tIiwgInBhcnNlVmFsdWUiLCAicGFyc2VBcnJheU9yUHJpbWl0aXZlIiwgImlzRmxvYXRCYXIiLCAiY3VzdG9tIiwgImJhclNpZ24iLCAiYWN0dWFsQmFzZSIsICJpc0hvcml6b250YWwiLCAiYm9yZGVyUHJvcHMiLCAiaG9yaXpvbnRhbCIsICJiYXNlIiwgInNldEJvcmRlclNraXBwZWQiLCAiZWRnZSIsICJib3JkZXJTa2lwcGVkIiwgImVuYWJsZUJvcmRlclJhZGl1cyIsICJwYXJzZUVkZ2UiLCAic3dhcCIsICJzdGFydEVuZCIsICJvcmlnIiwgInYxIiwgInYyIiwgInYiLCAic2V0SW5mbGF0ZUFtb3VudCIsICJpbmZsYXRlQW1vdW50IiwgIkJhckNvbnRyb2xsZXIiLCAib2JqIiwgImJhcnMiLCAiZ2V0QmFzZVBpeGVsIiwgIl9nZXRSdWxlciIsICJ2cGl4ZWxzIiwgImhlYWQiLCAiX2NhbGN1bGF0ZUJhclZhbHVlUGl4ZWxzIiwgImlwaXhlbHMiLCAiX2NhbGN1bGF0ZUJhckluZGV4UGl4ZWxzIiwgImNlbnRlciIsICJoZWlnaHQiLCAid2lkdGgiLCAiX2dldFN0YWNrcyIsICJsYXN0IiwgImdyb3VwZWQiLCAiY3VycmVudFBhcnNlZCIsICJpU2NhbGVWYWx1ZSIsICJza2lwTnVsbCIsICJmaW5kIiwgInZhbCIsICJpc05hTiIsICJpbmRleE9mIiwgIl9nZXRTdGFja0NvdW50IiwgIl9nZXRTdGFja0luZGV4IiwgIm5hbWUiLCAiX3N0YXJ0UGl4ZWwiLCAiX2VuZFBpeGVsIiwgImJhc2VWYWx1ZSIsICJtaW5CYXJMZW5ndGgiLCAiZmxvYXRpbmciLCAiZ2V0RGF0YVZpc2liaWxpdHkiLCAic3RhcnRQaXhlbCIsICJnZXRQaXhlbEZvckRlY2ltYWwiLCAiZW5kUGl4ZWwiLCAiZ2V0VmFsdWVGb3JQaXhlbCIsICJoYWxmR3JpZCIsICJnZXRMaW5lV2lkdGhGb3JWYWx1ZSIsICJtYXhCYXJUaGlja25lc3MiLCAiSW5maW5pdHkiLCAic3RhY2tJbmRleCIsICJyZWN0cyIsICJudW1iZXJzIiwgIm92ZXJyaWRlcyIsICJfaW5kZXhfIiwgIm9mZnNldCIsICJncmlkIiwgIl92YWx1ZV8iLCAiYmVnaW5BdFplcm8iLCAiZ2V0UmF0aW9BbmRPZmZzZXQiLCAicm90YXRpb24iLCAiY2lyY3VtZmVyZW5jZSIsICJjdXRvdXQiLCAicmF0aW9YIiwgInJhdGlvWSIsICJvZmZzZXRYIiwgIm9mZnNldFkiLCAiVEFVIiwgInN0YXJ0QW5nbGUiLCAiZW5kQW5nbGUiLCAic3RhcnRYIiwgIk1hdGgiLCAiY29zIiwgInN0YXJ0WSIsICJzaW4iLCAiZW5kWCIsICJlbmRZIiwgImNhbGNNYXgiLCAiYW5nbGUiLCAiYSIsICJiIiwgIl9hbmdsZUJldHdlZW4iLCAibWF4IiwgImNhbGNNaW4iLCAibWluIiwgIm1heFgiLCAibWF4WSIsICJIQUxGX1BJIiwgIm1pblgiLCAiUEkiLCAibWluWSIsICJEb3VnaG51dENvbnRyb2xsZXIiLCAiRGF0YXNldENvbnRyb2xsZXIiLCAiY29uc3RydWN0b3IiLCAiY2hhcnQiLCAiZGF0YXNldEluZGV4IiwgImVuYWJsZU9wdGlvblNoYXJpbmciLCAiaW5uZXJSYWRpdXMiLCAidW5kZWZpbmVkIiwgIm91dGVyUmFkaXVzIiwgImxpbmtTY2FsZXMiLCAicGFyc2UiLCAic3RhcnQiLCAiY291bnQiLCAiZGF0YSIsICJnZXREYXRhc2V0IiwgIm1ldGEiLCAiX2NhY2hlZE1ldGEiLCAiX3BhcnNpbmciLCAiX3BhcnNlZCIsICJnZXR0ZXIiLCAiaSIsICJpc09iamVjdCIsICJrZXkiLCAicmVzb2x2ZU9iamVjdEtleSIsICJpbGVuIiwgIl9nZXRSb3RhdGlvbiIsICJ0b1JhZGlhbnMiLCAib3B0aW9ucyIsICJfZ2V0Q2lyY3VtZmVyZW5jZSIsICJfZ2V0Um90YXRpb25FeHRlbnRzIiwgImRhdGFzZXRzIiwgImxlbmd0aCIsICJpc0RhdGFzZXRWaXNpYmxlIiwgImdldERhdGFzZXRNZXRhIiwgInR5cGUiLCAiX3R5cGUiLCAiY29udHJvbGxlciIsICJ1cGRhdGUiLCAibW9kZSIsICJjaGFydEFyZWEiLCAiYXJjcyIsICJzcGFjaW5nIiwgImdldE1heEJvcmRlcldpZHRoIiwgImdldE1heE9mZnNldCIsICJtYXhTaXplIiwgIndpZHRoIiwgImhlaWdodCIsICJ0b1BlcmNlbnRhZ2UiLCAiY2hhcnRXZWlnaHQiLCAiX2dldFJpbmdXZWlnaHQiLCAiaW5kZXgiLCAibWF4V2lkdGgiLCAibWF4SGVpZ2h0IiwgIm1heFJhZGl1cyIsICJ0b0RpbWVuc2lvbiIsICJyYWRpdXMiLCAicmFkaXVzTGVuZ3RoIiwgIl9nZXRWaXNpYmxlRGF0YXNldFdlaWdodFRvdGFsIiwgInRvdGFsIiwgImNhbGN1bGF0ZVRvdGFsIiwgIl9nZXRSaW5nV2VpZ2h0T2Zmc2V0IiwgInVwZGF0ZUVsZW1lbnRzIiwgIl9jaXJjdW1mZXJlbmNlIiwgInJlc2V0IiwgIm9wdHMiLCAiYW5pbWF0aW9uIiwgImFuaW1hdGVSb3RhdGUiLCAiZ2V0RGF0YVZpc2liaWxpdHkiLCAiaGlkZGVuIiwgImNhbGN1bGF0ZUNpcmN1bWZlcmVuY2UiLCAiYW5pbWF0aW9uT3B0cyIsICJjZW50ZXJYIiwgImxlZnQiLCAicmlnaHQiLCAiY2VudGVyWSIsICJ0b3AiLCAiYm90dG9tIiwgImFuaW1hdGVTY2FsZSIsICJzaGFyZWRPcHRpb25zIiwgImluY2x1ZGVPcHRpb25zIiwgIl9nZXRTaGFyZWRPcHRpb25zIiwgImFyYyIsICJwcm9wZXJ0aWVzIiwgIngiLCAieSIsICJyZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zIiwgImFjdGl2ZSIsICJ1cGRhdGVFbGVtZW50IiwgIm1ldGFEYXRhIiwgInZhbHVlIiwgImlzTmFOIiwgImFicyIsICJnZXRMYWJlbEFuZFZhbHVlIiwgImxhYmVscyIsICJmb3JtYXROdW1iZXIiLCAibG9jYWxlIiwgImxhYmVsIiwgImJvcmRlckFsaWduIiwgImJvcmRlcldpZHRoIiwgImhvdmVyQm9yZGVyV2lkdGgiLCAib2Zmc2V0IiwgImhvdmVyT2Zmc2V0IiwgInJpbmdXZWlnaHRPZmZzZXQiLCAidmFsdWVPckRlZmF1bHQiLCAid2VpZ2h0IiwgImlkIiwgImRlZmF1bHRzIiwgImRhdGFzZXRFbGVtZW50VHlwZSIsICJkYXRhRWxlbWVudFR5cGUiLCAiYW5pbWF0aW9ucyIsICJudW1iZXJzIiwgImluZGV4QXhpcyIsICJkZXNjcmlwdG9ycyIsICJfc2NyaXB0YWJsZSIsICJuYW1lIiwgIl9pbmRleGFibGUiLCAic3RhcnRzV2l0aCIsICJvdmVycmlkZXMiLCAiYXNwZWN0UmF0aW8iLCAicGx1Z2lucyIsICJsZWdlbmQiLCAiZ2VuZXJhdGVMYWJlbHMiLCAicG9pbnRTdHlsZSIsICJjb2xvciIsICJtYXAiLCAic3R5bGUiLCAiZ2V0U3R5bGUiLCAidGV4dCIsICJmaWxsU3R5bGUiLCAiYmFja2dyb3VuZENvbG9yIiwgInN0cm9rZVN0eWxlIiwgImJvcmRlckNvbG9yIiwgImZvbnRDb2xvciIsICJsaW5lV2lkdGgiLCAib25DbGljayIsICJlIiwgImxlZ2VuZEl0ZW0iLCAidG9nZ2xlRGF0YVZpc2liaWxpdHkiLCAiUGllQ29udHJvbGxlciIsICJEb3VnaG51dENvbnRyb2xsZXIiLCAiaWQiLCAiZGVmYXVsdHMiLCAiY3V0b3V0IiwgInJvdGF0aW9uIiwgImNpcmN1bWZlcmVuY2UiLCAicmFkaXVzIiwgImFic3RyYWN0IiwgIkVycm9yIiwgIkRhdGVBZGFwdGVyQmFzZSIsICJjb25zdHJ1Y3RvciIsICJvcHRpb25zIiwgIm92ZXJyaWRlIiwgIm1lbWJlcnMiLCAiT2JqZWN0IiwgImFzc2lnbiIsICJwcm90b3R5cGUiLCAiaW5pdCIsICJmb3JtYXRzIiwgInBhcnNlIiwgImZvcm1hdCIsICJhZGQiLCAiZGlmZiIsICJzdGFydE9mIiwgImVuZE9mIiwgIl9kYXRlIiwgImJpbmFyeVNlYXJjaCIsICJtZXRhc2V0IiwgImF4aXMiLCAidmFsdWUiLCAiaW50ZXJzZWN0IiwgImNvbnRyb2xsZXIiLCAiZGF0YSIsICJfc29ydGVkIiwgImlTY2FsZSIsICJfY2FjaGVkTWV0YSIsICJsZW5ndGgiLCAibG9va3VwTWV0aG9kIiwgIl9yZXZlcnNlUGl4ZWxzIiwgIl9ybG9va3VwQnlLZXkiLCAiX2xvb2t1cEJ5S2V5IiwgIl9zaGFyZWRPcHRpb25zIiwgImVsIiwgInJhbmdlIiwgImdldFJhbmdlIiwgInN0YXJ0IiwgImVuZCIsICJsbyIsICJoaSIsICJldmFsdWF0ZUludGVyYWN0aW9uSXRlbXMiLCAiY2hhcnQiLCAicG9zaXRpb24iLCAiaGFuZGxlciIsICJtZXRhc2V0cyIsICJnZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzIiwgImkiLCAiaWxlbiIsICJpbmRleCIsICJqIiwgImVsZW1lbnQiLCAic2tpcCIsICJnZXREaXN0YW5jZU1ldHJpY0ZvckF4aXMiLCAidXNlWCIsICJpbmRleE9mIiwgInVzZVkiLCAicHQxIiwgInB0MiIsICJkZWx0YVgiLCAiTWF0aCIsICJhYnMiLCAieCIsICJkZWx0YVkiLCAieSIsICJzcXJ0IiwgInBvdyIsICJnZXRJbnRlcnNlY3RJdGVtcyIsICJ1c2VGaW5hbFBvc2l0aW9uIiwgImluY2x1ZGVJbnZpc2libGUiLCAiaXRlbXMiLCAiaXNQb2ludEluQXJlYSIsICJldmFsdWF0aW9uRnVuYyIsICJkYXRhc2V0SW5kZXgiLCAiX2lzUG9pbnRJbkFyZWEiLCAiY2hhcnRBcmVhIiwgImluUmFuZ2UiLCAicHVzaCIsICJnZXROZWFyZXN0UmFkaWFsSXRlbXMiLCAic3RhcnRBbmdsZSIsICJlbmRBbmdsZSIsICJnZXRQcm9wcyIsICJhbmdsZSIsICJnZXRBbmdsZUZyb21Qb2ludCIsICJfYW5nbGVCZXR3ZWVuIiwgImdldE5lYXJlc3RDYXJ0ZXNpYW5JdGVtcyIsICJkaXN0YW5jZU1ldHJpYyIsICJtaW5EaXN0YW5jZSIsICJOdW1iZXIiLCAiUE9TSVRJVkVfSU5GSU5JVFkiLCAiY2VudGVyIiwgImdldENlbnRlclBvaW50IiwgInBvaW50SW5BcmVhIiwgImRpc3RhbmNlIiwgImdldE5lYXJlc3RJdGVtcyIsICJnZXRBeGlzSXRlbXMiLCAicmFuZ2VNZXRob2QiLCAiaW50ZXJzZWN0c0l0ZW0iLCAibW9kZXMiLCAiZSIsICJnZXRSZWxhdGl2ZVBvc2l0aW9uIiwgImVsZW1lbnRzIiwgImZvckVhY2giLCAibWV0YSIsICJkYXRhc2V0IiwgImdldERhdGFzZXRNZXRhIiwgInBvaW50IiwgIm5lYXJlc3QiLCAiU1RBVElDX1BPU0lUSU9OUyIsICJmaWx0ZXJCeVBvc2l0aW9uIiwgImFycmF5IiwgImZpbHRlciIsICJ2IiwgInBvcyIsICJmaWx0ZXJEeW5hbWljUG9zaXRpb25CeUF4aXMiLCAiYm94IiwgInNvcnRCeVdlaWdodCIsICJyZXZlcnNlIiwgInNvcnQiLCAiYSIsICJiIiwgInYwIiwgInYxIiwgIndlaWdodCIsICJ3cmFwQm94ZXMiLCAiYm94ZXMiLCAibGF5b3V0Qm94ZXMiLCAic3RhY2siLCAic3RhY2tXZWlnaHQiLCAiaG9yaXpvbnRhbCIsICJpc0hvcml6b250YWwiLCAiYnVpbGRTdGFja3MiLCAibGF5b3V0cyIsICJzdGFja3MiLCAid3JhcCIsICJpbmNsdWRlcyIsICJfc3RhY2siLCAiY291bnQiLCAicGxhY2VkIiwgInNpemUiLCAic2V0TGF5b3V0RGltcyIsICJwYXJhbXMiLCAidkJveE1heFdpZHRoIiwgImhCb3hNYXhIZWlnaHQiLCAibGF5b3V0IiwgImZ1bGxTaXplIiwgImZhY3RvciIsICJ3aWR0aCIsICJhdmFpbGFibGVXaWR0aCIsICJoZWlnaHQiLCAiYXZhaWxhYmxlSGVpZ2h0IiwgImJ1aWxkTGF5b3V0Qm94ZXMiLCAibGVmdCIsICJyaWdodCIsICJ0b3AiLCAiYm90dG9tIiwgImNlbnRlckhvcml6b250YWwiLCAiY2VudGVyVmVydGljYWwiLCAibGVmdEFuZFRvcCIsICJjb25jYXQiLCAicmlnaHRBbmRCb3R0b20iLCAidmVydGljYWwiLCAiZ2V0Q29tYmluZWRNYXgiLCAibWF4UGFkZGluZyIsICJtYXgiLCAidXBkYXRlTWF4UGFkZGluZyIsICJib3hQYWRkaW5nIiwgInVwZGF0ZURpbXMiLCAiaXNPYmplY3QiLCAiZ2V0UGFkZGluZyIsICJuZXdXaWR0aCIsICJvdXRlcldpZHRoIiwgIm5ld0hlaWdodCIsICJvdXRlckhlaWdodCIsICJ3aWR0aENoYW5nZWQiLCAidyIsICJoZWlnaHRDaGFuZ2VkIiwgImgiLCAic2FtZSIsICJvdGhlciIsICJoYW5kbGVNYXhQYWRkaW5nIiwgInVwZGF0ZVBvcyIsICJjaGFuZ2UiLCAiZ2V0TWFyZ2lucyIsICJtYXJnaW5Gb3JQb3NpdGlvbnMiLCAicG9zaXRpb25zIiwgIm1hcmdpbiIsICJmaXRCb3hlcyIsICJyZWZpdEJveGVzIiwgInJlZml0IiwgImNoYW5nZWQiLCAidXBkYXRlIiwgInNldEJveERpbXMiLCAicGxhY2VCb3hlcyIsICJ1c2VyUGFkZGluZyIsICJwYWRkaW5nIiwgImRlZmluZWQiLCAiYWRkQm94IiwgIml0ZW0iLCAiX2xheWVycyIsICJ6IiwgImRyYXciLCAicmVtb3ZlQm94IiwgImxheW91dEl0ZW0iLCAic3BsaWNlIiwgImNvbmZpZ3VyZSIsICJtaW5QYWRkaW5nIiwgInRvUGFkZGluZyIsICJ2ZXJ0aWNhbEJveGVzIiwgImhvcml6b250YWxCb3hlcyIsICJlYWNoIiwgImJlZm9yZUxheW91dCIsICJ2aXNpYmxlVmVydGljYWxCb3hDb3VudCIsICJyZWR1Y2UiLCAidG90YWwiLCAiZGlzcGxheSIsICJmcmVlemUiLCAiQmFzZVBsYXRmb3JtIiwgImFjcXVpcmVDb250ZXh0IiwgImNhbnZhcyIsICJhc3BlY3RSYXRpbyIsICJyZWxlYXNlQ29udGV4dCIsICJjb250ZXh0IiwgImFkZEV2ZW50TGlzdGVuZXIiLCAidHlwZSIsICJsaXN0ZW5lciIsICJyZW1vdmVFdmVudExpc3RlbmVyIiwgImdldERldmljZVBpeGVsUmF0aW8iLCAiZ2V0TWF4aW11bVNpemUiLCAiZmxvb3IiLCAiaXNBdHRhY2hlZCIsICJ1cGRhdGVDb25maWciLCAiY29uZmlnIiwgIkJhc2ljUGxhdGZvcm0iLCAiZ2V0Q29udGV4dCIsICJhbmltYXRpb24iLCAiRVhQQU5ET19LRVkiLCAiRVZFTlRfVFlQRVMiLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiLCAidG91Y2hlbmQiLCAicG9pbnRlcmVudGVyIiwgInBvaW50ZXJkb3duIiwgInBvaW50ZXJtb3ZlIiwgInBvaW50ZXJ1cCIsICJwb2ludGVybGVhdmUiLCAicG9pbnRlcm91dCIsICJpc051bGxPckVtcHR5IiwgImluaXRDYW52YXMiLCAic3R5bGUiLCAicmVuZGVySGVpZ2h0IiwgImdldEF0dHJpYnV0ZSIsICJyZW5kZXJXaWR0aCIsICJpbml0aWFsIiwgImJveFNpemluZyIsICJkaXNwbGF5V2lkdGgiLCAicmVhZFVzZWRTaXplIiwgInVuZGVmaW5lZCIsICJkaXNwbGF5SGVpZ2h0IiwgImV2ZW50TGlzdGVuZXJPcHRpb25zIiwgInN1cHBvcnRzRXZlbnRMaXN0ZW5lck9wdGlvbnMiLCAicGFzc2l2ZSIsICJhZGRMaXN0ZW5lciIsICJub2RlIiwgInJlbW92ZUxpc3RlbmVyIiwgImZyb21OYXRpdmVFdmVudCIsICJldmVudCIsICJuYXRpdmUiLCAibm9kZUxpc3RDb250YWlucyIsICJub2RlTGlzdCIsICJjb250YWlucyIsICJjcmVhdGVBdHRhY2hPYnNlcnZlciIsICJvYnNlcnZlciIsICJNdXRhdGlvbk9ic2VydmVyIiwgImVudHJpZXMiLCAidHJpZ2dlciIsICJlbnRyeSIsICJhZGRlZE5vZGVzIiwgInJlbW92ZWROb2RlcyIsICJvYnNlcnZlIiwgImRvY3VtZW50IiwgImNoaWxkTGlzdCIsICJzdWJ0cmVlIiwgImNyZWF0ZURldGFjaE9ic2VydmVyIiwgImRycExpc3RlbmluZ0NoYXJ0cyIsICJNYXAiLCAib2xkRGV2aWNlUGl4ZWxSYXRpbyIsICJvbldpbmRvd1Jlc2l6ZSIsICJkcHIiLCAid2luZG93IiwgImRldmljZVBpeGVsUmF0aW8iLCAicmVzaXplIiwgImN1cnJlbnREZXZpY2VQaXhlbFJhdGlvIiwgImxpc3RlbkRldmljZVBpeGVsUmF0aW9DaGFuZ2VzIiwgInNldCIsICJ1bmxpc3RlbkRldmljZVBpeGVsUmF0aW9DaGFuZ2VzIiwgImRlbGV0ZSIsICJjcmVhdGVSZXNpemVPYnNlcnZlciIsICJjb250YWluZXIiLCAiX2dldFBhcmVudE5vZGUiLCAidGhyb3R0bGVkIiwgImNsaWVudFdpZHRoIiwgIlJlc2l6ZU9ic2VydmVyIiwgImNvbnRlbnRSZWN0IiwgInJlbGVhc2VPYnNlcnZlciIsICJkaXNjb25uZWN0IiwgImNyZWF0ZVByb3h5QW5kTGlzdGVuIiwgInByb3h5IiwgImN0eCIsICJEb21QbGF0Zm9ybSIsICJwcm9wIiwgImlzTnVsbE9yVW5kZWYiLCAicmVtb3ZlQXR0cmlidXRlIiwgInNldEF0dHJpYnV0ZSIsICJrZXlzIiwgImtleSIsICJwcm94aWVzIiwgIiRwcm94aWVzIiwgImhhbmRsZXJzIiwgImF0dGFjaCIsICJkZXRhY2giLCAiaXNDb25uZWN0ZWQiLCAiX2RldGVjdFBsYXRmb3JtIiwgIl9pc0RvbVN1cHBvcnRlZCIsICJPZmZzY3JlZW5DYW52YXMiLCAiRWxlbWVudCIsICJhY3RpdmUiLCAiJGFuaW1hdGlvbnMiLCAidG9vbHRpcFBvc2l0aW9uIiwgImhhc1ZhbHVlIiwgImlzTnVtYmVyIiwgInByb3BzIiwgImZpbmFsIiwgImFuaW1zIiwgInJldCIsICJfdG8iLCAiZGVmYXVsdHMiLCAiZGVmYXVsdFJvdXRlcyIsICJhdXRvU2tpcCIsICJzY2FsZSIsICJ0aWNrcyIsICJ0aWNrT3B0cyIsICJkZXRlcm1pbmVkTWF4VGlja3MiLCAiZGV0ZXJtaW5lTWF4VGlja3MiLCAidGlja3NMaW1pdCIsICJtaW4iLCAibWF4VGlja3NMaW1pdCIsICJtYWpvckluZGljZXMiLCAibWFqb3IiLCAiZW5hYmxlZCIsICJnZXRNYWpvckluZGljZXMiLCAibnVtTWFqb3JJbmRpY2VzIiwgImZpcnN0IiwgImxhc3QiLCAibmV3VGlja3MiLCAic2tpcE1ham9ycyIsICJzcGFjaW5nIiwgImNhbGN1bGF0ZVNwYWNpbmciLCAiYXZnTWFqb3JTcGFjaW5nIiwgInJvdW5kIiwgIm9mZnNldCIsICJ0aWNrTGVuZ3RoIiwgIl90aWNrU2l6ZSIsICJtYXhTY2FsZSIsICJfbGVuZ3RoIiwgIm1heENoYXJ0IiwgIl9tYXhMZW5ndGgiLCAiZXZlbk1ham9yU3BhY2luZyIsICJnZXRFdmVuU3BhY2luZyIsICJmYWN0b3JzIiwgIl9mYWN0b3JpemUiLCAicmVzdWx0IiwgIm5leHQiLCAiY2VpbCIsICJtYWpvclN0YXJ0IiwgIm1ham9yRW5kIiwgInZhbHVlT3JEZWZhdWx0IiwgImFyciIsICJsZW4iLCAicmV2ZXJzZUFsaWduIiwgImFsaWduIiwgIm9mZnNldEZyb21FZGdlIiwgImVkZ2UiLCAiZ2V0VGlja3NMaW1pdCIsICJ0aWNrc0xlbmd0aCIsICJzYW1wbGUiLCAibnVtSXRlbXMiLCAiaW5jcmVtZW50IiwgImdldFBpeGVsRm9yR3JpZExpbmUiLCAib2Zmc2V0R3JpZExpbmVzIiwgInZhbGlkSW5kZXgiLCAiX3N0YXJ0UGl4ZWwiLCAiX2VuZFBpeGVsIiwgImVwc2lsb24iLCAibGluZVZhbHVlIiwgImdldFBpeGVsRm9yVGljayIsICJnYXJiYWdlQ29sbGVjdCIsICJjYWNoZXMiLCAiY2FjaGUiLCAiZ2MiLCAiZ2NMZW4iLCAiZ2V0VGlja01hcmtMZW5ndGgiLCAiZHJhd1RpY2tzIiwgImdldFRpdGxlSGVpZ2h0IiwgImZhbGxiYWNrIiwgImZvbnQiLCAidG9Gb250IiwgImxpbmVzIiwgImlzQXJyYXkiLCAidGV4dCIsICJsaW5lSGVpZ2h0IiwgImNyZWF0ZVNjYWxlQ29udGV4dCIsICJwYXJlbnQiLCAiY3JlYXRlQ29udGV4dCIsICJjcmVhdGVUaWNrQ29udGV4dCIsICJ0aWNrIiwgInRpdGxlQWxpZ24iLCAiX3RvTGVmdFJpZ2h0Q2VudGVyIiwgInRpdGxlQXJncyIsICJzY2FsZXMiLCAicm90YXRpb24iLCAibWF4V2lkdGgiLCAidGl0bGVYIiwgInRpdGxlWSIsICJfYWxpZ25TdGFydEVuZCIsICJwb3NpdGlvbkF4aXNJRCIsICJnZXRQaXhlbEZvclZhbHVlIiwgIkhBTEZfUEkiLCAiU2NhbGUiLCAiY2ZnIiwgImlkIiwgIl9tYXJnaW5zIiwgIm1heEhlaWdodCIsICJwYWRkaW5nVG9wIiwgInBhZGRpbmdCb3R0b20iLCAicGFkZGluZ0xlZnQiLCAicGFkZGluZ1JpZ2h0IiwgImxhYmVsUm90YXRpb24iLCAiX3JhbmdlIiwgIl9ncmlkTGluZUl0ZW1zIiwgIl9sYWJlbEl0ZW1zIiwgIl9sYWJlbFNpemVzIiwgIl9sb25nZXN0VGV4dENhY2hlIiwgIl91c2VyTWF4IiwgIl91c2VyTWluIiwgIl9zdWdnZXN0ZWRNYXgiLCAiX3N1Z2dlc3RlZE1pbiIsICJfdGlja3NMZW5ndGgiLCAiX2JvcmRlclZhbHVlIiwgIl9jYWNoZSIsICJfZGF0YUxpbWl0c0NhY2hlZCIsICIkY29udGV4dCIsICJzZXRDb250ZXh0IiwgInN1Z2dlc3RlZE1pbiIsICJzdWdnZXN0ZWRNYXgiLCAicmF3IiwgImdldFVzZXJCb3VuZHMiLCAiZmluaXRlT3JEZWZhdWx0IiwgIk5FR0FUSVZFX0lORklOSVRZIiwgIm1pbkRlZmluZWQiLCAiaXNGaW5pdGUiLCAibWF4RGVmaW5lZCIsICJnZXRNaW5NYXgiLCAiY2FuU3RhY2siLCAibWV0YXMiLCAiZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMiLCAiZ2V0VGlja3MiLCAiZ2V0TGFiZWxzIiwgImxhYmVscyIsICJ4TGFiZWxzIiwgInlMYWJlbHMiLCAiZ2V0TGFiZWxJdGVtcyIsICJfY29tcHV0ZUxhYmVsSXRlbXMiLCAiYmVmb3JlVXBkYXRlIiwgImNhbGwiLCAibWFyZ2lucyIsICJiZWdpbkF0WmVybyIsICJncmFjZSIsICJzYW1wbGVTaXplIiwgImJlZm9yZVNldERpbWVuc2lvbnMiLCAic2V0RGltZW5zaW9ucyIsICJhZnRlclNldERpbWVuc2lvbnMiLCAiYmVmb3JlRGF0YUxpbWl0cyIsICJkZXRlcm1pbmVEYXRhTGltaXRzIiwgImFmdGVyRGF0YUxpbWl0cyIsICJfYWRkR3JhY2UiLCAiYmVmb3JlQnVpbGRUaWNrcyIsICJidWlsZFRpY2tzIiwgImFmdGVyQnVpbGRUaWNrcyIsICJzYW1wbGluZ0VuYWJsZWQiLCAiX2NvbnZlcnRUaWNrc1RvTGFiZWxzIiwgImJlZm9yZUNhbGN1bGF0ZUxhYmVsUm90YXRpb24iLCAiY2FsY3VsYXRlTGFiZWxSb3RhdGlvbiIsICJhZnRlckNhbGN1bGF0ZUxhYmVsUm90YXRpb24iLCAic291cmNlIiwgImFmdGVyQXV0b1NraXAiLCAiYmVmb3JlRml0IiwgImZpdCIsICJhZnRlckZpdCIsICJhZnRlclVwZGF0ZSIsICJyZXZlcnNlUGl4ZWxzIiwgInN0YXJ0UGl4ZWwiLCAiZW5kUGl4ZWwiLCAiX2FsaWduVG9QaXhlbHMiLCAiYWxpZ25Ub1BpeGVscyIsICJfY2FsbEhvb2tzIiwgIm5hbWUiLCAibm90aWZ5UGx1Z2lucyIsICJiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb24iLCAiZ2VuZXJhdGVUaWNrTGFiZWxzIiwgImxhYmVsIiwgImNhbGxiYWNrIiwgImFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uIiwgIm51bVRpY2tzIiwgIm1pblJvdGF0aW9uIiwgIm1heFJvdGF0aW9uIiwgInRpY2tXaWR0aCIsICJtYXhMYWJlbERpYWdvbmFsIiwgIl9pc1Zpc2libGUiLCAibGFiZWxTaXplcyIsICJfZ2V0TGFiZWxTaXplcyIsICJtYXhMYWJlbFdpZHRoIiwgIndpZGVzdCIsICJtYXhMYWJlbEhlaWdodCIsICJoaWdoZXN0IiwgIl9saW1pdFZhbHVlIiwgImdyaWQiLCAidGl0bGUiLCAidG9EZWdyZWVzIiwgImFzaW4iLCAibWluU2l6ZSIsICJ0aXRsZU9wdHMiLCAiZ3JpZE9wdHMiLCAidGl0bGVIZWlnaHQiLCAidGlja1BhZGRpbmciLCAiYW5nbGVSYWRpYW5zIiwgInRvUmFkaWFucyIsICJjb3MiLCAic2luIiwgImxhYmVsSGVpZ2h0IiwgIm1pcnJvciIsICJsYWJlbFdpZHRoIiwgIl9jYWxjdWxhdGVQYWRkaW5nIiwgIl9oYW5kbGVNYXJnaW5zIiwgImlzUm90YXRlZCIsICJsYWJlbHNCZWxvd1RpY2tzIiwgIm9mZnNldExlZnQiLCAib2Zmc2V0UmlnaHQiLCAiaXNGdWxsU2l6ZSIsICJfY29tcHV0ZUxhYmVsU2l6ZXMiLCAid2lkdGhzIiwgImhlaWdodHMiLCAid2lkZXN0TGFiZWxTaXplIiwgImhpZ2hlc3RMYWJlbFNpemUiLCAiamxlbiIsICJ0aWNrRm9udCIsICJmb250U3RyaW5nIiwgIm5lc3RlZExhYmVsIiwgIl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zIiwgInN0cmluZyIsICJfbWVhc3VyZVRleHQiLCAidmFsdWVBdCIsICJpZHgiLCAiZ2V0TGFiZWxGb3JWYWx1ZSIsICJOYU4iLCAiZ2V0VmFsdWVGb3JQaXhlbCIsICJwaXhlbCIsICJnZXRQaXhlbEZvckRlY2ltYWwiLCAiZGVjaW1hbCIsICJfaW50MTZSYW5nZSIsICJfYWxpZ25QaXhlbCIsICJnZXREZWNpbWFsRm9yUGl4ZWwiLCAiZ2V0QmFzZVBpeGVsIiwgImdldEJhc2VWYWx1ZSIsICJvcHRpb25UaWNrcyIsICJyb3QiLCAiYXV0b1NraXBQYWRkaW5nIiwgIl9jb21wdXRlR3JpZExpbmVJdGVtcyIsICJib3JkZXIiLCAidGwiLCAiYm9yZGVyT3B0cyIsICJheGlzV2lkdGgiLCAiYXhpc0hhbGZXaWR0aCIsICJhbGlnbkJvcmRlclZhbHVlIiwgImJvcmRlclZhbHVlIiwgImFsaWduZWRMaW5lVmFsdWUiLCAidHgxIiwgInR5MSIsICJ0eDIiLCAidHkyIiwgIngxIiwgInkxIiwgIngyIiwgInkyIiwgImxpbWl0IiwgInN0ZXAiLCAib3B0c0F0SW5kZXgiLCAib3B0c0F0SW5kZXhCb3JkZXIiLCAibGluZVdpZHRoIiwgImxpbmVDb2xvciIsICJjb2xvciIsICJib3JkZXJEYXNoIiwgImRhc2giLCAiYm9yZGVyRGFzaE9mZnNldCIsICJkYXNoT2Zmc2V0IiwgInRpY2tDb2xvciIsICJ0aWNrQm9yZGVyRGFzaCIsICJ0aWNrQm9yZGVyRGFzaE9mZnNldCIsICJjcm9zc0FsaWduIiwgInRpY2tBbmRQYWRkaW5nIiwgImhUaWNrQW5kUGFkZGluZyIsICJ0ZXh0QWxpZ24iLCAibGluZUNvdW50IiwgInRleHRPZmZzZXQiLCAidGV4dEJhc2VsaW5lIiwgIl9nZXRYQXhpc0xhYmVsQWxpZ25tZW50IiwgIl9nZXRZQXhpc0xhYmVsQWxpZ25tZW50IiwgImxhYmVsT2Zmc2V0IiwgImhhbGZDb3VudCIsICJzdHJva2VDb2xvciIsICJ0ZXh0U3Ryb2tlQ29sb3IiLCAic3Ryb2tlV2lkdGgiLCAidGV4dFN0cm9rZVdpZHRoIiwgInRpY2tUZXh0QWxpZ24iLCAic2hvd0xhYmVsQmFja2Ryb3AiLCAiYmFja2Ryb3AiLCAibGFiZWxQYWRkaW5nIiwgImJhY2tkcm9wUGFkZGluZyIsICJiYWNrZHJvcENvbG9yIiwgInRyYW5zbGF0aW9uIiwgIl9jb21wdXRlTGFiZWxBcmVhIiwgImRyYXdCYWNrZ3JvdW5kIiwgImJhY2tncm91bmRDb2xvciIsICJzYXZlIiwgImZpbGxTdHlsZSIsICJmaWxsUmVjdCIsICJyZXN0b3JlIiwgImdldExpbmVXaWR0aEZvclZhbHVlIiwgImZpbmRJbmRleCIsICJ0IiwgIm9wdHMiLCAiZHJhd0dyaWQiLCAiZHJhd0xpbmUiLCAicDEiLCAicDIiLCAic3Ryb2tlU3R5bGUiLCAic2V0TGluZURhc2giLCAibGluZURhc2hPZmZzZXQiLCAiYmVnaW5QYXRoIiwgIm1vdmVUbyIsICJsaW5lVG8iLCAic3Ryb2tlIiwgImRyYXdPbkNoYXJ0QXJlYSIsICJkcmF3Qm9yZGVyIiwgImxhc3RMaW5lV2lkdGgiLCAiZHJhd0xhYmVscyIsICJhcmVhIiwgImNsaXBBcmVhIiwgInJlbmRlclRleHRPcHRpb25zIiwgInJlbmRlclRleHQiLCAidW5jbGlwQXJlYSIsICJkcmF3VGl0bGUiLCAidHoiLCAiZ3oiLCAiYnoiLCAiYXhpc0lEIiwgIl9tYXhEaWdpdHMiLCAiZm9udFNpemUiLCAiVHlwZWRSZWdpc3RyeSIsICJzY29wZSIsICJjcmVhdGUiLCAiaXNGb3JUeXBlIiwgImlzUHJvdG90eXBlT2YiLCAicmVnaXN0ZXIiLCAicHJvdG8iLCAiZ2V0UHJvdG90eXBlT2YiLCAicGFyZW50U2NvcGUiLCAiaXNJQ2hhcnRDb21wb25lbnQiLCAicmVnaXN0ZXJEZWZhdWx0cyIsICJvdmVycmlkZXMiLCAiZ2V0IiwgInVucmVnaXN0ZXIiLCAiaXRlbURlZmF1bHRzIiwgIm1lcmdlIiwgInJvdXRlRGVmYXVsdHMiLCAiZGVzY3JpcHRvcnMiLCAiZGVzY3JpYmUiLCAicm91dGVzIiwgInByb3BlcnR5IiwgInByb3BlcnR5UGFydHMiLCAic3BsaXQiLCAic291cmNlTmFtZSIsICJwb3AiLCAic291cmNlU2NvcGUiLCAiam9pbiIsICJwYXJ0cyIsICJ0YXJnZXROYW1lIiwgInRhcmdldFNjb3BlIiwgInJvdXRlIiwgIlJlZ2lzdHJ5IiwgImNvbnRyb2xsZXJzIiwgIkRhdGFzZXRDb250cm9sbGVyIiwgInBsdWdpbnMiLCAiX3R5cGVkUmVnaXN0cmllcyIsICJhcmdzIiwgIl9lYWNoIiwgInJlbW92ZSIsICJhZGRDb250cm9sbGVycyIsICJhZGRFbGVtZW50cyIsICJhZGRQbHVnaW5zIiwgImFkZFNjYWxlcyIsICJnZXRDb250cm9sbGVyIiwgIl9nZXQiLCAiZ2V0RWxlbWVudCIsICJnZXRQbHVnaW4iLCAiZ2V0U2NhbGUiLCAicmVtb3ZlQ29udHJvbGxlcnMiLCAicmVtb3ZlRWxlbWVudHMiLCAicmVtb3ZlUGx1Z2lucyIsICJyZW1vdmVTY2FsZXMiLCAibWV0aG9kIiwgInR5cGVkUmVnaXN0cnkiLCAiYXJnIiwgInJlZyIsICJfZ2V0UmVnaXN0cnlGb3JUeXBlIiwgIl9leGVjIiwgIml0ZW1SZWciLCAicmVnaXN0cnkiLCAiY29tcG9uZW50IiwgImNhbWVsTWV0aG9kIiwgIl9jYXBpdGFsaXplIiwgIlBsdWdpblNlcnZpY2UiLCAiX2luaXQiLCAibm90aWZ5IiwgImhvb2siLCAiX2NyZWF0ZURlc2NyaXB0b3JzIiwgIl9ub3RpZnkiLCAiX2Rlc2NyaXB0b3JzIiwgImRlc2NyaXB0b3IiLCAicGx1Z2luIiwgImNhbGxDYWxsYmFjayIsICJjYW5jZWxhYmxlIiwgImludmFsaWRhdGUiLCAiX29sZENhY2hlIiwgIl9ub3RpZnlTdGF0ZUNoYW5nZXMiLCAiYWxsIiwgImFsbFBsdWdpbnMiLCAiY3JlYXRlRGVzY3JpcHRvcnMiLCAicHJldmlvdXNEZXNjcmlwdG9ycyIsICJzb21lIiwgImxvY2FsSWRzIiwgImxvY2FsIiwgImdldE9wdHMiLCAicGx1Z2luT3B0cyIsICJwbHVnaW5TY29wZUtleXMiLCAic2NvcGVzIiwgImdldE9wdGlvblNjb3BlcyIsICJjcmVhdGVSZXNvbHZlciIsICJzY3JpcHRhYmxlIiwgImluZGV4YWJsZSIsICJhbGxLZXlzIiwgImdldEluZGV4QXhpcyIsICJkYXRhc2V0RGVmYXVsdHMiLCAiZGF0YXNldHMiLCAiZGF0YXNldE9wdGlvbnMiLCAiaW5kZXhBeGlzIiwgImdldEF4aXNGcm9tRGVmYXVsdFNjYWxlSUQiLCAiZ2V0RGVmYXVsdFNjYWxlSURGcm9tQXhpcyIsICJpZE1hdGNoZXNBeGlzIiwgImF4aXNGcm9tUG9zaXRpb24iLCAiZGV0ZXJtaW5lQXhpcyIsICJzY2FsZU9wdGlvbnMiLCAidG9Mb3dlckNhc2UiLCAiZ2V0QXhpc0Zyb21EYXRhc2V0IiwgInJldHJpZXZlQXhpc0Zyb21EYXRhc2V0cyIsICJib3VuZERzIiwgImQiLCAieEF4aXNJRCIsICJ5QXhpc0lEIiwgIm1lcmdlU2NhbGVDb25maWciLCAiY2hhcnREZWZhdWx0cyIsICJjb25maWdTY2FsZXMiLCAiY2hhcnRJbmRleEF4aXMiLCAic2NhbGVDb25mIiwgImNvbnNvbGUiLCAiZXJyb3IiLCAiX3Byb3h5IiwgIndhcm4iLCAiZGVmYXVsdElkIiwgImRlZmF1bHRTY2FsZU9wdGlvbnMiLCAibWVyZ2VJZiIsICJkZWZhdWx0SUQiLCAiaW5pdE9wdGlvbnMiLCAiaW5pdERhdGEiLCAiaW5pdENvbmZpZyIsICJrZXlDYWNoZSIsICJrZXlzQ2FjaGVkIiwgIlNldCIsICJjYWNoZWRLZXlzIiwgImNhY2hlS2V5IiwgImdlbmVyYXRlIiwgImFkZElmRm91bmQiLCAib2JqIiwgInJlc29sdmVPYmplY3RLZXkiLCAiQ29uZmlnIiwgIl9jb25maWciLCAiX3Njb3BlQ2FjaGUiLCAiX3Jlc29sdmVyQ2FjaGUiLCAicGxhdGZvcm0iLCAiY2xlYXJDYWNoZSIsICJjbGVhciIsICJkYXRhc2V0U2NvcGVLZXlzIiwgImRhdGFzZXRUeXBlIiwgImRhdGFzZXRBbmltYXRpb25TY29wZUtleXMiLCAidHJhbnNpdGlvbiIsICJkYXRhc2V0RWxlbWVudFNjb3BlS2V5cyIsICJlbGVtZW50VHlwZSIsICJhZGRpdGlvbmFsT3B0aW9uU2NvcGVzIiwgIl9jYWNoZWRTY29wZXMiLCAibWFpblNjb3BlIiwgInJlc2V0Q2FjaGUiLCAia2V5TGlzdHMiLCAiY2FjaGVkIiwgIkFycmF5IiwgImZyb20iLCAiaGFzIiwgImNoYXJ0T3B0aW9uU2NvcGVzIiwgInJlc29sdmVOYW1lZE9wdGlvbnMiLCAibmFtZXMiLCAicHJlZml4ZXMiLCAiJHNoYXJlZCIsICJyZXNvbHZlciIsICJzdWJQcmVmaXhlcyIsICJnZXRSZXNvbHZlciIsICJuZWVkQ29udGV4dCIsICJpc0Z1bmN0aW9uIiwgInN1YlJlc29sdmVyIiwgIl9hdHRhY2hDb250ZXh0IiwgImRlc2NyaXB0b3JEZWZhdWx0cyIsICJyZXNvbHZlckNhY2hlIiwgIl9jcmVhdGVSZXNvbHZlciIsICJwIiwgImhhc0Z1bmN0aW9uIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiaXNTY3JpcHRhYmxlIiwgImlzSW5kZXhhYmxlIiwgIktOT1dOX1BPU0lUSU9OUyIsICJwb3NpdGlvbklzSG9yaXpvbnRhbCIsICJjb21wYXJlMkxldmVsIiwgImwxIiwgImwyIiwgIm9uQW5pbWF0aW9uc0NvbXBsZXRlIiwgImFuaW1hdGlvbk9wdGlvbnMiLCAib25Db21wbGV0ZSIsICJvbkFuaW1hdGlvblByb2dyZXNzIiwgIm9uUHJvZ3Jlc3MiLCAiZ2V0Q2FudmFzIiwgImdldEVsZW1lbnRCeUlkIiwgImluc3RhbmNlcyIsICJnZXRDaGFydCIsICJ2YWx1ZXMiLCAiYyIsICJtb3ZlTnVtZXJpY0tleXMiLCAibW92ZSIsICJpbnRLZXkiLCAiZGV0ZXJtaW5lTGFzdEV2ZW50IiwgImxhc3RFdmVudCIsICJpbkNoYXJ0QXJlYSIsICJpc0NsaWNrIiwgImdldFNpemVGb3JBcmVhIiwgImZpZWxkIiwgImNsaXAiLCAiZ2V0RGF0YXNldEFyZWEiLCAieFNjYWxlIiwgInlTY2FsZSIsICJDaGFydCIsICJpbnZhbGlkYXRlUGx1Z2lucyIsICJ1c2VyQ29uZmlnIiwgImluaXRpYWxDYW52YXMiLCAiZXhpc3RpbmdDaGFydCIsICJ1aWQiLCAiX29wdGlvbnMiLCAiX2FzcGVjdFJhdGlvIiwgIl9tZXRhc2V0cyIsICJfc3RhY2tzIiwgIl9hY3RpdmUiLCAiX2xhc3RFdmVudCIsICJfbGlzdGVuZXJzIiwgIl9yZXNwb25zaXZlTGlzdGVuZXJzIiwgIl9zb3J0ZWRNZXRhc2V0cyIsICJfcGx1Z2lucyIsICJfaGlkZGVuSW5kaWNlcyIsICJhdHRhY2hlZCIsICJfYW5pbWF0aW9uc0Rpc2FibGVkIiwgIl9kb1Jlc2l6ZSIsICJkZWJvdW5jZSIsICJtb2RlIiwgInJlc2l6ZURlbGF5IiwgIl9kYXRhQ2hhbmdlcyIsICJhbmltYXRvciIsICJsaXN0ZW4iLCAiX2luaXRpYWxpemUiLCAibWFpbnRhaW5Bc3BlY3RSYXRpbyIsICJyZXNwb25zaXZlIiwgInJldGluYVNjYWxlIiwgImJpbmRFdmVudHMiLCAiY2xlYXJDYW52YXMiLCAic3RvcCIsICJydW5uaW5nIiwgIl9yZXNpemUiLCAiX3Jlc2l6ZUJlZm9yZURyYXciLCAibmV3U2l6ZSIsICJuZXdSYXRpbyIsICJvblJlc2l6ZSIsICJyZW5kZXIiLCAiZW5zdXJlU2NhbGVzSGF2ZUlEcyIsICJzY2FsZXNPcHRpb25zIiwgImF4aXNPcHRpb25zIiwgImJ1aWxkT3JVcGRhdGVTY2FsZXMiLCAic2NhbGVPcHRzIiwgInVwZGF0ZWQiLCAibWFwIiwgImlzUmFkaWFsIiwgImRwb3NpdGlvbiIsICJkdHlwZSIsICJzY2FsZVR5cGUiLCAic2NhbGVDbGFzcyIsICJoYXNVcGRhdGVkIiwgIl91cGRhdGVNZXRhc2V0cyIsICJudW1EYXRhIiwgIm51bU1ldGEiLCAiX2Rlc3Ryb3lEYXRhc2V0TWV0YSIsICJzbGljZSIsICJfcmVtb3ZlVW5yZWZlcmVuY2VkTWV0YXNldHMiLCAiX2RhdGFzZXQiLCAiYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzIiwgIm5ld0NvbnRyb2xsZXJzIiwgIm9yZGVyIiwgInZpc2libGUiLCAiaXNEYXRhc2V0VmlzaWJsZSIsICJ1cGRhdGVJbmRleCIsICJsaW5rU2NhbGVzIiwgIkNvbnRyb2xsZXJDbGFzcyIsICJkYXRhc2V0RWxlbWVudFR5cGUiLCAiZGF0YUVsZW1lbnRUeXBlIiwgIl9yZXNldEVsZW1lbnRzIiwgInJlc2V0IiwgImFuaW1zRGlzYWJsZWQiLCAiX3VwZGF0ZVNjYWxlcyIsICJfY2hlY2tFdmVudEJpbmRpbmdzIiwgIl91cGRhdGVIaWRkZW5JbmRpY2VzIiwgImJ1aWxkT3JVcGRhdGVFbGVtZW50cyIsICJnZXRNYXhPdmVyZmxvdyIsICJfbWluUGFkZGluZyIsICJhdXRvUGFkZGluZyIsICJfdXBkYXRlTGF5b3V0IiwgIl91cGRhdGVEYXRhc2V0cyIsICJfZXZlbnRIYW5kbGVyIiwgIl91cGRhdGVIb3ZlclN0eWxlcyIsICJleGlzdGluZ0V2ZW50cyIsICJuZXdFdmVudHMiLCAiZXZlbnRzIiwgInNldHNFcXVhbCIsICJ1bmJpbmRFdmVudHMiLCAiY2hhbmdlcyIsICJfZ2V0VW5pZm9ybURhdGFDaGFuZ2VzIiwgImRhdGFzZXRDb3VudCIsICJtYWtlU2V0IiwgImNoYW5nZVNldCIsICJub0FyZWEiLCAiX2lkeCIsICJfdXBkYXRlRGF0YXNldCIsICJfdXBkYXRlIiwgImxheWVycyIsICJfZHJhd0RhdGFzZXRzIiwgIl9nZXRTb3J0ZWREYXRhc2V0TWV0YXMiLCAiZmlsdGVyVmlzaWJsZSIsICJfZHJhd0RhdGFzZXQiLCAiX2NsaXAiLCAidXNlQ2xpcCIsICJkaXNhYmxlZCIsICJnZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlIiwgIkludGVyYWN0aW9uIiwgImhpZGRlbiIsICJfcGFyc2VkIiwgImdldFZpc2libGVEYXRhc2V0Q291bnQiLCAic2V0RGF0YXNldFZpc2liaWxpdHkiLCAidG9nZ2xlRGF0YVZpc2liaWxpdHkiLCAiZ2V0RGF0YVZpc2liaWxpdHkiLCAiX3VwZGF0ZVZpc2liaWxpdHkiLCAiZGF0YUluZGV4IiwgIl9yZXNvbHZlQW5pbWF0aW9ucyIsICJoaWRlIiwgInNob3ciLCAiX2Rlc3Ryb3kiLCAiX3N0b3AiLCAiZGVzdHJveSIsICJ0b0Jhc2U2NEltYWdlIiwgInRvRGF0YVVSTCIsICJiaW5kVXNlckV2ZW50cyIsICJiaW5kUmVzcG9uc2l2ZUV2ZW50cyIsICJsaXN0ZW5lcnMiLCAiX2FkZCIsICJvZmZzZXRYIiwgIm9mZnNldFkiLCAiX3JlbW92ZSIsICJkZXRhY2hlZCIsICJ1cGRhdGVIb3ZlclN0eWxlIiwgInByZWZpeCIsICJnZXRBY3RpdmVFbGVtZW50cyIsICJzZXRBY3RpdmVFbGVtZW50cyIsICJhY3RpdmVFbGVtZW50cyIsICJsYXN0QWN0aXZlIiwgIl9lbGVtZW50c0VxdWFsIiwgImlzUGx1Z2luRW5hYmxlZCIsICJwbHVnaW5JZCIsICJyZXBsYXkiLCAiaG92ZXJPcHRpb25zIiwgImhvdmVyIiwgImRlYWN0aXZhdGVkIiwgImFjdGl2YXRlZCIsICJldmVudEZpbHRlciIsICJfaGFuZGxlRXZlbnQiLCAiX2dldEFjdGl2ZUVsZW1lbnRzIiwgIl9pc0NsaWNrRXZlbnQiLCAib25Ib3ZlciIsICJvbkNsaWNrIiwgInZlcnNpb24iLCAiY2xpcEFyYyIsICJwaXhlbE1hcmdpbiIsICJvdXRlclJhZGl1cyIsICJpbm5lclJhZGl1cyIsICJhbmdsZU1hcmdpbiIsICJhcmMiLCAiY2xvc2VQYXRoIiwgInRvUmFkaXVzQ29ybmVycyIsICJfcmVhZFZhbHVlVG9Qcm9wcyIsICJwYXJzZUJvcmRlclJhZGl1cyIsICJhbmdsZURlbHRhIiwgIm8iLCAiYm9yZGVyUmFkaXVzIiwgImhhbGZUaGlja25lc3MiLCAiaW5uZXJMaW1pdCIsICJjb21wdXRlT3V0ZXJMaW1pdCIsICJ2YWwiLCAib3V0ZXJBcmNMaW1pdCIsICJvdXRlclN0YXJ0IiwgIm91dGVyRW5kIiwgImlubmVyU3RhcnQiLCAiaW5uZXJFbmQiLCAiclRoZXRhVG9YWSIsICJyIiwgInRoZXRhIiwgInBhdGhBcmMiLCAiY2lyY3VsYXIiLCAiaW5uZXJSIiwgInNwYWNpbmdPZmZzZXQiLCAiYWxwaGEiLCAibm9TcGFjaW5nSW5uZXJSYWRpdXMiLCAibm9TcGFjaW5nT3V0ZXJSYWRpdXMiLCAiYXZOb2dTcGFjaW5nUmFkaXVzIiwgImFkanVzdGVkQW5nbGUiLCAiYmV0YSIsICJQSSIsICJhbmdsZU9mZnNldCIsICJvdXRlclN0YXJ0QWRqdXN0ZWRSYWRpdXMiLCAib3V0ZXJFbmRBZGp1c3RlZFJhZGl1cyIsICJvdXRlclN0YXJ0QWRqdXN0ZWRBbmdsZSIsICJvdXRlckVuZEFkanVzdGVkQW5nbGUiLCAiaW5uZXJTdGFydEFkanVzdGVkUmFkaXVzIiwgImlubmVyRW5kQWRqdXN0ZWRSYWRpdXMiLCAiaW5uZXJTdGFydEFkanVzdGVkQW5nbGUiLCAiaW5uZXJFbmRBZGp1c3RlZEFuZ2xlIiwgIm91dGVyTWlkQWRqdXN0ZWRBbmdsZSIsICJwQ2VudGVyIiwgInA0IiwgImlubmVyTWlkQWRqdXN0ZWRBbmdsZSIsICJwOCIsICJvdXRlclN0YXJ0WCIsICJvdXRlclN0YXJ0WSIsICJvdXRlckVuZFgiLCAib3V0ZXJFbmRZIiwgImRyYXdBcmMiLCAiZnVsbENpcmNsZXMiLCAiY2lyY3VtZmVyZW5jZSIsICJmaWxsIiwgImlzTmFOIiwgIlRBVSIsICJib3JkZXJXaWR0aCIsICJib3JkZXJKb2luU3R5bGUiLCAiaW5uZXIiLCAiYm9yZGVyQWxpZ24iLCAibGluZUpvaW4iLCAiQXJjRWxlbWVudCIsICJjaGFydFgiLCAiY2hhcnRZIiwgInJBZGp1c3QiLCAiX2NpcmN1bWZlcmVuY2UiLCAibm9uWmVyb0JldHdlZW4iLCAiYmV0d2VlbkFuZ2xlcyIsICJ3aXRoaW5SYWRpdXMiLCAiX2lzQmV0d2VlbiIsICJoYWxmQW5nbGUiLCAiaGFsZlJhZGl1cyIsICJ0cmFuc2xhdGUiLCAiZml4IiwgInJhZGl1c09mZnNldCIsICJib3JkZXJDb2xvciIsICJfc2NyaXB0YWJsZSIsICJfaW5kZXhhYmxlIiwgImdldEJhckJvdW5kcyIsICJiYXIiLCAidXNlRmluYWxQb3NpdGlvbiIsICJ4IiwgInkiLCAiYmFzZSIsICJ3aWR0aCIsICJoZWlnaHQiLCAiZ2V0UHJvcHMiLCAibGVmdCIsICJyaWdodCIsICJ0b3AiLCAiYm90dG9tIiwgImhhbGYiLCAiaG9yaXpvbnRhbCIsICJNYXRoIiwgIm1pbiIsICJtYXgiLCAic2tpcE9yTGltaXQiLCAic2tpcCIsICJ2YWx1ZSIsICJfbGltaXRWYWx1ZSIsICJwYXJzZUJvcmRlcldpZHRoIiwgIm1heFciLCAibWF4SCIsICJvcHRpb25zIiwgImJvcmRlcldpZHRoIiwgImJvcmRlclNraXBwZWQiLCAibyIsICJ0b1RSQkwiLCAidCIsICJyIiwgImIiLCAibCIsICJwYXJzZUJvcmRlclJhZGl1cyIsICJlbmFibGVCb3JkZXJSYWRpdXMiLCAiYm9yZGVyUmFkaXVzIiwgInRvVFJCTENvcm5lcnMiLCAibWF4UiIsICJlbmFibGVCb3JkZXIiLCAiaXNPYmplY3QiLCAidG9wTGVmdCIsICJ0b3BSaWdodCIsICJib3R0b21MZWZ0IiwgImJvdHRvbVJpZ2h0IiwgImJvdW5kaW5nUmVjdHMiLCAiYm91bmRzIiwgImJvcmRlciIsICJyYWRpdXMiLCAib3V0ZXIiLCAidyIsICJoIiwgImlubmVyIiwgImluUmFuZ2UiLCAic2tpcFgiLCAic2tpcFkiLCAic2tpcEJvdGgiLCAiX2lzQmV0d2VlbiIsICJoYXNSYWRpdXMiLCAiYWRkTm9ybWFsUmVjdFBhdGgiLCAiY3R4IiwgInJlY3QiLCAiaW5mbGF0ZVJlY3QiLCAiYW1vdW50IiwgInJlZlJlY3QiLCAiQmFyRWxlbWVudCIsICJFbGVtZW50IiwgImNvbnN0cnVjdG9yIiwgImNmZyIsICJ1bmRlZmluZWQiLCAiaW5mbGF0ZUFtb3VudCIsICJPYmplY3QiLCAiYXNzaWduIiwgImRyYXciLCAiYm9yZGVyQ29sb3IiLCAiYmFja2dyb3VuZENvbG9yIiwgImFkZFJlY3RQYXRoIiwgImFkZFJvdW5kZWRSZWN0UGF0aCIsICJzYXZlIiwgImJlZ2luUGF0aCIsICJjbGlwIiwgImZpbGxTdHlsZSIsICJmaWxsIiwgInJlc3RvcmUiLCAibW91c2VYIiwgIm1vdXNlWSIsICJpblhSYW5nZSIsICJpbllSYW5nZSIsICJnZXRDZW50ZXJQb2ludCIsICJnZXRSYW5nZSIsICJheGlzIiwgImlkIiwgImRlZmF1bHRzIiwgInBvaW50U3R5bGUiLCAiZGVmYXVsdFJvdXRlcyIsICJnZXRCb3hTaXplIiwgImxhYmVsT3B0cyIsICJmb250U2l6ZSIsICJib3hIZWlnaHQiLCAiYm94V2lkdGgiLCAidXNlUG9pbnRTdHlsZSIsICJNYXRoIiwgIm1pbiIsICJwb2ludFN0eWxlV2lkdGgiLCAiaXRlbUhlaWdodCIsICJtYXgiLCAiaXRlbXNFcXVhbCIsICJhIiwgImIiLCAiZGF0YXNldEluZGV4IiwgImluZGV4IiwgIkxlZ2VuZCIsICJFbGVtZW50IiwgImNvbnN0cnVjdG9yIiwgImNvbmZpZyIsICJfYWRkZWQiLCAibGVnZW5kSGl0Qm94ZXMiLCAiX2hvdmVyZWRJdGVtIiwgImRvdWdobnV0TW9kZSIsICJjaGFydCIsICJvcHRpb25zIiwgImN0eCIsICJsZWdlbmRJdGVtcyIsICJ1bmRlZmluZWQiLCAiY29sdW1uU2l6ZXMiLCAibGluZVdpZHRocyIsICJtYXhIZWlnaHQiLCAibWF4V2lkdGgiLCAidG9wIiwgImJvdHRvbSIsICJsZWZ0IiwgInJpZ2h0IiwgImhlaWdodCIsICJ3aWR0aCIsICJfbWFyZ2lucyIsICJwb3NpdGlvbiIsICJ3ZWlnaHQiLCAiZnVsbFNpemUiLCAidXBkYXRlIiwgIm1hcmdpbnMiLCAic2V0RGltZW5zaW9ucyIsICJidWlsZExhYmVscyIsICJmaXQiLCAiaXNIb3Jpem9udGFsIiwgImxhYmVscyIsICJjYWxsIiwgImdlbmVyYXRlTGFiZWxzIiwgImZpbHRlciIsICJpdGVtIiwgImRhdGEiLCAic29ydCIsICJyZXZlcnNlIiwgImRpc3BsYXkiLCAibGFiZWxGb250IiwgInRvRm9udCIsICJmb250IiwgInNpemUiLCAidGl0bGVIZWlnaHQiLCAiX2NvbXB1dGVUaXRsZUhlaWdodCIsICJzdHJpbmciLCAiX2ZpdFJvd3MiLCAiX2ZpdENvbHMiLCAicGFkZGluZyIsICJoaXRib3hlcyIsICJsaW5lSGVpZ2h0IiwgInRvdGFsSGVpZ2h0IiwgInRleHRBbGlnbiIsICJ0ZXh0QmFzZWxpbmUiLCAicm93IiwgImZvckVhY2giLCAibGVnZW5kSXRlbSIsICJpIiwgIml0ZW1XaWR0aCIsICJtZWFzdXJlVGV4dCIsICJ0ZXh0IiwgImxlbmd0aCIsICJfaXRlbUhlaWdodCIsICJoZWlnaHRMaW1pdCIsICJ0b3RhbFdpZHRoIiwgImN1cnJlbnRDb2xXaWR0aCIsICJjdXJyZW50Q29sSGVpZ2h0IiwgImNvbCIsICJjYWxjdWxhdGVJdGVtU2l6ZSIsICJwdXNoIiwgImFkanVzdEhpdEJveGVzIiwgImFsaWduIiwgInJ0bCIsICJydGxIZWxwZXIiLCAiZ2V0UnRsQWRhcHRlciIsICJfYWxpZ25TdGFydEVuZCIsICJoaXRib3giLCAibGVmdEZvckx0ciIsICJ4IiwgImRyYXciLCAiY2xpcEFyZWEiLCAiX2RyYXciLCAidW5jbGlwQXJlYSIsICJvcHRzIiwgImRlZmF1bHRDb2xvciIsICJkZWZhdWx0cyIsICJjb2xvciIsICJoYWxmRm9udFNpemUiLCAiY3Vyc29yIiwgImRyYXdUaXRsZSIsICJsaW5lV2lkdGgiLCAiZHJhd0xlZ2VuZEJveCIsICJ5IiwgImlzTmFOIiwgInNhdmUiLCAidmFsdWVPckRlZmF1bHQiLCAiZmlsbFN0eWxlIiwgImxpbmVDYXAiLCAibGluZURhc2hPZmZzZXQiLCAibGluZUpvaW4iLCAic3Ryb2tlU3R5bGUiLCAic2V0TGluZURhc2giLCAibGluZURhc2giLCAiZHJhd09wdGlvbnMiLCAicmFkaXVzIiwgIlNRUlQyIiwgInBvaW50U3R5bGUiLCAicm90YXRpb24iLCAiYm9yZGVyV2lkdGgiLCAiY2VudGVyWCIsICJ4UGx1cyIsICJjZW50ZXJZIiwgImRyYXdQb2ludExlZ2VuZCIsICJ5Qm94VG9wIiwgInhCb3hMZWZ0IiwgImJvcmRlclJhZGl1cyIsICJ0b1RSQkxDb3JuZXJzIiwgImJlZ2luUGF0aCIsICJPYmplY3QiLCAidmFsdWVzIiwgInNvbWUiLCAidiIsICJhZGRSb3VuZGVkUmVjdFBhdGgiLCAidyIsICJoIiwgInJlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAicmVzdG9yZSIsICJmaWxsVGV4dCIsICJyZW5kZXJUZXh0IiwgInN0cmlrZXRocm91Z2giLCAiaGlkZGVuIiwgImxpbmUiLCAib3ZlcnJpZGVUZXh0RGlyZWN0aW9uIiwgInRleHREaXJlY3Rpb24iLCAiZm9udENvbG9yIiwgInRleHRXaWR0aCIsICJzZXRXaWR0aCIsICJyZWFsWCIsICJfdGV4dFgiLCAiZm9udExpbmVIZWlnaHQiLCAiY2FsY3VsYXRlTGVnZW5kSXRlbUhlaWdodCIsICJyZXN0b3JlVGV4dERpcmVjdGlvbiIsICJ0aXRsZU9wdHMiLCAidGl0bGUiLCAidGl0bGVGb250IiwgInRpdGxlUGFkZGluZyIsICJ0b1BhZGRpbmciLCAidG9wUGFkZGluZ1BsdXNIYWxmRm9udFNpemUiLCAicmVkdWNlIiwgImFjYyIsICJfdG9MZWZ0UmlnaHRDZW50ZXIiLCAiX2dldExlZ2VuZEl0ZW1BdCIsICJoaXRCb3giLCAibGgiLCAiX2lzQmV0d2VlbiIsICJoYW5kbGVFdmVudCIsICJlIiwgImlzTGlzdGVuZWQiLCAidHlwZSIsICJob3ZlcmVkSXRlbSIsICJwcmV2aW91cyIsICJzYW1lSXRlbSIsICJvbkxlYXZlIiwgIm9uSG92ZXIiLCAib25DbGljayIsICJjYWxjdWxhdGVJdGVtV2lkdGgiLCAiY2FsY3VsYXRlSXRlbUhlaWdodCIsICJsZWdlbmRJdGVtVGV4dCIsICJsYWJlbEhlaWdodCIsICJpZCIsICJfZWxlbWVudCIsICJzdGFydCIsICJfYXJncyIsICJsZWdlbmQiLCAibGF5b3V0cyIsICJjb25maWd1cmUiLCAiYWRkQm94IiwgInN0b3AiLCAicmVtb3ZlQm94IiwgImJlZm9yZVVwZGF0ZSIsICJhZnRlclVwZGF0ZSIsICJhZnRlckV2ZW50IiwgImFyZ3MiLCAicmVwbGF5IiwgImV2ZW50IiwgImNpIiwgImlzRGF0YXNldFZpc2libGUiLCAiaGlkZSIsICJzaG93IiwgImRhdGFzZXRzIiwgInVzZUJvcmRlclJhZGl1cyIsICJfZ2V0U29ydGVkRGF0YXNldE1ldGFzIiwgIm1hcCIsICJtZXRhIiwgInN0eWxlIiwgImNvbnRyb2xsZXIiLCAiZ2V0U3R5bGUiLCAibGFiZWwiLCAiYmFja2dyb3VuZENvbG9yIiwgInZpc2libGUiLCAiYm9yZGVyQ2FwU3R5bGUiLCAiYm9yZGVyRGFzaCIsICJib3JkZXJEYXNoT2Zmc2V0IiwgImJvcmRlckpvaW5TdHlsZSIsICJib3JkZXJDb2xvciIsICJkZXNjcmlwdG9ycyIsICJfc2NyaXB0YWJsZSIsICJuYW1lIiwgInN0YXJ0c1dpdGgiLCAiaW5jbHVkZXMiLCAiVGl0bGUiLCAiX3BhZGRpbmciLCAibGluZUNvdW50IiwgImlzQXJyYXkiLCAidGV4dFNpemUiLCAicG9zIiwgIl9kcmF3QXJncyIsICJvZmZzZXQiLCAidGl0bGVYIiwgInRpdGxlWSIsICJQSSIsICJmb250T3B0cyIsICJ0cmFuc2xhdGlvbiIsICJjcmVhdGVUaXRsZSIsICJ0aXRsZUJsb2NrIiwgImRlZmF1bHRSb3V0ZXMiLCAiX2luZGV4YWJsZSIsICJXZWFrTWFwIiwgInNldCIsICJnZXQiLCAiZGVsZXRlIiwgInBvc2l0aW9uZXJzIiwgImF2ZXJhZ2UiLCAiaXRlbXMiLCAibGVuIiwgInhTZXQiLCAiU2V0IiwgImNvdW50IiwgImVsIiwgImVsZW1lbnQiLCAiaGFzVmFsdWUiLCAidG9vbHRpcFBvc2l0aW9uIiwgImFkZCIsICJ4QXZlcmFnZSIsICJuZWFyZXN0IiwgImV2ZW50UG9zaXRpb24iLCAibWluRGlzdGFuY2UiLCAiTnVtYmVyIiwgIlBPU0lUSVZFX0lORklOSVRZIiwgIm5lYXJlc3RFbGVtZW50IiwgImNlbnRlciIsICJnZXRDZW50ZXJQb2ludCIsICJkIiwgImRpc3RhbmNlQmV0d2VlblBvaW50cyIsICJ0cCIsICJwdXNoT3JDb25jYXQiLCAiYmFzZSIsICJ0b1B1c2giLCAiQXJyYXkiLCAicHJvdG90eXBlIiwgImFwcGx5IiwgInNwbGl0TmV3bGluZXMiLCAic3RyIiwgIlN0cmluZyIsICJpbmRleE9mIiwgInNwbGl0IiwgImNyZWF0ZVRvb2x0aXBJdGVtIiwgImdldERhdGFzZXRNZXRhIiwgInZhbHVlIiwgImdldExhYmVsQW5kVmFsdWUiLCAicGFyc2VkIiwgImdldFBhcnNlZCIsICJyYXciLCAiZm9ybWF0dGVkVmFsdWUiLCAiZGF0YXNldCIsICJnZXREYXRhc2V0IiwgImRhdGFJbmRleCIsICJnZXRUb29sdGlwU2l6ZSIsICJ0b29sdGlwIiwgImJvZHkiLCAiZm9vdGVyIiwgImJvZHlGb250IiwgImZvb3RlckZvbnQiLCAidGl0bGVMaW5lQ291bnQiLCAiZm9vdGVyTGluZUNvdW50IiwgImJvZHlMaW5lSXRlbUNvdW50IiwgImNvbWJpbmVkQm9keUxlbmd0aCIsICJib2R5SXRlbSIsICJiZWZvcmUiLCAibGluZXMiLCAiYWZ0ZXIiLCAiYmVmb3JlQm9keSIsICJhZnRlckJvZHkiLCAidGl0bGVTcGFjaW5nIiwgInRpdGxlTWFyZ2luQm90dG9tIiwgImJvZHlMaW5lSGVpZ2h0IiwgImRpc3BsYXlDb2xvcnMiLCAiYm9keVNwYWNpbmciLCAiZm9vdGVyTWFyZ2luVG9wIiwgImZvb3RlclNwYWNpbmciLCAid2lkdGhQYWRkaW5nIiwgIm1heExpbmVXaWR0aCIsICJlYWNoIiwgImNvbmNhdCIsICJib3hQYWRkaW5nIiwgImRldGVybWluZVlBbGlnbiIsICJkb2VzTm90Rml0V2l0aEFsaWduIiwgInhBbGlnbiIsICJjYXJldCIsICJjYXJldFNpemUiLCAiY2FyZXRQYWRkaW5nIiwgImRldGVybWluZVhBbGlnbiIsICJ5QWxpZ24iLCAiY2hhcnRXaWR0aCIsICJjaGFydEFyZWEiLCAiZGV0ZXJtaW5lQWxpZ25tZW50IiwgImFsaWduWCIsICJhbGlnblkiLCAicGFkZGluZ0FuZFNpemUiLCAiZ2V0QmFja2dyb3VuZFBvaW50IiwgImFsaWdubWVudCIsICJjb3JuZXJSYWRpdXMiLCAidG9wTGVmdCIsICJ0b3BSaWdodCIsICJib3R0b21MZWZ0IiwgImJvdHRvbVJpZ2h0IiwgIl9saW1pdFZhbHVlIiwgImdldEFsaWduZWRYIiwgImdldEJlZm9yZUFmdGVyQm9keUxpbmVzIiwgImNhbGxiYWNrIiwgImNyZWF0ZVRvb2x0aXBDb250ZXh0IiwgInBhcmVudCIsICJ0b29sdGlwSXRlbXMiLCAiY3JlYXRlQ29udGV4dCIsICJvdmVycmlkZUNhbGxiYWNrcyIsICJjYWxsYmFja3MiLCAiY29udGV4dCIsICJvdmVycmlkZSIsICJkZWZhdWx0Q2FsbGJhY2tzIiwgImJlZm9yZVRpdGxlIiwgIm5vb3AiLCAibGFiZWxDb3VudCIsICJtb2RlIiwgImFmdGVyVGl0bGUiLCAiYmVmb3JlTGFiZWwiLCAidG9vbHRpcEl0ZW0iLCAiaXNOdWxsT3JVbmRlZiIsICJsYWJlbENvbG9yIiwgImxhYmVsVGV4dENvbG9yIiwgImJvZHlDb2xvciIsICJsYWJlbFBvaW50U3R5bGUiLCAiYWZ0ZXJMYWJlbCIsICJiZWZvcmVGb290ZXIiLCAiYWZ0ZXJGb290ZXIiLCAiaW52b2tlQ2FsbGJhY2tXaXRoRmFsbGJhY2siLCAiYXJnIiwgInJlc3VsdCIsICJUb29sdGlwIiwgIm9wYWNpdHkiLCAiX2FjdGl2ZSIsICJfZXZlbnRQb3NpdGlvbiIsICJfc2l6ZSIsICJfY2FjaGVkQW5pbWF0aW9ucyIsICJfdG9vbHRpcEl0ZW1zIiwgIiRhbmltYXRpb25zIiwgIiRjb250ZXh0IiwgImRhdGFQb2ludHMiLCAiY2FyZXRYIiwgImNhcmV0WSIsICJsYWJlbENvbG9ycyIsICJsYWJlbFBvaW50U3R5bGVzIiwgImxhYmVsVGV4dENvbG9ycyIsICJpbml0aWFsaXplIiwgIl9yZXNvbHZlQW5pbWF0aW9ucyIsICJjYWNoZWQiLCAic2V0Q29udGV4dCIsICJnZXRDb250ZXh0IiwgImVuYWJsZWQiLCAiYW5pbWF0aW9uIiwgImFuaW1hdGlvbnMiLCAiQW5pbWF0aW9ucyIsICJfY2FjaGVhYmxlIiwgImZyZWV6ZSIsICJnZXRUaXRsZSIsICJnZXRCZWZvcmVCb2R5IiwgImdldEJvZHkiLCAiYm9keUl0ZW1zIiwgInNjb3BlZCIsICJnZXRBZnRlckJvZHkiLCAiZ2V0Rm9vdGVyIiwgIl9jcmVhdGVJdGVtcyIsICJhY3RpdmUiLCAiYXJyYXkiLCAiaXRlbVNvcnQiLCAiY2hhbmdlZCIsICJwcm9wZXJ0aWVzIiwgInBvc2l0aW9uQW5kU2l6ZSIsICJhc3NpZ24iLCAiYmFja2dyb3VuZFBvaW50IiwgImV4dGVybmFsIiwgImRyYXdDYXJldCIsICJ0b29sdGlwUG9pbnQiLCAiY2FyZXRQb3NpdGlvbiIsICJnZXRDYXJldFBvc2l0aW9uIiwgImxpbmVUbyIsICJ4MSIsICJ5MSIsICJ4MiIsICJ5MiIsICJ4MyIsICJ5MyIsICJwdFgiLCAicHRZIiwgInB0IiwgInRpdGxlQWxpZ24iLCAidGl0bGVDb2xvciIsICJfZHJhd0NvbG9yQm94IiwgImNvbG9yWCIsICJydGxDb2xvclgiLCAieU9mZlNldCIsICJjb2xvclkiLCAibXVsdGlLZXlCYWNrZ3JvdW5kIiwgImRyYXdQb2ludCIsICJpc09iamVjdCIsICJvdXRlclgiLCAiaW5uZXJYIiwgImZpbGxSZWN0IiwgInN0cm9rZVJlY3QiLCAiZHJhd0JvZHkiLCAiYm9keUFsaWduIiwgInhMaW5lUGFkZGluZyIsICJmaWxsTGluZU9mVGV4dCIsICJib2R5QWxpZ25Gb3JDYWxjdWxhdGlvbiIsICJ0ZXh0Q29sb3IiLCAiaiIsICJpbGVuIiwgImpsZW4iLCAiZHJhd0Zvb3RlciIsICJmb290ZXJBbGlnbiIsICJmb290ZXJDb2xvciIsICJkcmF3QmFja2dyb3VuZCIsICJ0b29sdGlwU2l6ZSIsICJtb3ZlVG8iLCAicXVhZHJhdGljQ3VydmVUbyIsICJjbG9zZVBhdGgiLCAiX3VwZGF0ZUFuaW1hdGlvblRhcmdldCIsICJhbmltcyIsICJhbmltWCIsICJhbmltWSIsICJwb2ludCIsICJfdG8iLCAiX3dpbGxSZW5kZXIiLCAiYWJzIiwgImhhc1Rvb2x0aXBDb250ZW50IiwgImdsb2JhbEFscGhhIiwgImdldEFjdGl2ZUVsZW1lbnRzIiwgInNldEFjdGl2ZUVsZW1lbnRzIiwgImFjdGl2ZUVsZW1lbnRzIiwgImxhc3RBY3RpdmUiLCAiRXJyb3IiLCAiX2VsZW1lbnRzRXF1YWwiLCAicG9zaXRpb25DaGFuZ2VkIiwgIl9wb3NpdGlvbkNoYW5nZWQiLCAiX2lnbm9yZVJlcGxheUV2ZW50cyIsICJpbkNoYXJ0QXJlYSIsICJfZ2V0QWN0aXZlRWxlbWVudHMiLCAiZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZSIsICJhZnRlckluaXQiLCAicmVzZXQiLCAiYWZ0ZXJEcmF3IiwgIm5vdGlmeVBsdWdpbnMiLCAiY2FuY2VsYWJsZSIsICJ1c2VGaW5hbFBvc2l0aW9uIiwgImR1cmF0aW9uIiwgImVhc2luZyIsICJudW1iZXJzIiwgIl9mYWxsYmFjayIsICJhZGRpdGlvbmFsT3B0aW9uU2NvcGVzIiwgImFkZElmU3RyaW5nIiwgImxhYmVscyIsICJyYXciLCAiaW5kZXgiLCAiYWRkZWRMYWJlbHMiLCAicHVzaCIsICJ1bnNoaWZ0IiwgImxhYmVsIiwgImlzTmFOIiwgImZpbmRPckFkZExhYmVsIiwgImZpcnN0IiwgImluZGV4T2YiLCAibGFzdCIsICJsYXN0SW5kZXhPZiIsICJ2YWxpZEluZGV4IiwgIm1heCIsICJfbGltaXRWYWx1ZSIsICJNYXRoIiwgInJvdW5kIiwgIl9nZXRMYWJlbEZvclZhbHVlIiwgInZhbHVlIiwgImdldExhYmVscyIsICJsZW5ndGgiLCAiQ2F0ZWdvcnlTY2FsZSIsICJTY2FsZSIsICJjb25zdHJ1Y3RvciIsICJjZmciLCAiX3N0YXJ0VmFsdWUiLCAidW5kZWZpbmVkIiwgIl92YWx1ZVJhbmdlIiwgIl9hZGRlZExhYmVscyIsICJpbml0IiwgInNjYWxlT3B0aW9ucyIsICJhZGRlZCIsICJzcGxpY2UiLCAicGFyc2UiLCAiaXNOdWxsT3JVbmRlZiIsICJpc0Zpbml0ZSIsICJ2YWx1ZU9yRGVmYXVsdCIsICJkZXRlcm1pbmVEYXRhTGltaXRzIiwgIm1pbkRlZmluZWQiLCAibWF4RGVmaW5lZCIsICJnZXRVc2VyQm91bmRzIiwgIm1pbiIsICJnZXRNaW5NYXgiLCAib3B0aW9ucyIsICJib3VuZHMiLCAiYnVpbGRUaWNrcyIsICJvZmZzZXQiLCAidGlja3MiLCAic2xpY2UiLCAiZ2V0TGFiZWxGb3JWYWx1ZSIsICJjYWxsIiwgImNvbmZpZ3VyZSIsICJpc0hvcml6b250YWwiLCAiX3JldmVyc2VQaXhlbHMiLCAiZ2V0UGl4ZWxGb3JWYWx1ZSIsICJOYU4iLCAiZ2V0UGl4ZWxGb3JEZWNpbWFsIiwgImdldFBpeGVsRm9yVGljayIsICJnZXRWYWx1ZUZvclBpeGVsIiwgInBpeGVsIiwgImdldERlY2ltYWxGb3JQaXhlbCIsICJnZXRCYXNlUGl4ZWwiLCAiYm90dG9tIiwgImlkIiwgImRlZmF1bHRzIiwgImNhbGxiYWNrIiwgImdlbmVyYXRlVGlja3MiLCAiZ2VuZXJhdGlvbk9wdGlvbnMiLCAiZGF0YVJhbmdlIiwgIk1JTl9TUEFDSU5HIiwgInN0ZXAiLCAicHJlY2lzaW9uIiwgImNvdW50IiwgIm1heFRpY2tzIiwgIm1heERpZ2l0cyIsICJpbmNsdWRlQm91bmRzIiwgInVuaXQiLCAibWF4U3BhY2VzIiwgInJtaW4iLCAicm1heCIsICJjb3VudERlZmluZWQiLCAibWluU3BhY2luZyIsICJzcGFjaW5nIiwgIm5pY2VOdW0iLCAiZmFjdG9yIiwgIm5pY2VNaW4iLCAibmljZU1heCIsICJudW1TcGFjZXMiLCAiY2VpbCIsICJmbG9vciIsICJwb3ciLCAiYWxtb3N0V2hvbGUiLCAiYWxtb3N0RXF1YWxzIiwgImRlY2ltYWxQbGFjZXMiLCAiX2RlY2ltYWxQbGFjZXMiLCAiaiIsICJyZWxhdGl2ZUxhYmVsU2l6ZSIsICJ0aWNrVmFsdWUiLCAiaG9yaXpvbnRhbCIsICJtaW5Sb3RhdGlvbiIsICJyYWQiLCAidG9SYWRpYW5zIiwgInJhdGlvIiwgInNpbiIsICJjb3MiLCAiTGluZWFyU2NhbGVCYXNlIiwgInN0YXJ0IiwgImVuZCIsICJfZW5kVmFsdWUiLCAiTnVtYmVyIiwgImhhbmRsZVRpY2tSYW5nZU9wdGlvbnMiLCAiYmVnaW5BdFplcm8iLCAic2V0TWluIiwgInYiLCAic2V0TWF4IiwgIm1pblNpZ24iLCAic2lnbiIsICJtYXhTaWduIiwgImFicyIsICJnZXRUaWNrTGltaXQiLCAidGlja09wdHMiLCAibWF4VGlja3NMaW1pdCIsICJzdGVwU2l6ZSIsICJjb25zb2xlIiwgIndhcm4iLCAiY29tcHV0ZVRpY2tMaW1pdCIsICJQT1NJVElWRV9JTkZJTklUWSIsICJvcHRzIiwgIm51bWVyaWNHZW5lcmF0b3JPcHRpb25zIiwgIl9tYXhEaWdpdHMiLCAiX3JhbmdlIiwgIl9zZXRNaW5BbmRNYXhCeUtleSIsICJyZXZlcnNlIiwgImZvcm1hdE51bWJlciIsICJjaGFydCIsICJsb2NhbGUiLCAiZm9ybWF0IiwgIkxpbmVhclNjYWxlIiwgIndpZHRoIiwgImhlaWdodCIsICJ0aWNrRm9udCIsICJfcmVzb2x2ZVRpY2tGb250T3B0aW9ucyIsICJsaW5lSGVpZ2h0IiwgIlRpY2tzIiwgImZvcm1hdHRlcnMiLCAibnVtZXJpYyIsICJsb2cxMEZsb29yIiwgImxvZzEwIiwgImNoYW5nZUV4cG9uZW50IiwgIm0iLCAiaXNNYWpvciIsICJ0aWNrVmFsIiwgInJlbWFpbiIsICJzdGVwcyIsICJyYW5nZUV4cCIsICJyYW5nZVN0ZXAiLCAic3RhcnRFeHAiLCAicmFuZ2UiLCAiZmluaXRlT3JEZWZhdWx0IiwgIm1pbkV4cCIsICJleHAiLCAiYmFzZSIsICJzaWduaWZpY2FuZCIsICJtYWpvciIsICJsYXN0VGljayIsICJMb2dhcml0aG1pY1NjYWxlIiwgInByb3RvdHlwZSIsICJhcHBseSIsICJfemVybyIsICJfc3VnZ2VzdGVkTWluIiwgIl91c2VyTWluIiwgIl91c2VyTWF4IiwgImRlY2ltYWwiLCAibG9nYXJpdGhtaWMiLCAiZW5hYmxlZCIsICJnZXRUaWNrQmFja2Ryb3BIZWlnaHQiLCAiZGlzcGxheSIsICJwYWRkaW5nIiwgInRvUGFkZGluZyIsICJiYWNrZHJvcFBhZGRpbmciLCAiZm9udCIsICJzaXplIiwgIm1lYXN1cmVMYWJlbFNpemUiLCAiY3R4IiwgImlzQXJyYXkiLCAidyIsICJfbG9uZ2VzdFRleHQiLCAic3RyaW5nIiwgImgiLCAiZGV0ZXJtaW5lTGltaXRzIiwgImFuZ2xlIiwgInBvcyIsICJmaXRXaXRoUG9pbnRMYWJlbHMiLCAic2NhbGUiLCAib3JpZyIsICJsIiwgImxlZnQiLCAiX3BhZGRpbmciLCAiciIsICJyaWdodCIsICJ0IiwgInRvcCIsICJiIiwgImxpbWl0cyIsICJPYmplY3QiLCAiYXNzaWduIiwgImxhYmVsU2l6ZXMiLCAidmFsdWVDb3VudCIsICJfcG9pbnRMYWJlbHMiLCAicG9pbnRMYWJlbE9wdHMiLCAicG9pbnRMYWJlbHMiLCAiYWRkaXRpb25hbEFuZ2xlIiwgImNlbnRlclBvaW50TGFiZWxzIiwgIlBJIiwgImkiLCAic2V0Q29udGV4dCIsICJnZXRQb2ludExhYmVsQ29udGV4dCIsICJwb2ludFBvc2l0aW9uIiwgImdldFBvaW50UG9zaXRpb24iLCAiZHJhd2luZ0FyZWEiLCAicGxGb250IiwgInRvRm9udCIsICJ0ZXh0U2l6ZSIsICJhbmdsZVJhZGlhbnMiLCAiX25vcm1hbGl6ZUFuZ2xlIiwgImdldEluZGV4QW5nbGUiLCAidG9EZWdyZWVzIiwgImhMaW1pdHMiLCAieCIsICJ2TGltaXRzIiwgInkiLCAidXBkYXRlTGltaXRzIiwgInNldENlbnRlclBvaW50IiwgIl9wb2ludExhYmVsSXRlbXMiLCAiYnVpbGRQb2ludExhYmVsSXRlbXMiLCAiY3JlYXRlUG9pbnRMYWJlbEl0ZW0iLCAiaXRlbU9wdHMiLCAib3V0ZXJEaXN0YW5jZSIsICJleHRyYSIsICJwb2ludExhYmVsUG9zaXRpb24iLCAiSEFMRl9QSSIsICJ5Rm9yQW5nbGUiLCAidGV4dEFsaWduIiwgImdldFRleHRBbGlnbkZvckFuZ2xlIiwgImxlZnRGb3JUZXh0QWxpZ24iLCAidmlzaWJsZSIsICJpc05vdE92ZXJsYXBwZWQiLCAiaXRlbSIsICJhcmVhIiwgImFwZXhlc0luQXJlYSIsICJfaXNQb2ludEluQXJlYSIsICJpdGVtcyIsICJhbGlnbiIsICJkcmF3UG9pbnRMYWJlbEJveCIsICJiYWNrZHJvcENvbG9yIiwgImJvcmRlclJhZGl1cyIsICJ0b1RSQkxDb3JuZXJzIiwgImZpbGxTdHlsZSIsICJiYWNrZHJvcExlZnQiLCAiYmFja2Ryb3BUb3AiLCAiYmFja2Ryb3BXaWR0aCIsICJiYWNrZHJvcEhlaWdodCIsICJ2YWx1ZXMiLCAic29tZSIsICJiZWdpblBhdGgiLCAiYWRkUm91bmRlZFJlY3RQYXRoIiwgInJhZGl1cyIsICJmaWxsIiwgImZpbGxSZWN0IiwgImRyYXdQb2ludExhYmVscyIsICJsYWJlbENvdW50IiwgIm9wdHNBdEluZGV4IiwgInJlbmRlclRleHQiLCAiY29sb3IiLCAidGV4dEJhc2VsaW5lIiwgInBhdGhSYWRpdXNMaW5lIiwgImNpcmN1bGFyIiwgImFyYyIsICJ4Q2VudGVyIiwgInlDZW50ZXIiLCAiVEFVIiwgIm1vdmVUbyIsICJsaW5lVG8iLCAiZHJhd1JhZGl1c0xpbmUiLCAiZ3JpZExpbmVPcHRzIiwgImJvcmRlck9wdHMiLCAibGluZVdpZHRoIiwgInNhdmUiLCAic3Ryb2tlU3R5bGUiLCAic2V0TGluZURhc2giLCAiZGFzaCIsICJsaW5lRGFzaE9mZnNldCIsICJkYXNoT2Zmc2V0IiwgImNsb3NlUGF0aCIsICJzdHJva2UiLCAicmVzdG9yZSIsICJjcmVhdGVQb2ludExhYmVsQ29udGV4dCIsICJwYXJlbnQiLCAiY3JlYXRlQ29udGV4dCIsICJ0eXBlIiwgIlJhZGlhbExpbmVhclNjYWxlIiwgInNldERpbWVuc2lvbnMiLCAibWF4V2lkdGgiLCAibWF4SGVpZ2h0IiwgImdlbmVyYXRlVGlja0xhYmVscyIsICJtYXAiLCAiY2FsbENhbGxiYWNrIiwgImZpbHRlciIsICJnZXREYXRhVmlzaWJpbGl0eSIsICJmaXQiLCAibGVmdE1vdmVtZW50IiwgInJpZ2h0TW92ZW1lbnQiLCAidG9wTW92ZW1lbnQiLCAiYm90dG9tTW92ZW1lbnQiLCAiYW5nbGVNdWx0aXBsaWVyIiwgInN0YXJ0QW5nbGUiLCAiZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUiLCAic2NhbGluZ0ZhY3RvciIsICJnZXRWYWx1ZUZvckRpc3RhbmNlRnJvbUNlbnRlciIsICJkaXN0YW5jZSIsICJzY2FsZWREaXN0YW5jZSIsICJwb2ludExhYmVsIiwgImdldENvbnRleHQiLCAiZGlzdGFuY2VGcm9tQ2VudGVyIiwgImdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZSIsICJnZXRCYXNlUG9zaXRpb24iLCAiZ2V0QmFzZVZhbHVlIiwgImdldFBvaW50TGFiZWxQb3NpdGlvbiIsICJkcmF3QmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiZ3JpZCIsICJkcmF3R3JpZCIsICJhbmdsZUxpbmVzIiwgImJvcmRlciIsICJwb3NpdGlvbiIsICJmb3JFYWNoIiwgInRpY2siLCAiY29udGV4dCIsICJvcHRzQXRJbmRleEJvcmRlciIsICJib3JkZXJEYXNoIiwgImJvcmRlckRhc2hPZmZzZXQiLCAiZHJhd0JvcmRlciIsICJkcmF3TGFiZWxzIiwgInRyYW5zbGF0ZSIsICJyb3RhdGUiLCAic2hvd0xhYmVsQmFja2Ryb3AiLCAibWVhc3VyZVRleHQiLCAic3Ryb2tlQ29sb3IiLCAidGV4dFN0cm9rZUNvbG9yIiwgInN0cm9rZVdpZHRoIiwgInRleHRTdHJva2VXaWR0aCIsICJkcmF3VGl0bGUiLCAiYW5pbWF0ZSIsICJkZWZhdWx0Um91dGVzIiwgImRlc2NyaXB0b3JzIiwgIl9mYWxsYmFjayIsICJJTlRFUlZBTFMiLCAibWlsbGlzZWNvbmQiLCAiY29tbW9uIiwgInNlY29uZCIsICJtaW51dGUiLCAiaG91ciIsICJkYXkiLCAid2VlayIsICJtb250aCIsICJxdWFydGVyIiwgInllYXIiLCAiVU5JVFMiLCAia2V5cyIsICJzb3J0ZXIiLCAiYSIsICJpbnB1dCIsICJhZGFwdGVyIiwgIl9hZGFwdGVyIiwgInBhcnNlciIsICJpc29XZWVrZGF5IiwgIl9wYXJzZU9wdHMiLCAiaXNOdW1iZXIiLCAic3RhcnRPZiIsICJkZXRlcm1pbmVVbml0Rm9yQXV0b1RpY2tzIiwgIm1pblVuaXQiLCAiY2FwYWNpdHkiLCAiaWxlbiIsICJpbnRlcnZhbCIsICJNQVhfU0FGRV9JTlRFR0VSIiwgImRldGVybWluZVVuaXRGb3JGb3JtYXR0aW5nIiwgIm51bVRpY2tzIiwgImRpZmYiLCAiZGV0ZXJtaW5lTWFqb3JVbml0IiwgImFkZFRpY2siLCAidGltZSIsICJ0aW1lc3RhbXBzIiwgImxvIiwgImhpIiwgIl9sb29rdXAiLCAidGltZXN0YW1wIiwgInNldE1ham9yVGlja3MiLCAibWFqb3JVbml0IiwgImFkZCIsICJ0aWNrc0Zyb21UaW1lc3RhbXBzIiwgIlRpbWVTY2FsZSIsICJwcm9wcyIsICJfY2FjaGUiLCAiZGF0YSIsICJhbGwiLCAiX3VuaXQiLCAiX21ham9yVW5pdCIsICJfb2Zmc2V0cyIsICJfbm9ybWFsaXplZCIsICJzY2FsZU9wdHMiLCAiYWRhcHRlcnMiLCAiX2RhdGUiLCAiZGF0ZSIsICJtZXJnZUlmIiwgImRpc3BsYXlGb3JtYXRzIiwgImZvcm1hdHMiLCAibm9ybWFsaXplZCIsICJiZWZvcmVMYXlvdXQiLCAiX2FwcGx5Qm91bmRzIiwgIl9nZXRMYWJlbEJvdW5kcyIsICJzb3VyY2UiLCAiRGF0ZSIsICJub3ciLCAiZW5kT2YiLCAiYXJyIiwgImdldExhYmVsVGltZXN0YW1wcyIsICJORUdBVElWRV9JTkZJTklUWSIsICJ0aW1lT3B0cyIsICJfZ2VuZXJhdGUiLCAiX2ZpbHRlckJldHdlZW4iLCAiYXV0b1NraXAiLCAiX2dldExhYmVsQ2FwYWNpdHkiLCAiaW5pdE9mZnNldHMiLCAiYWZ0ZXJBdXRvU2tpcCIsICJvZmZzZXRBZnRlckF1dG9za2lwIiwgImdldERlY2ltYWxGb3JWYWx1ZSIsICJsaW1pdCIsICJtaW5vciIsICJ3ZWVrZGF5IiwgImhhc1dlZWtkYXkiLCAiRXJyb3IiLCAiZ2V0RGF0YVRpbWVzdGFtcHMiLCAic29ydCIsICJ0b29sdGlwRm9ybWF0IiwgImRhdGV0aW1lIiwgImZtdCIsICJfdGlja0Zvcm1hdEZ1bmN0aW9uIiwgImZvcm1hdHRlciIsICJtaW5vckZvcm1hdCIsICJtYWpvckZvcm1hdCIsICJvZmZzZXRzIiwgIl9nZXRMYWJlbFNpemUiLCAidGlja3NPcHRzIiwgInRpY2tMYWJlbFdpZHRoIiwgIm1heFJvdGF0aW9uIiwgImNvc1JvdGF0aW9uIiwgInNpblJvdGF0aW9uIiwgInRpY2tGb250U2l6ZSIsICJleGFtcGxlVGltZSIsICJleGFtcGxlTGFiZWwiLCAibWV0YXMiLCAiZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMiLCAiY29udHJvbGxlciIsICJnZXRBbGxQYXJzZWRWYWx1ZXMiLCAiY29uY2F0IiwgIm5vcm1hbGl6ZSIsICJfYXJyYXlVbmlxdWUiLCAiaW50ZXJwb2xhdGUiLCAidGFibGUiLCAidmFsIiwgInByZXZTb3VyY2UiLCAibmV4dFNvdXJjZSIsICJwcmV2VGFyZ2V0IiwgIm5leHRUYXJnZXQiLCAiX2xvb2t1cEJ5S2V5IiwgInNwYW4iLCAiVGltZVNlcmllc1NjYWxlIiwgIl90YWJsZSIsICJfbWluUG9zIiwgIl90YWJsZVJhbmdlIiwgIl9nZXRUaW1lc3RhbXBzRm9yVGFibGUiLCAiYnVpbGRMb29rdXBUYWJsZSIsICJwcmV2IiwgImN1cnIiLCAibmV4dCIsICJpbmNsdWRlcyIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X3ZodG1sIiwgImgiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAibm93IiwgIkRlY2siLCAibm93Il0KfQo=