@dra2020/dra-types 1.8.76 → 1.8.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/csv.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { Util, G } from '@dra2020/baseclient';
2
2
  import * as VF from './vfeature';
3
- export declare type BlockMap = {
3
+ export type BlockMap = {
4
4
  [id: string]: number;
5
5
  };
6
- export declare type BlockMapping = {
6
+ export type BlockMapping = {
7
7
  [id: string]: string;
8
8
  };
9
- export declare type RevBlockMapping = {
9
+ export type RevBlockMapping = {
10
10
  [id: string]: string[];
11
11
  };
12
- export declare type AltBlockMapping = {
12
+ export type AltBlockMapping = {
13
13
  [blockid: string]: {
14
14
  [blockid: string]: number;
15
15
  };
@@ -18,7 +18,7 @@ export declare function canonicalDistrictID(districtID: string): string;
18
18
  export declare function canonicalSortingDistrictID(districtID: string): string;
19
19
  export declare function canonicalNumericFromDistrictID(districtID: string): number;
20
20
  export declare function canonicalDistrictIDFromNumber(districtID: string, n: number): string;
21
- export declare type DistrictOrder = {
21
+ export type DistrictOrder = {
22
22
  [districtID: string]: number;
23
23
  };
24
24
  export declare function canonicalDistrictIDGapFill(keys: string[]): string[];
@@ -48,8 +48,8 @@ export declare function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlo
48
48
  export declare const StateIdToStateCode: any;
49
49
  export declare const StateCodeToStateId: any;
50
50
  export declare function geoidToState(geoid: string): string;
51
- export declare type StateUrls = ('alabama' | 'alaska' | 'arizona' | 'arkansas' | 'california' | 'colorado' | 'connecticut' | 'delaware' | 'district-of-columbia' | 'florida' | 'georgia' | 'hawaii' | 'idaho' | 'illinois' | 'indiana' | 'iowa' | 'kansas' | 'kentucky' | 'louisiana' | 'maine' | 'maryland' | 'massachusetts' | 'michigan' | 'minnesota' | 'mississippi' | 'missouri' | 'montana' | 'nebraska' | 'nevada' | 'new-hampshire' | 'new-jersey' | 'new-mexico' | 'new-york' | 'north-carolina' | 'north-dakota' | 'ohio' | 'oklahoma' | 'oregon' | 'pennsylvania' | 'rhode-island' | 'south-carolina' | 'south-dakota' | 'tennessee' | 'texas' | 'utah' | 'vermont' | 'virginia' | 'washington' | 'west-virginia' | 'wisconsin' | 'wyoming' | 'puerto-rico');
52
- export declare type ValidStateNamesForUrlType = {
51
+ export type StateUrls = ('alabama' | 'alaska' | 'arizona' | 'arkansas' | 'california' | 'colorado' | 'connecticut' | 'delaware' | 'district-of-columbia' | 'florida' | 'georgia' | 'hawaii' | 'idaho' | 'illinois' | 'indiana' | 'iowa' | 'kansas' | 'kentucky' | 'louisiana' | 'maine' | 'maryland' | 'massachusetts' | 'michigan' | 'minnesota' | 'mississippi' | 'missouri' | 'montana' | 'nebraska' | 'nevada' | 'new-hampshire' | 'new-jersey' | 'new-mexico' | 'new-york' | 'north-carolina' | 'north-dakota' | 'ohio' | 'oklahoma' | 'oregon' | 'pennsylvania' | 'rhode-island' | 'south-carolina' | 'south-dakota' | 'tennessee' | 'texas' | 'utah' | 'vermont' | 'virginia' | 'washington' | 'west-virginia' | 'wisconsin' | 'wyoming' | 'puerto-rico');
52
+ export type ValidStateNamesForUrlType = {
53
53
  readonly [stateUrl in StateUrls]: boolean;
54
54
  };
55
55
  export declare function isValidStateNameForUrl(s: any): s is StateUrls;
@@ -8,7 +8,7 @@ export interface CommentList {
8
8
  id?: string;
9
9
  [commentid: string]: Comment | string;
10
10
  }
11
- export declare type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';
11
+ export type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';
12
12
  export interface Like {
13
13
  date: string;
14
14
  kind: LikeKind;
@@ -21,4 +21,4 @@ export interface UserLikes {
21
21
  id?: string;
22
22
  [aid: string]: Like | string;
23
23
  }
24
- export declare type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';
24
+ export type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';
package/dist/dra-types.js CHANGED
@@ -7,7 +7,7 @@
7
7
  exports["dra-types"] = factory();
8
8
  else
9
9
  root["dra-types"] = factory();
10
- })(global, function() {
10
+ })(global, () => {
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ "use strict";
13
13
  /******/ var __webpack_modules__ = ({
@@ -21,7 +21,11 @@ return /******/ (() => { // webpackBootstrap
21
21
 
22
22
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
23
  if (k2 === undefined) k2 = k;
24
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
25
29
  }) : (function(o, m, k, k2) {
26
30
  if (k2 === undefined) k2 = k;
27
31
  o[k2] = m[k];
@@ -1534,12 +1538,12 @@ exports.Schemas = {
1534
1538
 
1535
1539
 
1536
1540
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1537
- exports.splitToGeoFeature = void 0;
1541
+ exports.splitUpdateContiguity = exports.splitToGeoFeature = void 0;
1538
1542
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
1539
1543
  const DT = __webpack_require__(/*! ./vfeature */ "./lib/vfeature.ts");
1540
1544
  // Given the topology for a precinct and a split, compute the feature data for the virtual feature.
1541
1545
  //
1542
- function splitToGeoFeature(split, topoPrecinct, blockmapping) {
1546
+ function splitToGeoFeature(split, topoPrecinct, mbm) {
1543
1547
  let f = baseclient_1.Poly.topoMerge(topoPrecinct, split.blocks);
1544
1548
  if (!f)
1545
1549
  return f;
@@ -1552,7 +1556,10 @@ function splitToGeoFeature(split, topoPrecinct, blockmapping) {
1552
1556
  baseclient_1.Util.deepAccum(f.properties.datasets, b.properties.datasets);
1553
1557
  if (b.properties.contiguity) {
1554
1558
  b.properties.contiguity.forEach((id) => {
1555
- contiguity.set(id === 'OUT_OF_STATE' ? id : blockmapping.map(id));
1559
+ if (id === 'OUT_OF_STATE')
1560
+ contiguity.set(id);
1561
+ else
1562
+ mbm.multimap(id).forEach(geoid => contiguity.set(geoid));
1556
1563
  });
1557
1564
  b.properties.contiguity.forEach((id) => {
1558
1565
  block_contiguity.set(id);
@@ -1564,9 +1571,29 @@ function splitToGeoFeature(split, topoPrecinct, blockmapping) {
1564
1571
  f.properties.contiguity = contiguity.asArray();
1565
1572
  f.properties.block_contiguity = block_contiguity.asArray();
1566
1573
  f.properties.blocks = split.blocks;
1574
+ f.properties.mbmstamp = mbm.stamp;
1567
1575
  return f;
1568
1576
  }
1569
1577
  exports.splitToGeoFeature = splitToGeoFeature;
1578
+ function splitUpdateContiguity(f, topoPrecinct, mbm) {
1579
+ if (topoPrecinct && f.properties.blocks && f.properties.mbmstamp !== mbm.stamp) {
1580
+ let contiguity = new baseclient_1.Util.IndexedArray();
1581
+ f.properties.blocks.forEach((blockid) => {
1582
+ let b = topoPrecinct.objects[blockid];
1583
+ if (b.properties.contiguity) {
1584
+ b.properties.contiguity.forEach((id) => {
1585
+ if (id === 'OUT_OF_STATE')
1586
+ contiguity.set(id);
1587
+ else
1588
+ mbm.multimap(id).forEach(geoid => contiguity.set(geoid));
1589
+ });
1590
+ }
1591
+ });
1592
+ f.properties.contiguity = contiguity.asArray();
1593
+ f.properties.mbm = mbm;
1594
+ }
1595
+ }
1596
+ exports.splitUpdateContiguity = splitUpdateContiguity;
1570
1597
 
1571
1598
 
1572
1599
  /***/ }),
@@ -1 +1 @@
1
- {"version":3,"file":"dra-types.js","mappings":"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EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAgB,YAAY,CAAC,KAAa;IAExC,IAAI,EAAE,GAAG,UAAU,CAAC;IAEpB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAPD,oCAOC;AA8DD,MAAM,qBAAqB,GAA8B;IACvD,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,IAAI;IAChB,sBAAsB,EAAE,IAAI;IAC5B,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,SAAgB,sBAAsB,CAAC,CAAM;IAE3C,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAHD,wDAGC;AAED,gDAAgD;AACnC,yBAAiB,GAAa;IACzC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAEW,oBAAY,GAA8B;IACrD,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,aAAa;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AEvwBF,+EAAyC;AAEzC,IAAI,UAAU,GAAa,IAAI,CAAC;AAChC,MAAM,SAAS,GAAW,GAAG,CAAC;AAE9B,SAAgB,QAAQ,CAAC,CAAS,EAAE,aAAsB;IAExD,0FAA0F;IAC1F,SAAS,SAAS;QAEhB,UAAU,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAC1C;YACE,4DAA4D;YAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE;IACH,CAAC;IAED,IAAI,UAAU,IAAI,IAAI;QACpB,SAAS,EAAE,CAAC;IAEd,IAAI,CAAC,IAAI,CAAC;QACR,OAAO,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AACrE,CAAC;AApBD,4BAoBC;;;;;;;;;;;;;;AClBY,mBAAW,GAAG,CAAC,CAAC;AAChB,sBAAc,GAAG,CAAC,CAAC;AACnB,kBAAU,GAAG,CAAC,CAAC;AACf,qBAAa,GAAG,CAAC,CAAC;AAClB,qBAAa,GAAG,EAAE,CAAC;AACnB,mBAAW,GAAG,EAAE,CAAC;AAE9B,SAAgB,SAAS,CAAC,KAAa;IAErC,OAAO,CAAC,KAAK,GAAG,CAAC,qBAAa,GAAC,qBAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAHD,8BAGC;AAED,SAAgB,UAAU,CAAC,KAAa;IAEtC,OAAO,CAAC,KAAK,GAAG,CAAC,mBAAW,GAAC,mBAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAHD,gCAGC;;;;;;;;;;;;;;ACtBD,2FAA8C;AAY9C,SAAgB,qBAAqB,CAAC,SAAoB;IAExD,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,GAAG,GAA2B,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjC,IAAI,CAAC,GAAiB;YAClB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACR,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B;YACH,QAAQ,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,CAAC,CAAC,KAAK;aACrB;SACJ,CAAC;QACJ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AArBD,sDAqBC;AAED,SAAgB,qBAAqB,CAAC,GAA2B;IAE/D,IAAI,SAAS,GAAc,EAAE,CAAC;IAC9B,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAe,EAAE,EAAE;YAC9D,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAC/B;gBACE,IAAI,CAAC,GAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC5E;oBACE,IAAI,QAAQ,GAAa;wBACvB,EAAE,EAAE,iBAAI,CAAC,UAAU,EAAE;wBACrB,IAAI,EAAE,cAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE;wBAC3C,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClB,CAAC;oBACJ,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;iBACnC;aACF;QACH,CAAC,CAAC,CAAC;IACL,OAAO,SAAS,CAAC;AACnB,CAAC;AApBD,sDAoBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGvDD,SAAgB,mBAAmB,CAAC,EAAO;IAEzC,IAAI,GAAG,GAAQ,EAAE,CAAC;IAElB,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,CAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,kDAWC;AAED,SAAgB,iBAAiB,CAAC,EAAO,EAAE,CAAS;IAElD,IAAI,GAAG,GAAQ,EAAE,CAAC;IAElB,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AAVD,8CAUC;AAED,SAAgB,wBAAwB,CAAC,EAAO;IAE9C,OAAO,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAHD,4DAGC;AAED,SAAgB,mBAAmB,CAAC,EAAO;IAEzC,OAAO,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAHD,kDAGC;;;;;;;;;;;;;;ACjCU,eAAO,GAAQ;IACxB,OAAO,EACL;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;QACtD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,KAAK,EAAE,MAAM,EAAE;YACjB,EAAE,UAAU,EAAE,MAAM,EAAE;YACtB,EAAE,SAAS,EAAE,MAAM,EAAE;SACtB;KACJ;IACH,OAAO,EACL;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE;QACxD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,GAAG,EAAE,GAAG;SACT;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,SAAS,EAAE,MAAM,EAAE;YACrB,EAAE,GAAG,EAAE,MAAM,EAAE;YACf,EAAE,EAAE,EAAE,MAAM,EAAE;SACf,EAAG,SAAS;KAChB;IACH,cAAc,EACZ;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE;QACxD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;SAClC;KACJ;IACH,UAAU,EACR;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,KAAK,EAAE,MAAM,EAAE;SAClB;KACJ;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,GAAG;SACZ;KACF;IACH,QAAQ,EACN;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,SAAS,EACP;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,YAAY,EAAE,GAAG;YACjB,gBAAgB;SACjB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,SAAS,EACP;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,WAAW,EACT,EAAE;IACJ,OAAO,EACL,EAAE;IACJ,UAAU,EACR,EAAE;IACJ,OAAO,EACL,EAAE;IACJ,WAAW,EACT,EAAE;IACJ,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,QAAQ,EAAE,MAAM,EAAE;SACrB;KACJ;IACH,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;SACd;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,OAAO,EACL;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,SAAS,EAAE,MAAM,EAAE;YACrB,EAAE,EAAE,EAAE,MAAM,EAAE;SACf,EAAG,SAAS;KAChB;IACH,QAAQ,EACN;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;SACjB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,aAAa,EACX;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;KACxC;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,UAAU,EAAE,GAAG;SAChB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;KACxC;IACH,eAAe,EACb;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;SACb;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;KAC9C;IACH,MAAM,EACJ;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,GAAG;SACb;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;SACjB;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,EAAE,EAAE,MAAM,EAAE;YACd,EAAE,SAAS,EAAE,MAAM,EAAE;SACtB,EAAG,SAAS;KAChB;CACJ;;;;;;;;;;;;;;ACvSD,2FAAoD;AACpD,sEAAiC;AAEjC,mGAAmG;AACnG,EAAE;AAEF,SAAgB,iBAAiB,CAAC,KAAoB,EAAE,YAAuB,EAAE,YAAiC;IAEhH,IAAI,CAAC,GAAG,iBAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjB,IAAI,UAAU,GAAG,IAAI,iBAAI,CAAC,YAAY,EAAE,CAAC;IACzC,IAAI,gBAAgB,GAAG,IAAI,iBAAI,CAAC,YAAY,EAAE,CAAC;IAC/C,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ;YACvB,iBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,EAC3B;YACE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC3C,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC3C,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;IACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,WAAW,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC;IAChF,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC,CAAC,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,OAAO,CAAC,CAAC;AACX,CAAC;AA5BD,8CA4BC;;;;;;;;;;;;;;ACnBY,wBAAgB,GAA+B;IAC1D,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACpM,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAC;IACzK,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAC;CACrK,CAAC;AAEF,SAAgB,WAAW,CAAC,SAAiB,EAAE,QAAqB,EAAE,MAAgB;IAEpF,4DAA4D;IAC5D,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,QAAQ,KAAK,OAAO;QACpE,OAAO,KAAK,CAAC;IAEf,mEAAmE;IACnE,IAAI,QAAQ,KAAK,UAAU;QACzB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YACvJ,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAClC;QACE,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM;QAC9C,OAAO,KAAK,CAAC;IAEf,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,kCAkBC;AAED,SAAgB,+BAA+B,CAAC,SAAiB;IAE/D,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9F,CAAC;AAHD,0EAGC;AAED,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,QAAqB,EAAE,UAAkB;IAE/F,IAAI,QAAQ,KAAK,KAAK;QACpB,OAAO,CAAC,CAAC;IACX,IAAI,UAAU,KAAK,SAAS;QAC1B,UAAU,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC;QACrI,OAAO,CAAC,CAAC;IAEX,MAAM,aAAa,GAAkB,wBAAgB,CAAC,SAAS,CAAC,CAAC,UAAqC,CAAC,CAAC;IACxG,OAAO,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAXD,oDAWC;AAED,6HAA6H;AAC7H,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;IAExE,IAAI,UAAU,KAAK,SAAS;QAC1B,UAAU,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC;QACxD,OAAO,CAAC,CAAC;IAEX,MAAM,aAAa,GAAkB,wBAAgB,CAAC,SAAS,CAAC,CAAC,UAAqC,CAAC,CAAC;IACxG,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AATD,oDASC;AAED,SAAgB,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,UAAkB,EAAE,IAAc;IAErG,wCAAwC;IACxC,MAAM,aAAa,GAAW,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACtF,MAAM,UAAU,GAAW,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,UAAU,GAAW,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChF,OAAO,CACL,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,UAAU,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5H,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC;AACb,CAAC;AAXD,sCAWC;;;;;;;;;;;;ACpID,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,iGAAiG;AACjG,EAAE;AACF,6CAA6C;AAC7C,kGAAkG;AAClG,kFAAkF;AAClF,2EAA2E;AAC3E,EAAE;;;AAGW,kBAAU,GAAG,CAAC,CAAC;AACf,kBAAU,GAAG,CAAC,CAAC;AACf,mBAAW,GAAG,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAE,oDAAoD;AAE5F,SAAgB,cAAc;IAE5B,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC;AALD,wCAKC;AAoCD,sFAAsF;AACtF,mFAAmF;AAEnF,SAAgB,eAAe,CAAC,EAAa,EAAE,GAAW,EAAE,OAAgB;IAE1E,IAAI,EAAE,KAAK,SAAS;QAAE,EAAE,GAAG,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG;QACtC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG;QACtC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACb,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC;AACZ,CAAC;AAVD,0CAUC;AAED,SAAgB,YAAY,CAAC,EAAY,EAAE,OAAe,CAAC;IAEzD,IAAI,EAAE,IAAI,IAAI;QAAE,EAAE,GAAG,EAAE,CAAC;IACxB,EAAE,CAAC,OAAO,GAAG,mBAAW,CAAC;IACzB,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAC,IAAI,CAAC;IAC/D,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAC,IAAI,CAAC;IAClE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAC,IAAI,CAAC;IAC/D,OAAO,EAAE,CAAC;AACZ,CAAC;AARD,oCAQC;AAEY,iBAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,eAAO,GAAG,iBAAS,GAAG,EAAE,CAAC;AACzB,cAAM,GAAG,eAAO,GAAG,EAAE,CAAC;AAEnC,SAAgB,gBAAgB,CAAC,EAAY,EAAE,MAAc;IAE3D,IAAI,CAAC,MAAM,GAAG,iBAAS,CAAC,IAAI,CAAC,EAC7B;QACE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACxB,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;KAChB;IACD,IAAI,CAAC,MAAM,GAAG,eAAO,CAAC,IAAI,CAAC,EAC3B;QACE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC1B,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,CAAC,MAAM,GAAG,cAAM,CAAC,IAAI,CAAC,EAC1B;QACE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACxB,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;KAChB;AACH,CAAC;AAjBD,4CAiBC;AAED,SAAgB,mBAAmB,CAAC,KAAqB,EAAE,EAAkB;IAE3E,IAAI,KAAK,IAAI,IAAI;QAAE,KAAK,GAAG,EAAE,CAAC;IAE9B,mDAAmD;IACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,mBAAW;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IAEpG,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,OAAO,IAAI,mBAAW;YAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;aAEhB;YACE,IAAI,EAAE,GAAG,EAAe,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,EAAe,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;SACjE;IACH,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,kDAmBC;AAED,SAAgB,sBAAsB,CAAC,EAAkB,EAAE,MAAc;IAEvE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,OAAO,IAAI,mBAAW;YAC3B,gBAAgB,CAAC,EAAc,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAPD,wDAOC;AAED,SAAgB,eAAe,CAAC,KAAiB,EAAE,EAAc;IAE/D,IAAI,KAAK,IAAI,IAAI;QACf,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC3B,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACrB,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AARD,0CAQC;AAED,6EAA6E;AAC7E,+BAA+B;AAC/B,EAAE;AAEF,SAAgB,cAAc,CAAC,KAAgB,EAAE,EAAa;IAE5D,IAAI,KAAK,IAAI,IAAI,EACjB;QACE,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;KAC5B;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;QAC/C,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;QAC/C,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAC7B,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC7B,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAU;QAC7B,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAC/D,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAU,EACpC;QACE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;QAC/D,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;KACnC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,wCAsBC;AAED,SAAgB,aAAa,CAAC,KAAe,EAAE,EAAY;IAEzD,IAAI,KAAK,IAAI,IAAI,EACjB;QACE,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;KAC5B;IACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/H,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/H,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,C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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, function() {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: mbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (n >= 15 && !(mbm && mbm.map(id) !== undefined) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (n >= 15 && (!mbm || !mbm.rev(id)))\n {\n ids = [id];\n if (mbm && mbm.map(id) !== undefined)\n geoids = [mbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (mbm && !mbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(mbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => mbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (mbm.rev(geoid) && blocks.length === mbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\n}\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, blockmapping: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n f.properties.datasets = {};\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n contiguity.set(id === 'OUT_OF_STATE' ? id : blockmapping.map(id));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"dra-types.js","mappings":"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AAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAA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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, () => {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: mbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (n >= 15 && !(mbm && mbm.map(id) !== undefined) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (n >= 15 && (!mbm || !mbm.rev(id)))\n {\n ids = [id];\n if (mbm && mbm.map(id) !== undefined)\n geoids = [mbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (mbm && !mbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(mbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => mbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (mbm.rev(geoid) && blocks.length === mbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\n}\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n f.properties.datasets = {};\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n f.properties.mbmstamp = mbm.stamp;\n return f;\n}\n\nexport function splitUpdateContiguity(f: G.GeoFeature, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): void\n{\n if (topoPrecinct && f.properties.blocks && f.properties.mbmstamp !== mbm.stamp)\n {\n let contiguity = new Util.IndexedArray();\n f.properties.blocks.forEach((blockid: string) => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n }\n });\n f.properties.contiguity = contiguity.asArray();\n f.properties.mbm = mbm;\n }\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
package/dist/groups.d.ts CHANGED
@@ -21,12 +21,12 @@ export interface GroupMap {
21
21
  sid: string;
22
22
  permission: number;
23
23
  }
24
- export declare type GroupUserIndex = {
24
+ export type GroupUserIndex = {
25
25
  [groupid: string]: number;
26
26
  };
27
- export declare type GroupMapIndex = {
27
+ export type GroupMapIndex = {
28
28
  [groupid: string]: number;
29
29
  };
30
- export declare type GroupIndex = {
30
+ export type GroupIndex = {
31
31
  [groupid: string]: Group;
32
32
  };
@@ -5,7 +5,7 @@ export interface Landmark {
5
5
  description: string;
6
6
  coord: [number, number];
7
7
  }
8
- export declare type Landmarks = {
8
+ export type Landmarks = {
9
9
  [id: string]: Landmark;
10
10
  };
11
11
  export declare function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection;
package/dist/layer.d.ts CHANGED
@@ -10,10 +10,10 @@ export interface UserLayerMeta {
10
10
  published?: string;
11
11
  official?: boolean;
12
12
  }
13
- export declare type UserLayerMetaIndex = {
13
+ export type UserLayerMetaIndex = {
14
14
  [id: string]: UserLayerMeta;
15
15
  };
16
- export declare type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';
16
+ export type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';
17
17
  export interface UserLayerRef {
18
18
  id: string;
19
19
  name?: string;
@@ -33,6 +33,6 @@ export interface UserLayerRef {
33
33
  fillOpacity: number;
34
34
  lineWidth?: number;
35
35
  }
36
- export declare type UserLayerRefIndex = {
36
+ export type UserLayerRefIndex = {
37
37
  [id: string]: UserLayerRef;
38
38
  };
@@ -12,6 +12,6 @@ export interface Precincts {
12
12
  published?: string;
13
13
  official?: boolean;
14
14
  }
15
- export declare type PrecinctsIndex = {
15
+ export type PrecinctsIndex = {
16
16
  [id: string]: Precincts;
17
17
  };
@@ -1,3 +1,4 @@
1
1
  import { Poly, G } from '@dra2020/baseclient';
2
2
  import * as DT from './vfeature';
3
- export declare function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, blockmapping: G.MultiBlockMapping): G.GeoFeature;
3
+ export declare function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature;
4
+ export declare function splitUpdateContiguity(f: G.GeoFeature, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): void;
package/dist/stats.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare type ValType = number;
1
+ export type ValType = number;
2
2
  export declare const ValTypeSum = 0;
3
3
  export declare const ValTypeAvg = 1;
4
4
  export declare const ValTypeRate = 2;
@@ -10,8 +10,8 @@ export interface StatRecord {
10
10
  time: string;
11
11
  index: StatEntryIndex;
12
12
  }
13
- export declare type StatEntry = StatValue | StatRate;
14
- export declare type StatEntryIndex = {
13
+ export type StatEntry = StatValue | StatRate;
14
+ export type StatEntryIndex = {
15
15
  [name: string]: StatEntry;
16
16
  };
17
17
  export interface StatValue {
@@ -14,7 +14,7 @@ export interface SplitChunk {
14
14
  recompute?: boolean;
15
15
  splits?: string[];
16
16
  }
17
- export declare type DistrictToSplitBlock = {
17
+ export type DistrictToSplitBlock = {
18
18
  [districtID: string]: SplitBlock[];
19
19
  };
20
20
  export declare function chash(o: any): string;
@@ -1,4 +1,4 @@
1
- export declare type WorkQueueFailure = 'hard' | 'soft';
1
+ export type WorkQueueFailure = 'hard' | 'soft';
2
2
  export interface WorkQueueItem {
3
3
  id: string;
4
4
  functionName: string;
@@ -5,7 +5,7 @@ import * as DT from './vfeature';
5
5
  // Given the topology for a precinct and a split, compute the feature data for the virtual feature.
6
6
  //
7
7
 
8
- export function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, blockmapping: G.MultiBlockMapping): G.GeoFeature
8
+ export function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature
9
9
  {
10
10
  let f = Poly.topoMerge(topoPrecinct, split.blocks);
11
11
  if (!f) return f;
@@ -20,7 +20,10 @@ export function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo,
20
20
  if (b.properties.contiguity)
21
21
  {
22
22
  b.properties.contiguity.forEach((id: string) => {
23
- contiguity.set(id === 'OUT_OF_STATE' ? id : blockmapping.map(id));
23
+ if (id === 'OUT_OF_STATE')
24
+ contiguity.set(id);
25
+ else
26
+ mbm.multimap(id).forEach(geoid => contiguity.set(geoid));
24
27
  });
25
28
  b.properties.contiguity.forEach((id: string) => {
26
29
  block_contiguity.set(id);
@@ -32,5 +35,28 @@ export function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo,
32
35
  f.properties.contiguity = contiguity.asArray();
33
36
  f.properties.block_contiguity = block_contiguity.asArray();
34
37
  f.properties.blocks = split.blocks;
38
+ f.properties.mbmstamp = mbm.stamp;
35
39
  return f;
36
40
  }
41
+
42
+ export function splitUpdateContiguity(f: G.GeoFeature, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): void
43
+ {
44
+ if (topoPrecinct && f.properties.blocks && f.properties.mbmstamp !== mbm.stamp)
45
+ {
46
+ let contiguity = new Util.IndexedArray();
47
+ f.properties.blocks.forEach((blockid: string) => {
48
+ let b = topoPrecinct.objects[blockid];
49
+ if (b.properties.contiguity)
50
+ {
51
+ b.properties.contiguity.forEach((id: string) => {
52
+ if (id === 'OUT_OF_STATE')
53
+ contiguity.set(id);
54
+ else
55
+ mbm.multimap(id).forEach(geoid => contiguity.set(geoid));
56
+ });
57
+ }
58
+ });
59
+ f.properties.contiguity = contiguity.asArray();
60
+ f.properties.mbm = mbm;
61
+ }
62
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dra2020/dra-types",
3
- "version": "1.8.76",
3
+ "version": "1.8.78",
4
4
  "description": "Shared types used between client, server and tools.",
5
5
  "main": "dist/dra-types.js",
6
6
  "types": "./dist/all.d.ts",
@@ -23,18 +23,18 @@
23
23
  },
24
24
  "homepage": "https://github.com/dra2020/dra-types#readme",
25
25
  "devDependencies": {
26
- "@types/geojson": "^7946.0.8",
27
- "@types/node": "^12.19.9",
26
+ "@types/geojson": "^7946.0.10",
27
+ "@types/node": "^18.11.11",
28
28
  "@types/object-hash": "^2.2.1",
29
- "source-map-loader": "^3.0.0",
30
- "ts-loader": "^9.2.6",
29
+ "source-map-loader": "^4.0.1",
30
+ "ts-loader": "^9.4.2",
31
31
  "tsify": "^5.0.4",
32
- "typescript": "^4.5.2",
33
- "webpack": "^5.65.0",
34
- "webpack-cli": "^4.9.1"
32
+ "typescript": "^4.9.3",
33
+ "webpack": "^5.75.0",
34
+ "webpack-cli": "^5.0.1"
35
35
  },
36
36
  "dependencies": {
37
- "@dra2020/baseclient": "^1.0.88",
37
+ "@dra2020/baseclient": "^1.0.93",
38
38
  "geojson": "^0.5.0",
39
39
  "object-hash": "^2.2.0"
40
40
  }