codeforlife 2.15.0 → 2.15.2

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.
Files changed (82) hide show
  1. package/dist/{Countdown-CawuOdYd.js → Countdown-7u1DzDR6.js} +2 -2
  2. package/dist/{Countdown-CawuOdYd.js.map → Countdown-7u1DzDR6.js.map} +1 -1
  3. package/dist/{Countdown-BlWW6v4w.cjs → Countdown-DcpBiBvm.cjs} +2 -2
  4. package/dist/{Countdown-BlWW6v4w.cjs.map → Countdown-DcpBiBvm.cjs.map} +1 -1
  5. package/dist/{LinkButton-CT5GnUkH.cjs → LinkButton-BckDwGNE.cjs} +2 -2
  6. package/dist/{LinkButton-CT5GnUkH.cjs.map → LinkButton-BckDwGNE.cjs.map} +1 -1
  7. package/dist/{LinkButton-BeFBbR7x.js → LinkButton-Bx0ZVW3I.js} +2 -2
  8. package/dist/{LinkButton-BeFBbR7x.js.map → LinkButton-Bx0ZVW3I.js.map} +1 -1
  9. package/dist/{Navigate-DBH0qlzU.js → Navigate-CCGSrY0W.js} +2 -2
  10. package/dist/{Navigate-DBH0qlzU.js.map → Navigate-CCGSrY0W.js.map} +1 -1
  11. package/dist/{Navigate-w-jtzle_.cjs → Navigate-CsNv1-lV.cjs} +2 -2
  12. package/dist/{Navigate-w-jtzle_.cjs.map → Navigate-CsNv1-lV.cjs.map} +1 -1
  13. package/dist/api/endpoints/index.cjs.js +1 -1
  14. package/dist/api/endpoints/index.es.js +2 -2
  15. package/dist/api/index.cjs.js +1 -1
  16. package/dist/api/index.es.js +3 -3
  17. package/dist/{api-CaEovEUU.cjs → api-B0rgE7_-.cjs} +2 -2
  18. package/dist/{api-CaEovEUU.cjs.map → api-B0rgE7_-.cjs.map} +1 -1
  19. package/dist/{api-r7TLkejc.js → api-vqkeMjJB.js} +2 -2
  20. package/dist/{api-r7TLkejc.js.map → api-vqkeMjJB.js.map} +1 -1
  21. package/dist/{auth-DdbHSDCh.cjs → auth-BLHTLvd6.cjs} +2 -2
  22. package/dist/{auth-DdbHSDCh.cjs.map → auth-BLHTLvd6.cjs.map} +1 -1
  23. package/dist/{auth-BXLedrZH.js → auth-gIOzqmde.js} +3 -3
  24. package/dist/{auth-BXLedrZH.js.map → auth-gIOzqmde.js.map} +1 -1
  25. package/dist/components/form/index.cjs.js +1 -1
  26. package/dist/components/form/index.es.js +1 -1
  27. package/dist/components/index.cjs.js +1 -1
  28. package/dist/components/index.es.js +7 -7
  29. package/dist/components/page/index.cjs.js +1 -1
  30. package/dist/components/page/index.es.js +1 -1
  31. package/dist/components/router/index.cjs.js +1 -1
  32. package/dist/components/router/index.es.js +2 -2
  33. package/dist/features/index.cjs.js +1 -1
  34. package/dist/features/index.es.js +4 -4
  35. package/dist/hooks/index.cjs.js +1 -1
  36. package/dist/hooks/index.es.js +1 -1
  37. package/dist/{index-CTYVnDkQ.js → index-BE-uSkLK.js} +18 -17
  38. package/dist/{index-CTYVnDkQ.js.map → index-BE-uSkLK.js.map} +1 -1
  39. package/dist/index-BGw9SbMr.cjs +2 -0
  40. package/dist/{index-CgShi-oQ.cjs.map → index-BGw9SbMr.cjs.map} +1 -1
  41. package/dist/{index-BepQQq9P.cjs → index-BsALQkcn.cjs} +2 -2
  42. package/dist/{index-BepQQq9P.cjs.map → index-BsALQkcn.cjs.map} +1 -1
  43. package/dist/{index-DeEIS6R8.js → index-jajHW612.js} +3 -3
  44. package/dist/{index-DeEIS6R8.js.map → index-jajHW612.js.map} +1 -1
  45. package/dist/schemas-B6wutboj.cjs +2 -0
  46. package/dist/schemas-B6wutboj.cjs.map +1 -0
  47. package/dist/schemas-XzwqFsHM.js +162 -0
  48. package/dist/schemas-XzwqFsHM.js.map +1 -0
  49. package/dist/src/utils/general.d.ts +2 -0
  50. package/dist/src/utils/object.d.ts +38 -4
  51. package/dist/{urls-DJiVb_ID.cjs → urls-CKKSekE9.cjs} +2 -2
  52. package/dist/{urls-DJiVb_ID.cjs.map → urls-CKKSekE9.cjs.map} +1 -1
  53. package/dist/{urls-CQ1fgrB1.js → urls-DCXZ2b50.js} +2 -2
  54. package/dist/{urls-CQ1fgrB1.js.map → urls-DCXZ2b50.js.map} +1 -1
  55. package/dist/utils/api.cjs.js +1 -1
  56. package/dist/utils/api.es.js +2 -2
  57. package/dist/utils/form.cjs.js +1 -1
  58. package/dist/utils/form.cjs.js.map +1 -1
  59. package/dist/utils/form.es.js +16 -16
  60. package/dist/utils/general.cjs.js.map +1 -1
  61. package/dist/utils/general.es.js.map +1 -1
  62. package/dist/utils/location.cjs.js +2 -0
  63. package/dist/utils/location.cjs.js.map +1 -0
  64. package/dist/utils/location.d.ts +2 -0
  65. package/dist/{schemas-BEK79Cdh.js → utils/location.es.js} +259 -165
  66. package/dist/utils/location.es.js.map +1 -0
  67. package/dist/utils/object.cjs.js +2 -0
  68. package/dist/utils/object.cjs.js.map +1 -0
  69. package/dist/utils/object.d.ts +2 -0
  70. package/dist/utils/object.es.js +98 -0
  71. package/dist/utils/object.es.js.map +1 -0
  72. package/dist/utils/router.cjs.js +1 -1
  73. package/dist/utils/router.es.js +1 -1
  74. package/package.json +11 -1
  75. package/dist/index-CgShi-oQ.cjs +0 -2
  76. package/dist/object-C0ukOmY8.cjs +0 -2
  77. package/dist/object-C0ukOmY8.cjs.map +0 -1
  78. package/dist/object-CcXAH2vY.js +0 -34
  79. package/dist/object-CcXAH2vY.js.map +0 -1
  80. package/dist/schemas-B1L2Knka.cjs +0 -2
  81. package/dist/schemas-B1L2Knka.cjs.map +0 -1
  82. package/dist/schemas-BEK79Cdh.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.es.js","sources":["../../src/utils/object.ts"],"sourcesContent":["/** Recursively extracts all numeric values from a nested object structure. */\nexport type DeepNumbersOf<T> = T extends number\n ? T\n : T extends object\n ? DeepNumbersOf<T[keyof T]>\n : never\n/** Recursively extracts all string values from a nested object structure. */\nexport type DeepStringsOf<T> = T extends string\n ? T\n : T extends object\n ? DeepStringsOf<T[keyof T]>\n : never\n\nfunction _flattenValuesOfType<T extends object, U>(\n obj: T,\n typeGuard: (value: unknown) => value is U,\n): U[] {\n return Object.values(obj).flatMap(v =>\n typeGuard(v)\n ? [v]\n : typeof v === \"object\" && v !== null\n ? _flattenValuesOfType(v, typeGuard)\n : [],\n )\n}\n\nexport function flattenNumberValues<T extends object>(\n obj: T,\n): DeepNumbersOf<T>[] {\n return _flattenValuesOfType(\n obj,\n (value): value is number => typeof value === \"number\",\n ) as DeepNumbersOf<T>[]\n}\n\nexport function flattenStringValues<T extends object>(\n obj: T,\n): DeepStringsOf<T>[] {\n return _flattenValuesOfType(\n obj,\n (value): value is string => typeof value === \"string\",\n ) as DeepStringsOf<T>[]\n}\n\nexport function getNestedProperty(\n obj: Record<string, any>,\n dotPath: string | string[],\n): any {\n if (typeof dotPath === \"string\") dotPath = dotPath.split(\".\")\n\n let value: unknown = obj\n for (let i = 0; i < dotPath.length; i++) {\n value = (value as Record<string, any>)[dotPath[i]]\n if (\n i !== dotPath.length - 1 &&\n (typeof value !== \"object\" || value === null)\n )\n return\n }\n\n return value\n}\n\nexport function withKeyPaths(obj: object, delimiter: string = \".\"): object {\n function _withKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _withKeyPaths(value as object, _path)\n\n return [_path.join(delimiter), value]\n }),\n )\n }\n\n return _withKeyPaths(obj, [])\n}\n\nexport function getKeyPaths(obj: object, delimiter: string = \".\"): string[] {\n function _getKeyPaths(obj: object, path: string[]): string[] {\n return Object.entries(obj)\n .map(([key, value]) => {\n const _path = [...path, key]\n const keyPath = _path.join(delimiter)\n\n return typeof value === \"object\" && value !== null\n ? [keyPath, ..._getKeyPaths(value as object, _path)]\n : [keyPath]\n })\n .flat()\n }\n\n return _getKeyPaths(obj, [])\n}\n\nexport function excludeKeyPaths(\n obj: object,\n exclude: string[],\n delimiter: string = \".\",\n): any {\n function _excludeKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]: [string, unknown]) => {\n const _path = [...path, key]\n\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Date)\n )\n value = _excludeKeyPaths(value, _path)\n\n return exclude.includes(_path.join(delimiter)) ? [] : [key, value]\n })\n .filter(entry => entry.length),\n ) as object\n }\n\n return exclude.length ? _excludeKeyPaths(obj, []) : obj\n}\n\ntype JoinPath<\n A extends string,\n B extends string,\n D extends string,\n> = A extends \"\" ? B : `${A}${D}${B}`\n\nexport type PathStringMap<\n T extends object,\n Path extends string = \"\",\n D extends string = \".\",\n> = T extends readonly (infer E extends string)[]\n ? { [V in E]: JoinPath<Path, V, D> }\n : {\n [K in keyof T & string]: T[K] extends readonly (infer E extends string)[]\n ? { [V in E]: JoinPath<JoinPath<Path, K, D>, V, D> }\n : T[K] extends object\n ? PathStringMap<T[K] & object, JoinPath<Path, K, D>, D>\n : T[K] extends string\n ? { [V in T[K]]: JoinPath<JoinPath<Path, K, D>, V, D> }\n : never\n }\n\nexport function createPathStrings<const T extends object>(\n obj: T,\n): PathStringMap<T>\nexport function createPathStrings<const T extends object, D extends string>(\n obj: T,\n delimiter: D,\n): PathStringMap<T, \"\", D>\nexport function createPathStrings(\n obj: object,\n delimiter: string = \".\",\n): object {\n function _createPathStrings(obj: object, path: string[]): object {\n if (Array.isArray(obj)) {\n return Object.fromEntries(\n (obj as string[]).map(value => [\n value,\n [...path, value].join(delimiter),\n ]),\n )\n }\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _createPathStrings(value as object, _path)\n else if (typeof value === \"string\")\n value = { [value]: [..._path, value].join(delimiter) }\n\n return [key, value]\n }),\n )\n }\n\n return _createPathStrings(obj, [])\n}\n\ntype PathSpec = string | { readonly [key: string]: PathSpec }\n\ntype ResolvePathSpec<T, ID extends number | string> = T extends string\n ? Record<T, ID>\n : { [K in keyof T]: ResolvePathSpec<T[K], ID> }\n\ntype UnionToIntersection<U> = (\n U extends unknown ? (x: U) => void : never\n) extends (x: infer I) => void\n ? I\n : never\n\nexport type IdRegistryResult<T extends Record<number | string, PathSpec>> =\n UnionToIntersection<\n {\n [K in keyof T]: K extends number | string\n ? ResolvePathSpec<T[K], K>\n : never\n }[keyof T]\n >\n\n/**\n * Converts a mapping of numeric or string keys to path specifications into a\n * nested object structure where each path specification is replaced with the\n * corresponding numeric or string key. This allows to create a global registry\n * of unique keys that can be easily referenced in the code.\n *\n * @param specs A mapping of numeric or string keys to path specifications,\n * where each path specification can be a string or a nested object of strings.\n * @returns A nested object structure where each path specification is replaced\n * with the corresponding numeric or string key.\n */\nexport function createIdRegistry<T extends Record<number | string, PathSpec>>(\n specs: T,\n): IdRegistryResult<T> {\n const result: Record<string, unknown> = {}\n\n function _assignPath(\n target: Record<string, unknown>,\n pathSpec: PathSpec,\n id: number | string,\n ): void {\n if (typeof pathSpec === \"string\") {\n target[pathSpec] = id\n } else {\n for (const [key, nested] of Object.entries(pathSpec)) {\n if (!(key in target)) target[key] = {}\n _assignPath(target[key] as Record<string, unknown>, nested, id)\n }\n }\n }\n\n for (const [idStr, pathSpec] of Object.entries(specs)) {\n const num = Number(idStr)\n const id: number | string = !isNaN(num) && idStr.trim() !== \"\" ? num : idStr\n _assignPath(result, pathSpec, id)\n }\n\n return result as IdRegistryResult<T>\n}\n"],"names":["_flattenValuesOfType","obj","typeGuard","v","flattenNumberValues","value","flattenStringValues","getNestedProperty","dotPath","i","withKeyPaths","delimiter","_withKeyPaths","path","key","_path","getKeyPaths","_getKeyPaths","keyPath","excludeKeyPaths","exclude","_excludeKeyPaths","entry","createPathStrings","_createPathStrings","createIdRegistry","specs","result","_assignPath","target","pathSpec","id","nested","idStr","num"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react-router");require("react/jsx-runtime");require("react");require("@mui/icons-material");require("@mui/material");require("../palette-BnIdHKDE.cjs");require("../auth-DdbHSDCh.cjs");function q(e,o={}){function c(r,g,t){typeof r.__=="object"&&(t=t?{...t,...r.__}:r.__);const _=typeof e=="string"&&t?l.generatePath(e,t):e;Object.entries(r).forEach(([u,i])=>{if(u!=="__")if(i=i,typeof i=="string"){if(typeof _=="string"&&(!g||u!=="_")){let n=_+i;n.endsWith("/")&&(n=n.slice(0,-1)),r[u]=n}}else c(i,!1,t)})}const f={...o,_:typeof e=="string"?e:"",__:e};return e===""?f._="/":c(f,!0),f}function s(e,o){return e.__[o]}exports.getParam=s;exports.path=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react-router");require("react/jsx-runtime");require("react");require("@mui/icons-material");require("@mui/material");require("../palette-BnIdHKDE.cjs");require("../auth-BLHTLvd6.cjs");function q(e,o={}){function c(r,g,t){typeof r.__=="object"&&(t=t?{...t,...r.__}:r.__);const _=typeof e=="string"&&t?l.generatePath(e,t):e;Object.entries(r).forEach(([u,i])=>{if(u!=="__")if(i=i,typeof i=="string"){if(typeof _=="string"&&(!g||u!=="_")){let n=_+i;n.endsWith("/")&&(n=n.slice(0,-1)),r[u]=n}}else c(i,!1,t)})}const f={...o,_:typeof e=="string"?e:"",__:e};return e===""?f._="/":c(f,!0),f}function s(e,o){return e.__[o]}exports.getParam=s;exports.path=q;
2
2
  //# sourceMappingURL=router.cjs.js.map
@@ -4,7 +4,7 @@ import "react";
4
4
  import "@mui/icons-material";
5
5
  import "@mui/material";
6
6
  import "../palette-CYwuLBW7.js";
7
- import "../auth-BXLedrZH.js";
7
+ import "../auth-gIOzqmde.js";
8
8
  function x(t, n = {}) {
9
9
  function c(i, l, e) {
10
10
  typeof i.__ == "object" && (e = e ? { ...e, ...i.__ } : i.__);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "codeforlife",
3
3
  "description": "Common frontend code",
4
4
  "private": false,
5
- "version": "2.15.0",
5
+ "version": "2.15.2",
6
6
  "type": "module",
7
7
  "types": "dist/index.d.ts",
8
8
  "module": "dist/index.es.js",
@@ -133,6 +133,16 @@
133
133
  "import": "./dist/utils/general.es.js",
134
134
  "require": "./dist/utils/general.cjs.js"
135
135
  },
136
+ "./utils/location": {
137
+ "types": "./dist/utils/location.d.ts",
138
+ "import": "./dist/utils/location.es.js",
139
+ "require": "./dist/utils/location.cjs.js"
140
+ },
141
+ "./utils/object": {
142
+ "types": "./dist/utils/object.d.ts",
143
+ "import": "./dist/utils/object.es.js",
144
+ "require": "./dist/utils/object.cjs.js"
145
+ },
136
146
  "./utils/router": {
137
147
  "types": "./dist/utils/router.d.ts",
138
148
  "import": "./dist/utils/router.es.js",
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("react/jsx-runtime"),m=require("@mui/material"),T=require("react"),ee=require("./api-CaEovEUU.cjs"),te=require("./api-DIgp_6Vr.cjs"),_=require("formik"),O=require("yup"),E=require("./utils/form.cjs.js"),y=require("./object-C0ukOmY8.cjs"),re=require("./dayjs.min-BDMWgl2D.cjs"),R=require("@mui/x-date-pickers"),oe=require("@mui/x-date-pickers/AdapterDayjs"),I=require("@mui/icons-material");require("@reduxjs/toolkit/query/react");require("@reduxjs/toolkit");require("./utils/cookies.cjs.js");const A=require("./schemas-B1L2Knka.cjs");require("./urls-DJiVb_ID.cjs");const M=({useLazyListQuery:r,filterOptions:t,getOptionLabel:n,getOptionKey:o=l=>l.id,searchKey:s,...i})=>{const[l,d]=T.useState(""),[a,{isLoading:u,isError:c}]=r(),[{limit:x,offset:p},g]=te.usePagination(),[{options:b,hasMore:f},S]=T.useState({options:{},hasMore:!0});T.useEffect(()=>{const j={limit:x,offset:p,...t};l&&(j[s]=l),a(j,!0).unwrap().then(({data:C,offset:q,limit:N,count:V})=>{S(({options:Z})=>{const L={...Z};return C.forEach(w=>{L[o(w)]=w}),{options:L,hasMore:q+N<V}})}).catch(C=>{C&&console.error(C)})},[a,x,p,s,l,...Object.values(t||{})]);let h=Object.keys(b);if(!h.length)return e.jsx(e.Fragment,{});typeof o(Object.values(b)[0])=="number"&&(h=h.map(Number));function F(){g(({page:j,limit:C})=>({page:j+1,limit:C}))}const P=({children:j,...C},q)=>{const N=T.Children.toArray(j);return u?N.push(e.jsx(m.CircularProgress,{},"is-loading")):(c&&N.push(e.jsx(ee.SyncError,{},"is-error")),f&&N.push(e.jsx(m.Button,{onClick:F,children:"Load more"},"load-more"))),e.jsx("ul",{...C,ref:q,onScroll:V=>{!u&&V.currentTarget.clientHeight+V.currentTarget.scrollTop>=V.currentTarget.scrollHeight&&F()},children:N})};return e.jsx(B,{options:h,getOptionLabel:j=>n(b[j]),onInputChange:(j,C,q)=>{d(q==="input"?C:"")},ListboxComponent:T.forwardRef(P),...i})},B=({textFieldProps:r,options:t,validateOptions:n,...o})=>{const{id:s,name:i,required:l,...d}=r,a=i.split("."),u="not a valid option";let c=typeof t[0]=="string"?O.string().oneOf(t,u):O.number().oneOf(t,u);l&&(c=c.required());const x={name:i,type:typeof t[0]=="string"?"text":"number",validate:E.schemaToFieldValidator(c,n)};return e.jsx(_.Field,{...x,children:({form:p,meta:g})=>{const b=y.getNestedProperty(p.values,a),f=y.getNestedProperty(p.touched,a),S=y.getNestedProperty(p.errors,a);return e.jsx(m.Autocomplete,{options:t,defaultValue:g.initialValue===""?void 0:g.initialValue,renderInput:({id:h,...F})=>e.jsx(m.TextField,{id:s??i,name:i,required:l,type:"text",value:b,error:f&&!!S,helperText:f&&S,...d,...F}),onChange:(h,F)=>{p.setFieldValue(i,F??void 0,!0)},onBlur:p.handleBlur,...o})}})},U=({id:r,name:t,formControlLabelProps:n,required:o=!1,errorMessage:s="this is a required field",validateOptions:i,...l})=>{const d=t.split(".");let a=O.bool();o&&(a=a.oneOf([!0],s));const u={name:t,type:"checkbox",validate:E.schemaToFieldValidator(a,i)};return e.jsx(_.Field,{...u,children:({form:c,meta:x})=>{const p=y.getNestedProperty(c.touched,d),g=y.getNestedProperty(c.errors,d),b=y.getNestedProperty(c.values,d),f=p&&!!g;return e.jsxs(m.FormControl,{error:f,required:o,children:[e.jsx(m.FormControlLabel,{control:e.jsx(m.Checkbox,{defaultChecked:x.initialValue,id:r??t,name:t,value:b,onChange:c.handleChange,onBlur:c.handleBlur,...l}),...n}),f&&e.jsx(m.FormHelperText,{children:g})]})}})},Y=({textFieldProps:r,...t})=>{const{name:n="country",label:o="Country",placeholder:s="Select your country",...i}=r||{};return e.jsx(B,{options:A.COUNTRY_ISO_CODES,getOptionLabel:l=>A.COUNTRY_ISO_CODE_MAPPING[l],textFieldProps:{name:n,label:o,placeholder:s,...i},...t})},D=({name:r,required:t,minDate:n,maxDate:o,validateOptions:s,...i})=>{const l=r.split(".");function d(c){return c.locale("en-gb").format("L")}let a=O.date();t&&(a=a.required()),n&&(a=a.min(n,`this field must be after or equal to ${d(n)}`)),o&&(a=a.max(o,`this field must be before or equal to ${d(o)}`));const u={name:r,type:"date",validate:E.schemaToFieldValidator(a,s)};return e.jsx(_.Field,{...u,children:({form:c})=>{const x=y.getNestedProperty(c.errors,l),p=y.getNestedProperty(c.touched,l);let g=y.getNestedProperty(c.values,l);g=g?re.dayjs(g):null;function b(f){c.setFieldValue(r,f&&f.isValid()?f.format("YYYY-MM-DD"):null,!0)}return e.jsx(R.LocalizationProvider,{dateAdapter:oe.AdapterDayjs,adapterLocale:"en-gb",children:e.jsx(R.DatePicker,{name:r,value:g,minDate:n,maxDate:o,onChange:b,slotProps:{textField:{id:r,onChange:f=>{b(f)},onBlur:c.handleBlur,required:t,error:p&&!!x,helperText:p&&x}},...i})})}})},v=({id:r,name:t,schema:n,type:o="text",required:s=!1,dirty:i=!1,unique:l=!1,uniqueCaseInsensitive:d=!1,split:a,validateOptions:u,...c})=>{const[x,p]=T.useState(""),g=t.split(".");function b(){let h=n;if(h=s?h.required():h.optional(),i&&!a&&(h=h.notOneOf([x],"cannot be initial value")),!a)return h;let F=O.array().of(h);return F=s?F.required().min(1):F.optional(),(l||d)&&(F=F.test({message:"cannot have duplicates",test:P=>Array.isArray(P)&&P.length>=2&&P.every(j=>typeof j=="string")?new Set(d?P.map(j=>j.toLowerCase()):P).size===P.length:!0})),i&&(F=F.notOneOf([x],"cannot be initial value")),F}const f={name:t,type:o,validate:E.schemaToFieldValidator(b(),u)},S=({form:h})=>{const F=y.getNestedProperty(h.initialValues,g),P=y.getNestedProperty(h.values,g),j=y.getNestedProperty(h.errors,g),C=y.getNestedProperty(h.touched,g);return T.useEffect(()=>{p(F)},[F]),T.useEffect(()=>{h.setFieldValue(t,a&&typeof P=="string"?P.split(a):P,!0)},[P]),e.jsx(m.TextField,{id:r??t,name:t,type:o,required:s,value:P,onChange:h.handleChange,onBlur:h.handleBlur,error:C&&!!j,helperText:C&&j,...c})};return e.jsx(_.Field,{...f,children:S})},H=({name:r="email",label:t="Email address",placeholder:n="Enter your email address",InputProps:o={},...s})=>e.jsx(v,{type:"email",schema:O.string().email(),name:r,label:t,placeholder:n,InputProps:{endAdornment:e.jsx(m.InputAdornment,{position:"end",children:e.jsx(I.EmailOutlined,{})}),...o},...s}),z=({name:r="first_name",label:t="First name",placeholder:n="Enter your first name",InputProps:o={},...s})=>e.jsx(v,{schema:A.user.first_name,name:r,label:t,placeholder:n,InputProps:{endAdornment:e.jsx(m.InputAdornment,{position:"end",children:e.jsx(I.PersonOutlined,{})}),...o},...s}),K={behavior:"smooth",block:"start"},ne=({scrollIntoViewOptions:r=K,...t})=>{const n=T.useRef(null);return T.useEffect(()=>{n.current&&n.current.scrollIntoView(r)},[r]),e.jsx(m.FormHelperText,{ref:n,error:!0,...t})},$=({children:r,scrollIntoViewOptions:t=K,nonFieldErrorsProps:n,fieldRefs:o=[],...s})=>e.jsx(_.Formik,{...s,children:i=>{const l=!!Object.keys(i.errors).length,d=l&&typeof i.errors.__all__=="string";if(l&&!d&&i.isSubmitting&&o.length){const a=y.getKeyPaths(i.errors),u=o.find(({name:c})=>a.includes(c))?.inputRef.current;u&&u.scrollIntoView(t)}return e.jsxs(e.Fragment,{children:[d&&e.jsx(ne,{...n,children:i.errors.__all__}),e.jsx(_.Form,{children:typeof r=="function"?r(i):r})]})}}),se=({useMutation:r,submitOptions:t,...n})=>{const[o]=r();return e.jsx($,{...n,onSubmit:E.submitForm(o,n.initialValues,t)})},G=r=>"onSubmit"in r?e.jsx($,{...r}):se(r),W=({name:r="otp",label:t="OTP",placeholder:n="Enter your OTP",...o})=>e.jsx(v,{name:r,label:t,schema:O.string().matches(/^[0-9]{6}$/,"Must be exactly 6 digits."),placeholder:n,required:!0,...o}),ie=({id:r,repeatName:t,setValue:n,fieldProps:o,name:s,label:i,placeholder:l,type:d,...a})=>{const{form:u}=o,c=s.split("."),x=y.getNestedProperty(u.values,c),p=t.split("."),g=y.getNestedProperty(u.values,p),b=y.getNestedProperty(u.touched,p),f=y.getNestedProperty(u.errors,p);return T.useEffect(()=>{n(x)},[n,x]),e.jsx(m.TextField,{required:!0,type:d,label:i??`Repeat ${s.replace("_"," ")}`,placeholder:l??`Enter your ${s.replace("_"," ")} again`,id:r??t,name:t,value:g,onChange:u.handleChange,onBlur:u.handleBlur,error:b&&!!f,helperText:b&&f,...a})},k=({name:r,type:t="text",validateOptions:n,...o})=>{const[s,i]=T.useState(""),l=`${r}_repeat`,d={name:l,type:t,validate:E.schemaToFieldValidator(O.string().required().equals([s],"does not match"),n)};return e.jsx(_.Field,{...d,children:a=>e.jsx(ie,{name:r,type:t,repeatName:l,setValue:i,fieldProps:a,...o})})},J=({name:r="password",label:t="Password",placeholder:n="Enter your password",schema:o=O.string(),InputProps:s={},withRepeatField:i=!1,repeatFieldProps:l={},...d})=>{const[a,u]=T.useState(!1),c=a?"text":"password",x=e.jsx(m.InputAdornment,{position:"end",children:e.jsx(m.IconButton,{onClick:()=>{u(p=>!p)},edge:"end",children:a?e.jsx(I.Visibility,{}):e.jsx(I.VisibilityOff,{})})});return e.jsxs(e.Fragment,{children:[e.jsx(v,{autoComplete:"off",type:c,name:r,label:t,schema:o,placeholder:n,InputProps:{endAdornment:x,...s},...d}),i&&e.jsx(k,{name:r,type:c,...l,InputProps:{endAdornment:x,...l.InputProps}})]})},Q=({children:r="Submit",...t})=>{function n(o,s){s=s||{};for(const i in o){const l=o[i];s[i]=l instanceof Object&&l.constructor===Object?n(l,s):!0}return s}return e.jsx(_.Field,{name:"submit",type:"submit",children:({form:o})=>e.jsx(m.Button,{type:"button",onClick:()=>{o.setTouched(n(o.values),!0).then(s=>{const i=!!(s&&Object.keys(s).length);o.setSubmitting(i),i||o.submitForm()})},...t,children:r})})},X=({textFieldProps:r,...t})=>{const{name:n="uk_county",label:o="UK county",placeholder:s="Select your UK county",...i}=r||{};return e.jsx(B,{options:A.UK_COUNTIES,textFieldProps:{name:n,label:o,placeholder:s,...i},...t})},le=Object.freeze(Object.defineProperty({__proto__:null,ApiAutocompleteField:M,AutocompleteField:B,CheckboxField:U,CountryField:Y,DatePickerField:D,EmailField:H,FirstNameField:z,Form:G,OtpField:W,PasswordField:J,RepeatField:k,SubmitButton:Q,TextField:v,UkCountyField:X},Symbol.toStringTag,{value:"Module"}));exports.ApiAutocompleteField=M;exports.AutocompleteField=B;exports.CheckboxField=U;exports.CountryField=Y;exports.DatePickerField=D;exports.EmailField=H;exports.FirstNameField=z;exports.Form=G;exports.OtpField=W;exports.PasswordField=J;exports.RepeatField=k;exports.SubmitButton=Q;exports.TextField=v;exports.UkCountyField=X;exports.index=le;
2
- //# sourceMappingURL=index-CgShi-oQ.cjs.map
@@ -1,2 +0,0 @@
1
- "use strict";function u(s,t){typeof t=="string"&&(t=t.split("."));let e=s;for(let n=0;n<t.length;n++)if(e=e[t[n]],n!==t.length-1&&(typeof e!="object"||e===null))return;return e}function l(s,t="."){function e(n,f){return Object.entries(n).map(([o,i])=>{const r=[...f,o],c=r.join(t);return typeof i=="object"&&i!==null?[c,...e(i,r)]:[c]}).flat()}return e(s,[])}function y(s,t,e="."){function n(f,o){return Object.fromEntries(Object.entries(f).map(([i,r])=>{const c=[...o,i];return typeof r=="object"&&r!==null&&!(r instanceof Date)&&(r=n(r,c)),t.includes(c.join(e))?[]:[i,r]}).filter(i=>i.length))}return t.length?n(s,[]):s}exports.excludeKeyPaths=y;exports.getKeyPaths=l;exports.getNestedProperty=u;
2
- //# sourceMappingURL=object-C0ukOmY8.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-C0ukOmY8.cjs","sources":["../src/utils/object.ts"],"sourcesContent":["export function getNestedProperty(\n obj: Record<string, any>,\n dotPath: string | string[],\n): any {\n if (typeof dotPath === \"string\") dotPath = dotPath.split(\".\")\n\n let value: unknown = obj\n for (let i = 0; i < dotPath.length; i++) {\n value = (value as Record<string, any>)[dotPath[i]]\n if (\n i !== dotPath.length - 1 &&\n (typeof value !== \"object\" || value === null)\n )\n return\n }\n\n return value\n}\n\nexport function withKeyPaths(obj: object, delimiter: string = \".\"): object {\n function _withKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _withKeyPaths(value as object, _path)\n\n return [_path.join(delimiter), value]\n }),\n )\n }\n\n return _withKeyPaths(obj, [])\n}\n\nexport function getKeyPaths(obj: object, delimiter: string = \".\"): string[] {\n function _getKeyPaths(obj: object, path: string[]): string[] {\n return Object.entries(obj)\n .map(([key, value]) => {\n const _path = [...path, key]\n const keyPath = _path.join(delimiter)\n\n return typeof value === \"object\" && value !== null\n ? [keyPath, ..._getKeyPaths(value as object, _path)]\n : [keyPath]\n })\n .flat()\n }\n\n return _getKeyPaths(obj, [])\n}\n\nexport function excludeKeyPaths(\n obj: object,\n exclude: string[],\n delimiter: string = \".\",\n): any {\n function _excludeKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]: [string, unknown]) => {\n const _path = [...path, key]\n\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Date)\n )\n value = _excludeKeyPaths(value, _path)\n\n return exclude.includes(_path.join(delimiter)) ? [] : [key, value]\n })\n .filter(entry => entry.length),\n ) as object\n }\n\n return exclude.length ? _excludeKeyPaths(obj, []) : obj\n}\n\ntype JoinPath<\n A extends string,\n B extends string,\n D extends string,\n> = A extends \"\" ? B : `${A}${D}${B}`\n\ntype PrefixedValues<\n T extends object,\n Path extends string = \"\",\n D extends string = \".\",\n> = {\n [K in keyof T & string]: T[K] extends object\n ? PrefixedValues<T[K], JoinPath<Path, K, D>, D>\n : `${JoinPath<Path, K, D>}${D}${T[K] & (string | number | bigint | boolean | null | undefined)}`\n}\n\nexport function prefixValuesWithKeyPath<const T extends object>(\n obj: T,\n): PrefixedValues<T>\nexport function prefixValuesWithKeyPath<\n const T extends object,\n D extends string,\n>(obj: T, delimiter: D): PrefixedValues<T, \"\", D>\nexport function prefixValuesWithKeyPath(\n obj: object,\n delimiter: string = \".\",\n): object {\n function _prefixValuesWithKeyPath(obj: object, path: string[]): object {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _prefixValuesWithKeyPath(value as object, _path)\n else value = `${_path.join(delimiter)}${delimiter}${value}`\n\n return [key, value]\n }),\n )\n }\n\n return _prefixValuesWithKeyPath(obj, [])\n}\n"],"names":["getNestedProperty","obj","dotPath","value","i","getKeyPaths","delimiter","_getKeyPaths","path","key","_path","keyPath","excludeKeyPaths","exclude","_excludeKeyPaths","entry"],"mappings":"aAAO,SAASA,EACdC,EACAC,EACK,CACD,OAAOA,GAAY,WAAUA,EAAUA,EAAQ,MAAM,GAAG,GAE5D,IAAIC,EAAiBF,EACrB,QAASG,EAAI,EAAGA,EAAIF,EAAQ,OAAQE,IAElC,GADAD,EAASA,EAA8BD,EAAQE,CAAC,CAAC,EAE/CA,IAAMF,EAAQ,OAAS,IACtB,OAAOC,GAAU,UAAYA,IAAU,MAExC,OAGJ,OAAOA,CACT,CAmBO,SAASE,EAAYJ,EAAaK,EAAoB,IAAe,CAC1E,SAASC,EAAaN,EAAaO,EAA0B,CAC3D,OAAO,OAAO,QAAQP,CAAG,EACtB,IAAI,CAAC,CAACQ,EAAKN,CAAK,IAAM,CACrB,MAAMO,EAAQ,CAAC,GAAGF,EAAMC,CAAG,EACrBE,EAAUD,EAAM,KAAKJ,CAAS,EAEpC,OAAO,OAAOH,GAAU,UAAYA,IAAU,KAC1C,CAACQ,EAAS,GAAGJ,EAAaJ,EAAiBO,CAAK,CAAC,EACjD,CAACC,CAAO,CACd,CAAC,EACA,KAAA,CACL,CAEA,OAAOJ,EAAaN,EAAK,EAAE,CAC7B,CAEO,SAASW,EACdX,EACAY,EACAP,EAAoB,IACf,CACL,SAASQ,EAAiBb,EAAaO,EAAgB,CACrD,OAAO,OAAO,YACZ,OAAO,QAAQP,CAAG,EACf,IAAI,CAAC,CAACQ,EAAKN,CAAK,IAAyB,CACxC,MAAMO,EAAQ,CAAC,GAAGF,EAAMC,CAAG,EAE3B,OACE,OAAON,GAAU,UACjBA,IAAU,MACV,EAAEA,aAAiB,QAEnBA,EAAQW,EAAiBX,EAAOO,CAAK,GAEhCG,EAAQ,SAASH,EAAM,KAAKJ,CAAS,CAAC,EAAI,CAAA,EAAK,CAACG,EAAKN,CAAK,CACnE,CAAC,EACA,OAAOY,GAASA,EAAM,MAAM,CAAA,CAEnC,CAEA,OAAOF,EAAQ,OAASC,EAAiBb,EAAK,CAAA,CAAE,EAAIA,CACtD"}
@@ -1,34 +0,0 @@
1
- function u(s, t) {
2
- typeof t == "string" && (t = t.split("."));
3
- let e = s;
4
- for (let n = 0; n < t.length; n++)
5
- if (e = e[t[n]], n !== t.length - 1 && (typeof e != "object" || e === null))
6
- return;
7
- return e;
8
- }
9
- function l(s, t = ".") {
10
- function e(n, f) {
11
- return Object.entries(n).map(([o, i]) => {
12
- const r = [...f, o], c = r.join(t);
13
- return typeof i == "object" && i !== null ? [c, ...e(i, r)] : [c];
14
- }).flat();
15
- }
16
- return e(s, []);
17
- }
18
- function p(s, t, e = ".") {
19
- function n(f, o) {
20
- return Object.fromEntries(
21
- Object.entries(f).map(([i, r]) => {
22
- const c = [...o, i];
23
- return typeof r == "object" && r !== null && !(r instanceof Date) && (r = n(r, c)), t.includes(c.join(e)) ? [] : [i, r];
24
- }).filter((i) => i.length)
25
- );
26
- }
27
- return t.length ? n(s, []) : s;
28
- }
29
- export {
30
- u as a,
31
- p as e,
32
- l as g
33
- };
34
- //# sourceMappingURL=object-CcXAH2vY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-CcXAH2vY.js","sources":["../src/utils/object.ts"],"sourcesContent":["export function getNestedProperty(\n obj: Record<string, any>,\n dotPath: string | string[],\n): any {\n if (typeof dotPath === \"string\") dotPath = dotPath.split(\".\")\n\n let value: unknown = obj\n for (let i = 0; i < dotPath.length; i++) {\n value = (value as Record<string, any>)[dotPath[i]]\n if (\n i !== dotPath.length - 1 &&\n (typeof value !== \"object\" || value === null)\n )\n return\n }\n\n return value\n}\n\nexport function withKeyPaths(obj: object, delimiter: string = \".\"): object {\n function _withKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _withKeyPaths(value as object, _path)\n\n return [_path.join(delimiter), value]\n }),\n )\n }\n\n return _withKeyPaths(obj, [])\n}\n\nexport function getKeyPaths(obj: object, delimiter: string = \".\"): string[] {\n function _getKeyPaths(obj: object, path: string[]): string[] {\n return Object.entries(obj)\n .map(([key, value]) => {\n const _path = [...path, key]\n const keyPath = _path.join(delimiter)\n\n return typeof value === \"object\" && value !== null\n ? [keyPath, ..._getKeyPaths(value as object, _path)]\n : [keyPath]\n })\n .flat()\n }\n\n return _getKeyPaths(obj, [])\n}\n\nexport function excludeKeyPaths(\n obj: object,\n exclude: string[],\n delimiter: string = \".\",\n): any {\n function _excludeKeyPaths(obj: object, path: string[]) {\n return Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]: [string, unknown]) => {\n const _path = [...path, key]\n\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Date)\n )\n value = _excludeKeyPaths(value, _path)\n\n return exclude.includes(_path.join(delimiter)) ? [] : [key, value]\n })\n .filter(entry => entry.length),\n ) as object\n }\n\n return exclude.length ? _excludeKeyPaths(obj, []) : obj\n}\n\ntype JoinPath<\n A extends string,\n B extends string,\n D extends string,\n> = A extends \"\" ? B : `${A}${D}${B}`\n\ntype PrefixedValues<\n T extends object,\n Path extends string = \"\",\n D extends string = \".\",\n> = {\n [K in keyof T & string]: T[K] extends object\n ? PrefixedValues<T[K], JoinPath<Path, K, D>, D>\n : `${JoinPath<Path, K, D>}${D}${T[K] & (string | number | bigint | boolean | null | undefined)}`\n}\n\nexport function prefixValuesWithKeyPath<const T extends object>(\n obj: T,\n): PrefixedValues<T>\nexport function prefixValuesWithKeyPath<\n const T extends object,\n D extends string,\n>(obj: T, delimiter: D): PrefixedValues<T, \"\", D>\nexport function prefixValuesWithKeyPath(\n obj: object,\n delimiter: string = \".\",\n): object {\n function _prefixValuesWithKeyPath(obj: object, path: string[]): object {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const _path = [...path, key]\n\n if (typeof value === \"object\" && value !== null)\n value = _prefixValuesWithKeyPath(value as object, _path)\n else value = `${_path.join(delimiter)}${delimiter}${value}`\n\n return [key, value]\n }),\n )\n }\n\n return _prefixValuesWithKeyPath(obj, [])\n}\n"],"names":["getNestedProperty","obj","dotPath","value","i","getKeyPaths","delimiter","_getKeyPaths","path","key","_path","keyPath","excludeKeyPaths","exclude","_excludeKeyPaths","entry"],"mappings":"AAAO,SAASA,EACdC,GACAC,GACK;AACL,EAAI,OAAOA,KAAY,aAAUA,IAAUA,EAAQ,MAAM,GAAG;AAE5D,MAAIC,IAAiBF;AACrB,WAASG,IAAI,GAAGA,IAAIF,EAAQ,QAAQE;AAElC,QADAD,IAASA,EAA8BD,EAAQE,CAAC,CAAC,GAE/CA,MAAMF,EAAQ,SAAS,MACtB,OAAOC,KAAU,YAAYA,MAAU;AAExC;AAGJ,SAAOA;AACT;AAmBO,SAASE,EAAYJ,GAAaK,IAAoB,KAAe;AAC1E,WAASC,EAAaN,GAAaO,GAA0B;AAC3D,WAAO,OAAO,QAAQP,CAAG,EACtB,IAAI,CAAC,CAACQ,GAAKN,CAAK,MAAM;AACrB,YAAMO,IAAQ,CAAC,GAAGF,GAAMC,CAAG,GACrBE,IAAUD,EAAM,KAAKJ,CAAS;AAEpC,aAAO,OAAOH,KAAU,YAAYA,MAAU,OAC1C,CAACQ,GAAS,GAAGJ,EAAaJ,GAAiBO,CAAK,CAAC,IACjD,CAACC,CAAO;AAAA,IACd,CAAC,EACA,KAAA;AAAA,EACL;AAEA,SAAOJ,EAAaN,GAAK,EAAE;AAC7B;AAEO,SAASW,EACdX,GACAY,GACAP,IAAoB,KACf;AACL,WAASQ,EAAiBb,GAAaO,GAAgB;AACrD,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQP,CAAG,EACf,IAAI,CAAC,CAACQ,GAAKN,CAAK,MAAyB;AACxC,cAAMO,IAAQ,CAAC,GAAGF,GAAMC,CAAG;AAE3B,eACE,OAAON,KAAU,YACjBA,MAAU,QACV,EAAEA,aAAiB,UAEnBA,IAAQW,EAAiBX,GAAOO,CAAK,IAEhCG,EAAQ,SAASH,EAAM,KAAKJ,CAAS,CAAC,IAAI,CAAA,IAAK,CAACG,GAAKN,CAAK;AAAA,MACnE,CAAC,EACA,OAAO,CAAAY,MAASA,EAAM,MAAM;AAAA,IAAA;AAAA,EAEnC;AAEA,SAAOF,EAAQ,SAASC,EAAiBb,GAAK,CAAA,CAAE,IAAIA;AACtD;"}
@@ -1,2 +0,0 @@
1
- "use strict";const A=require("yup"),n=require("./utils/schema.cjs.js");require("react/jsx-runtime");require("@mui/material");require("react");require("@mui/icons-material");function G(s){const u=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const o in s)if(o!=="default"){const c=Object.getOwnPropertyDescriptor(s,o);Object.defineProperty(u,o,c.get?c:{enumerable:!0,get:()=>s[o]})}}return u.default=s,Object.freeze(u)}const e=G(A),h=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"],I={AD:"Andorra",AE:"United Arab Emirates (the)",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Åland Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Barthélemy",BM:"Bermuda",BN:"Brunei Darussalam",BO:"Bolivia (Plurinational State of)",BQ:"Bonaire, Sint Eustatius and Saba",BR:"Brazil",BS:"Bahamas (the)",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos (Keeling) Islands (the)",CD:"Congo (the Democratic Republic of the)",CF:"Central African Republic (the)",CG:"Congo (the)",CH:"Switzerland",CI:"Côte d'Ivoire",CK:"Cook Islands (the)",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cabo Verde",CW:"Curaçao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czechia",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic (the",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands (the) [Malvinas]",FM:"Micronesia (Federated States of)",FO:"Faroe Islands (the)",FR:"France",GA:"Gabon",GB:"United Kingdom of Great Britain and Northern Ireland (the)",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia (the)",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory (the)",IQ:"Iraq",IR:"Iran (Islamic Republic of)",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros (the)",KN:"Saint Kitts and Nevis",KP:"Korea (the Democratic People's Republic of)",KR:"Korea (the Republic of)",KW:"Kuwait",KY:"Cayman Islands (the)",KZ:"Kazakhstan",LA:"Lao People's Democratic Republic (the)",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libya",MA:"Morocco",MC:"Monaco",MD:"Moldova (the Republic of)",ME:"Montenegro",MF:"Saint Martin (French part)",MG:"Madagascar",MH:"Marshall Islands (the)",MK:"Republic of North Macedonia",ML:"Mali",MM:"Myanmar",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands (the)",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger (the)",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands (the)",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines (the)",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn",PR:"Puerto Rico",PS:"Palestine, State of",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"Réunion",RO:"Romania",RS:"Serbia",RU:"Russian Federation (the)",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan (the)",SE:"Sweden",SG:"Singapore",SH:"Saint Helena, Ascension and Tristan da Cunha",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten (Dutch part)",SY:"Syrian Arab Republic",SZ:"Eswatini",TC:"Turks and Caicos Islands (the)",TD:"Chad",TF:"French Southern Territories (the)",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan (Province of China)",TZ:"Tanzania, United Republic of",UA:"Ukraine",UG:"Uganda",UM:"United States Minor Outlying Islands (the)",US:"United States of America (the)",UY:"Uruguay",UZ:"Uzbekistan",VA:"Holy See (the)",VC:"Saint Vincent and the Grenadines",VE:"Venezuela (Bolivarian Republic of)",VG:"Virgin Islands (British)",VI:"Virgin Islands (U.S.)",VN:"Viet Nam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe"},S=["Aberdeen City","Aberdeenshire","Angus","Argyll and Bute","Bedfordshire","Belfast","Belfast Greater","Berkshire","Blaenau Gwent","Bridgend","Buckinghamshire","Caerphilly","Cambridgeshire","Cardiff","Carmarthenshire","Ceredigion","Channel Islands","Cheshire","City of Edinburgh","Clackmannanshire","Conwy","Cornwall","County Antrim","County Armagh","County Down","County Fermanagh","County Londonderry","County Tyrone","County of Bristol","Cumbria","Denbighshire","Derbyshire","Devon","Dorset","Dumfries and Galloway","Dunbartonshire","Dundee City","Durham","East Ayrshire","East Dunbartonshire","East Lothian","East Renfrewshire","East Riding of Yorkshire","East Sussex","Essex","Falkirk","Fife","Flintshire","Glasgow City","Gloucestershire","Greater London","Greater Manchester","Guernsey Channel Islands","Gwynedd","Hampshire","Hereford and Worcester","Herefordshire","Hertfordshire","Highland","Inverclyde","Inverness","Isle of Anglesey","Isle of Barra","Isle of Man","Isle of Wight","Jersey Channel Islands","Kent","Lancashire","Leicestershire","Lincolnshire","Merseyside","Merthyr Tydfil","Midlothian","Monmouthshire","Moray","Neath Port Talbot","Newport","Norfolk","North Ayrshire","North Lanarkshire","North Yorkshire","Northamptonshire","Northumberland","Nottinghamshire","Orkney","Orkney Islands","Oxfordshire","Pembrokeshire","Perth and Kinross","Powys","Renfrewshire","Rhondda Cynon Taff","Rutland","Scottish Borders","Shetland Islands","Shropshire","Somerset","South Ayrshire","South Lanarkshire","South Yorkshire","Staffordshire","Stirling","Suffolk","Surrey","Swansea","Torfaen","Tyne and Wear","Vale of Glamorgan","Warwickshire","West Dunbart","West Lothian","West Midlands","West Sussex","West Yorkshire","Western Isles","Wiltshire","Worcestershire","Wrexham"],a={user:n.numericId(),teacher:n.numericId(),student:n.numericId(),school:n.numericId(),klass:n.uppercaseAsciiAlphanumericString().length(5),authFactor:n.numericId(),otpBypassToken:n.numericId()},i={id:a.teacher.required(),school:a.school,is_admin:e.bool().required()},m={id:a.student.required(),school:a.school.required(),klass:a.klass.required(),auto_gen_password:e.string().required()},r={id:a.user.required(),requesting_to_join_class:a.klass,first_name:n.unicodeAlphanumericString({spaces:!0,specialChars:"-'"}).required().max(150),last_name:n.unicodeAlphanumericString({spaces:!0,specialChars:"-'"}).max(150),last_login:e.date(),email:e.string().email(),password:e.string().required(),is_staff:e.bool().required(),is_active:e.bool().required(),date_joined:e.date().required(),teacher:e.object(i).optional(),student:e.object(m).optional()},l={...r,password:r.password.min(10,"must be at least 10 characters long").matches(/[A-Z]/,"must contain at least one uppercase letter").matches(/[a-z]/,"must contain at least one lowercase letter").matches(/[0-9]/,"must contain at least one digit").matches(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,"must contain at least one special character"),email:r.email.required(),last_name:r.last_name.required(),teacher:r.teacher.required(),student:e.string().oneOf([void 0])},t={...i,school:i.school.required()},d={...l,teacher:e.object(t)},M={...t,is_admin:t.is_admin.isTrue()},g={...d,teacher:e.object(M)},C={...t,is_admin:t.is_admin.isFalse()},B={...d,teacher:e.object(C)},T={...i,school:e.string().oneOf([void 0]),is_admin:i.is_admin.isFalse()},N={...l,teacher:e.object(T)},p={...r,password:r.password.min(6,"must be at least 6 characters long"),email:r.email.oneOf([void 0]),last_name:r.last_name.oneOf([void 0]),teacher:e.string().oneOf([void 0]),student:r.student.required()},b={...r,password:r.password.min(8,"must be at least 8 characters long").matches(/[A-Z]/,"must contain at least one uppercase letter").matches(/[a-z]/,"must contain at least one lowercase letter").matches(/[0-9]/,"must contain at least one digit"),email:r.email.required(),last_name:r.last_name.required(),teacher:e.string().oneOf([void 0]),student:e.string().oneOf([void 0])},y={...i,user:a.user.required()},f={...t,user:a.user.required()},E={...M,user:a.user.required()},P={...C,user:a.user.required()},R={...T,user:a.user.required()},L={...m,user:a.user.required()},O={id:a.school.required(),name:n.unicodeAlphanumericString({spaces:!0,specialChars:"'."}).required().max(200),country:e.string().oneOf(h),uk_county:e.string().oneOf(S)},_={id:a.klass.required(),teacher:a.teacher.required(),school:a.school.required(),name:n.unicodeAlphanumericString({spaces:!0,specialChars:"-_"}).required().max(200),read_classmates_data:e.bool().required(),receive_requests_until:e.date()},D={id:a.authFactor.required(),user:a.user.required(),type:e.string().oneOf(["otp"]).required()},K={id:a.otpBypassToken.required(),user:a.user.required(),token:n.lowercaseAsciiAlphanumericString().required().length(8)},U=Object.freeze(Object.defineProperty({__proto__:null,adminSchoolTeacher:E,adminSchoolTeacherUser:g,authFactor:D,indyUser:b,klass:_,nonAdminSchoolTeacher:P,nonAdminSchoolTeacherUser:B,nonSchoolTeacher:R,nonSchoolTeacherUser:N,otpBypassToken:K,school:O,schoolTeacher:f,schoolTeacherUser:d,student:L,studentUser:p,teacher:y,teacherUser:l,user:r},Symbol.toStringTag,{value:"Module"}));exports.COUNTRY_ISO_CODES=h;exports.COUNTRY_ISO_CODE_MAPPING=I;exports.UK_COUNTIES=S;exports.schemas=U;exports.user=r;
2
- //# sourceMappingURL=schemas-B1L2Knka.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas-B1L2Knka.cjs","sources":["../src/utils/location.ts","../src/api/schemas.ts"],"sourcesContent":["export const COUNTRY_ISO_CODES = [\n \"AD\",\n \"AE\",\n \"AF\",\n \"AG\",\n \"AI\",\n \"AL\",\n \"AM\",\n \"AO\",\n \"AQ\",\n \"AR\",\n \"AS\",\n \"AT\",\n \"AU\",\n \"AW\",\n \"AX\",\n \"AZ\",\n \"BA\",\n \"BB\",\n \"BD\",\n \"BE\",\n \"BF\",\n \"BG\",\n \"BH\",\n \"BI\",\n \"BJ\",\n \"BL\",\n \"BM\",\n \"BN\",\n \"BO\",\n \"BQ\",\n \"BR\",\n \"BS\",\n \"BT\",\n \"BV\",\n \"BW\",\n \"BY\",\n \"BZ\",\n \"CA\",\n \"CC\",\n \"CD\",\n \"CF\",\n \"CG\",\n \"CH\",\n \"CI\",\n \"CK\",\n \"CL\",\n \"CM\",\n \"CN\",\n \"CO\",\n \"CR\",\n \"CU\",\n \"CV\",\n \"CW\",\n \"CX\",\n \"CY\",\n \"CZ\",\n \"DE\",\n \"DJ\",\n \"DK\",\n \"DM\",\n \"DO\",\n \"DZ\",\n \"EC\",\n \"EE\",\n \"EG\",\n \"EH\",\n \"ER\",\n \"ES\",\n \"ET\",\n \"FI\",\n \"FJ\",\n \"FK\",\n \"FM\",\n \"FO\",\n \"FR\",\n \"GA\",\n \"GB\",\n \"GD\",\n \"GE\",\n \"GF\",\n \"GG\",\n \"GH\",\n \"GI\",\n \"GL\",\n \"GM\",\n \"GN\",\n \"GP\",\n \"GQ\",\n \"GR\",\n \"GS\",\n \"GT\",\n \"GU\",\n \"GW\",\n \"GY\",\n \"HK\",\n \"HM\",\n \"HN\",\n \"HR\",\n \"HT\",\n \"HU\",\n \"ID\",\n \"IE\",\n \"IL\",\n \"IM\",\n \"IN\",\n \"IO\",\n \"IQ\",\n \"IR\",\n \"IS\",\n \"IT\",\n \"JE\",\n \"JM\",\n \"JO\",\n \"JP\",\n \"KE\",\n \"KG\",\n \"KH\",\n \"KI\",\n \"KM\",\n \"KN\",\n \"KP\",\n \"KR\",\n \"KW\",\n \"KY\",\n \"KZ\",\n \"LA\",\n \"LB\",\n \"LC\",\n \"LI\",\n \"LK\",\n \"LR\",\n \"LS\",\n \"LT\",\n \"LU\",\n \"LV\",\n \"LY\",\n \"MA\",\n \"MC\",\n \"MD\",\n \"ME\",\n \"MF\",\n \"MG\",\n \"MH\",\n \"MK\",\n \"ML\",\n \"MM\",\n \"MN\",\n \"MO\",\n \"MP\",\n \"MQ\",\n \"MR\",\n \"MS\",\n \"MT\",\n \"MU\",\n \"MV\",\n \"MW\",\n \"MX\",\n \"MY\",\n \"MZ\",\n \"NA\",\n \"NC\",\n \"NE\",\n \"NF\",\n \"NG\",\n \"NI\",\n \"NL\",\n \"NO\",\n \"NP\",\n \"NR\",\n \"NU\",\n \"NZ\",\n \"OM\",\n \"PA\",\n \"PE\",\n \"PF\",\n \"PG\",\n \"PH\",\n \"PK\",\n \"PL\",\n \"PM\",\n \"PN\",\n \"PR\",\n \"PS\",\n \"PT\",\n \"PW\",\n \"PY\",\n \"QA\",\n \"RE\",\n \"RO\",\n \"RS\",\n \"RU\",\n \"RW\",\n \"SA\",\n \"SB\",\n \"SC\",\n \"SD\",\n \"SE\",\n \"SG\",\n \"SH\",\n \"SI\",\n \"SJ\",\n \"SK\",\n \"SL\",\n \"SM\",\n \"SN\",\n \"SO\",\n \"SR\",\n \"SS\",\n \"ST\",\n \"SV\",\n \"SX\",\n \"SY\",\n \"SZ\",\n \"TC\",\n \"TD\",\n \"TF\",\n \"TG\",\n \"TH\",\n \"TJ\",\n \"TK\",\n \"TL\",\n \"TM\",\n \"TN\",\n \"TO\",\n \"TR\",\n \"TT\",\n \"TV\",\n \"TW\",\n \"TZ\",\n \"UA\",\n \"UG\",\n \"UM\",\n \"US\",\n \"UY\",\n \"UZ\",\n \"VA\",\n \"VC\",\n \"VE\",\n \"VG\",\n \"VI\",\n \"VN\",\n \"VU\",\n \"WF\",\n \"WS\",\n \"YE\",\n \"YT\",\n \"ZA\",\n \"ZM\",\n \"ZW\",\n] as const\n\nexport type CountryIsoCodes = (typeof COUNTRY_ISO_CODES)[number]\n\nexport const COUNTRIES = [\n \"Andorra\",\n \"United Arab Emirates (the)\",\n \"Afghanistan\",\n \"Antigua and Barbuda\",\n \"Anguilla\",\n \"Albania\",\n \"Armenia\",\n \"Angola\",\n \"Antarctica\",\n \"Argentina\",\n \"American Samoa\",\n \"Austria\",\n \"Australia\",\n \"Aruba\",\n \"Åland Islands\",\n \"Azerbaijan\",\n \"Bosnia and Herzegovina\",\n \"Barbados\",\n \"Bangladesh\",\n \"Belgium\",\n \"Burkina Faso\",\n \"Bulgaria\",\n \"Bahrain\",\n \"Burundi\",\n \"Benin\",\n \"Saint Barthélemy\",\n \"Bermuda\",\n \"Brunei Darussalam\",\n \"Bolivia (Plurinational State of)\",\n \"Bonaire, Sint Eustatius and Saba\",\n \"Brazil\",\n \"Bahamas (the)\",\n \"Bhutan\",\n \"Bouvet Island\",\n \"Botswana\",\n \"Belarus\",\n \"Belize\",\n \"Canada\",\n \"Cocos (Keeling) Islands (the)\",\n \"Congo (the Democratic Republic of the)\",\n \"Central African Republic (the)\",\n \"Congo (the)\",\n \"Switzerland\",\n \"Côte d'Ivoire\",\n \"Cook Islands (the)\",\n \"Chile\",\n \"Cameroon\",\n \"China\",\n \"Colombia\",\n \"Costa Rica\",\n \"Cuba\",\n \"Cabo Verde\",\n \"Curaçao\",\n \"Christmas Island\",\n \"Cyprus\",\n \"Czechia\",\n \"Germany\",\n \"Djibouti\",\n \"Denmark\",\n \"Dominica\",\n \"Dominican Republic (the\",\n \"Algeria\",\n \"Ecuador\",\n \"Estonia\",\n \"Egypt\",\n \"Western Sahara\",\n \"Eritrea\",\n \"Spain\",\n \"Ethiopia\",\n \"Finland\",\n \"Fiji\",\n \"Falkland Islands (the) [Malvinas]\",\n \"Micronesia (Federated States of)\",\n \"Faroe Islands (the)\",\n \"France\",\n \"Gabon\",\n \"United Kingdom of Great Britain and Northern Ireland (the)\",\n \"Grenada\",\n \"Georgia\",\n \"French Guiana\",\n \"Guernsey\",\n \"Ghana\",\n \"Gibraltar\",\n \"Greenland\",\n \"Gambia (the)\",\n \"Guinea\",\n \"Guadeloupe\",\n \"Equatorial Guinea\",\n \"Greece\",\n \"South Georgia and the South Sandwich Islands\",\n \"Guatemala\",\n \"Guam\",\n \"Guinea-Bissau\",\n \"Guyana\",\n \"Hong Kong\",\n \"Heard Island and McDonald Islands\",\n \"Honduras\",\n \"Croatia\",\n \"Haiti\",\n \"Hungary\",\n \"Indonesia\",\n \"Ireland\",\n \"Israel\",\n \"Isle of Man\",\n \"India\",\n \"British Indian Ocean Territory (the)\",\n \"Iraq\",\n \"Iran (Islamic Republic of)\",\n \"Iceland\",\n \"Italy\",\n \"Jersey\",\n \"Jamaica\",\n \"Jordan\",\n \"Japan\",\n \"Kenya\",\n \"Kyrgyzstan\",\n \"Cambodia\",\n \"Kiribati\",\n \"Comoros (the)\",\n \"Saint Kitts and Nevis\",\n \"Korea (the Democratic People's Republic of)\",\n \"Korea (the Republic of)\",\n \"Kuwait\",\n \"Cayman Islands (the)\",\n \"Kazakhstan\",\n \"Lao People's Democratic Republic (the)\",\n \"Lebanon\",\n \"Saint Lucia\",\n \"Liechtenstein\",\n \"Sri Lanka\",\n \"Liberia\",\n \"Lesotho\",\n \"Lithuania\",\n \"Luxembourg\",\n \"Latvia\",\n \"Libya\",\n \"Morocco\",\n \"Monaco\",\n \"Moldova (the Republic of)\",\n \"Montenegro\",\n \"Saint Martin (French part)\",\n \"Madagascar\",\n \"Marshall Islands (the)\",\n \"Republic of North Macedonia\",\n \"Mali\",\n \"Myanmar\",\n \"Mongolia\",\n \"Macao\",\n \"Northern Mariana Islands (the)\",\n \"Martinique\",\n \"Mauritania\",\n \"Montserrat\",\n \"Malta\",\n \"Mauritius\",\n \"Maldives\",\n \"Malawi\",\n \"Mexico\",\n \"Malaysia\",\n \"Mozambique\",\n \"Namibia\",\n \"New Caledonia\",\n \"Niger (the)\",\n \"Norfolk Island\",\n \"Nigeria\",\n \"Nicaragua\",\n \"Netherlands (the)\",\n \"Norway\",\n \"Nepal\",\n \"Nauru\",\n \"Niue\",\n \"New Zealand\",\n \"Oman\",\n \"Panama\",\n \"Peru\",\n \"French Polynesia\",\n \"Papua New Guinea\",\n \"Philippines (the)\",\n \"Pakistan\",\n \"Poland\",\n \"Saint Pierre and Miquelon\",\n \"Pitcairn\",\n \"Puerto Rico\",\n \"Palestine, State of\",\n \"Portugal\",\n \"Palau\",\n \"Paraguay\",\n \"Qatar\",\n \"Réunion\",\n \"Romania\",\n \"Serbia\",\n \"Russian Federation (the)\",\n \"Rwanda\",\n \"Saudi Arabia\",\n \"Solomon Islands\",\n \"Seychelles\",\n \"Sudan (the)\",\n \"Sweden\",\n \"Singapore\",\n \"Saint Helena, Ascension and Tristan da Cunha\",\n \"Slovenia\",\n \"Svalbard and Jan Mayen\",\n \"Slovakia\",\n \"Sierra Leone\",\n \"San Marino\",\n \"Senegal\",\n \"Somalia\",\n \"Suriname\",\n \"South Sudan\",\n \"Sao Tome and Principe\",\n \"El Salvador\",\n \"Sint Maarten (Dutch part)\",\n \"Syrian Arab Republic\",\n \"Eswatini\",\n \"Turks and Caicos Islands (the)\",\n \"Chad\",\n \"French Southern Territories (the)\",\n \"Togo\",\n \"Thailand\",\n \"Tajikistan\",\n \"Tokelau\",\n \"Timor-Leste\",\n \"Turkmenistan\",\n \"Tunisia\",\n \"Tonga\",\n \"Turkey\",\n \"Trinidad and Tobago\",\n \"Tuvalu\",\n \"Taiwan (Province of China)\",\n \"Tanzania, United Republic of\",\n \"Ukraine\",\n \"Uganda\",\n \"United States Minor Outlying Islands (the)\",\n \"United States of America (the)\",\n \"Uruguay\",\n \"Uzbekistan\",\n \"Holy See (the)\",\n \"Saint Vincent and the Grenadines\",\n \"Venezuela (Bolivarian Republic of)\",\n \"Virgin Islands (British)\",\n \"Virgin Islands (U.S.)\",\n \"Viet Nam\",\n \"Vanuatu\",\n \"Wallis and Futuna\",\n \"Samoa\",\n \"Yemen\",\n \"Mayotte\",\n \"South Africa\",\n \"Zambia\",\n \"Zimbabwe\",\n] as const\n\nexport type Countries = (typeof COUNTRIES)[number]\n\nexport const COUNTRY_ISO_CODE_MAPPING: Record<CountryIsoCodes, Countries> = {\n AD: \"Andorra\",\n AE: \"United Arab Emirates (the)\",\n AF: \"Afghanistan\",\n AG: \"Antigua and Barbuda\",\n AI: \"Anguilla\",\n AL: \"Albania\",\n AM: \"Armenia\",\n AO: \"Angola\",\n AQ: \"Antarctica\",\n AR: \"Argentina\",\n AS: \"American Samoa\",\n AT: \"Austria\",\n AU: \"Australia\",\n AW: \"Aruba\",\n AX: \"Åland Islands\",\n AZ: \"Azerbaijan\",\n BA: \"Bosnia and Herzegovina\",\n BB: \"Barbados\",\n BD: \"Bangladesh\",\n BE: \"Belgium\",\n BF: \"Burkina Faso\",\n BG: \"Bulgaria\",\n BH: \"Bahrain\",\n BI: \"Burundi\",\n BJ: \"Benin\",\n BL: \"Saint Barthélemy\",\n BM: \"Bermuda\",\n BN: \"Brunei Darussalam\",\n BO: \"Bolivia (Plurinational State of)\",\n BQ: \"Bonaire, Sint Eustatius and Saba\",\n BR: \"Brazil\",\n BS: \"Bahamas (the)\",\n BT: \"Bhutan\",\n BV: \"Bouvet Island\",\n BW: \"Botswana\",\n BY: \"Belarus\",\n BZ: \"Belize\",\n CA: \"Canada\",\n CC: \"Cocos (Keeling) Islands (the)\",\n CD: \"Congo (the Democratic Republic of the)\",\n CF: \"Central African Republic (the)\",\n CG: \"Congo (the)\",\n CH: \"Switzerland\",\n CI: \"Côte d'Ivoire\",\n CK: \"Cook Islands (the)\",\n CL: \"Chile\",\n CM: \"Cameroon\",\n CN: \"China\",\n CO: \"Colombia\",\n CR: \"Costa Rica\",\n CU: \"Cuba\",\n CV: \"Cabo Verde\",\n CW: \"Curaçao\",\n CX: \"Christmas Island\",\n CY: \"Cyprus\",\n CZ: \"Czechia\",\n DE: \"Germany\",\n DJ: \"Djibouti\",\n DK: \"Denmark\",\n DM: \"Dominica\",\n DO: \"Dominican Republic (the\",\n DZ: \"Algeria\",\n EC: \"Ecuador\",\n EE: \"Estonia\",\n EG: \"Egypt\",\n EH: \"Western Sahara\",\n ER: \"Eritrea\",\n ES: \"Spain\",\n ET: \"Ethiopia\",\n FI: \"Finland\",\n FJ: \"Fiji\",\n FK: \"Falkland Islands (the) [Malvinas]\",\n FM: \"Micronesia (Federated States of)\",\n FO: \"Faroe Islands (the)\",\n FR: \"France\",\n GA: \"Gabon\",\n GB: \"United Kingdom of Great Britain and Northern Ireland (the)\",\n GD: \"Grenada\",\n GE: \"Georgia\",\n GF: \"French Guiana\",\n GG: \"Guernsey\",\n GH: \"Ghana\",\n GI: \"Gibraltar\",\n GL: \"Greenland\",\n GM: \"Gambia (the)\",\n GN: \"Guinea\",\n GP: \"Guadeloupe\",\n GQ: \"Equatorial Guinea\",\n GR: \"Greece\",\n GS: \"South Georgia and the South Sandwich Islands\",\n GT: \"Guatemala\",\n GU: \"Guam\",\n GW: \"Guinea-Bissau\",\n GY: \"Guyana\",\n HK: \"Hong Kong\",\n HM: \"Heard Island and McDonald Islands\",\n HN: \"Honduras\",\n HR: \"Croatia\",\n HT: \"Haiti\",\n HU: \"Hungary\",\n ID: \"Indonesia\",\n IE: \"Ireland\",\n IL: \"Israel\",\n IM: \"Isle of Man\",\n IN: \"India\",\n IO: \"British Indian Ocean Territory (the)\",\n IQ: \"Iraq\",\n IR: \"Iran (Islamic Republic of)\",\n IS: \"Iceland\",\n IT: \"Italy\",\n JE: \"Jersey\",\n JM: \"Jamaica\",\n JO: \"Jordan\",\n JP: \"Japan\",\n KE: \"Kenya\",\n KG: \"Kyrgyzstan\",\n KH: \"Cambodia\",\n KI: \"Kiribati\",\n KM: \"Comoros (the)\",\n KN: \"Saint Kitts and Nevis\",\n KP: \"Korea (the Democratic People's Republic of)\",\n KR: \"Korea (the Republic of)\",\n KW: \"Kuwait\",\n KY: \"Cayman Islands (the)\",\n KZ: \"Kazakhstan\",\n LA: \"Lao People's Democratic Republic (the)\",\n LB: \"Lebanon\",\n LC: \"Saint Lucia\",\n LI: \"Liechtenstein\",\n LK: \"Sri Lanka\",\n LR: \"Liberia\",\n LS: \"Lesotho\",\n LT: \"Lithuania\",\n LU: \"Luxembourg\",\n LV: \"Latvia\",\n LY: \"Libya\",\n MA: \"Morocco\",\n MC: \"Monaco\",\n MD: \"Moldova (the Republic of)\",\n ME: \"Montenegro\",\n MF: \"Saint Martin (French part)\",\n MG: \"Madagascar\",\n MH: \"Marshall Islands (the)\",\n MK: \"Republic of North Macedonia\",\n ML: \"Mali\",\n MM: \"Myanmar\",\n MN: \"Mongolia\",\n MO: \"Macao\",\n MP: \"Northern Mariana Islands (the)\",\n MQ: \"Martinique\",\n MR: \"Mauritania\",\n MS: \"Montserrat\",\n MT: \"Malta\",\n MU: \"Mauritius\",\n MV: \"Maldives\",\n MW: \"Malawi\",\n MX: \"Mexico\",\n MY: \"Malaysia\",\n MZ: \"Mozambique\",\n NA: \"Namibia\",\n NC: \"New Caledonia\",\n NE: \"Niger (the)\",\n NF: \"Norfolk Island\",\n NG: \"Nigeria\",\n NI: \"Nicaragua\",\n NL: \"Netherlands (the)\",\n NO: \"Norway\",\n NP: \"Nepal\",\n NR: \"Nauru\",\n NU: \"Niue\",\n NZ: \"New Zealand\",\n OM: \"Oman\",\n PA: \"Panama\",\n PE: \"Peru\",\n PF: \"French Polynesia\",\n PG: \"Papua New Guinea\",\n PH: \"Philippines (the)\",\n PK: \"Pakistan\",\n PL: \"Poland\",\n PM: \"Saint Pierre and Miquelon\",\n PN: \"Pitcairn\",\n PR: \"Puerto Rico\",\n PS: \"Palestine, State of\",\n PT: \"Portugal\",\n PW: \"Palau\",\n PY: \"Paraguay\",\n QA: \"Qatar\",\n RE: \"Réunion\",\n RO: \"Romania\",\n RS: \"Serbia\",\n RU: \"Russian Federation (the)\",\n RW: \"Rwanda\",\n SA: \"Saudi Arabia\",\n SB: \"Solomon Islands\",\n SC: \"Seychelles\",\n SD: \"Sudan (the)\",\n SE: \"Sweden\",\n SG: \"Singapore\",\n SH: \"Saint Helena, Ascension and Tristan da Cunha\",\n SI: \"Slovenia\",\n SJ: \"Svalbard and Jan Mayen\",\n SK: \"Slovakia\",\n SL: \"Sierra Leone\",\n SM: \"San Marino\",\n SN: \"Senegal\",\n SO: \"Somalia\",\n SR: \"Suriname\",\n SS: \"South Sudan\",\n ST: \"Sao Tome and Principe\",\n SV: \"El Salvador\",\n SX: \"Sint Maarten (Dutch part)\",\n SY: \"Syrian Arab Republic\",\n SZ: \"Eswatini\",\n TC: \"Turks and Caicos Islands (the)\",\n TD: \"Chad\",\n TF: \"French Southern Territories (the)\",\n TG: \"Togo\",\n TH: \"Thailand\",\n TJ: \"Tajikistan\",\n TK: \"Tokelau\",\n TL: \"Timor-Leste\",\n TM: \"Turkmenistan\",\n TN: \"Tunisia\",\n TO: \"Tonga\",\n TR: \"Turkey\",\n TT: \"Trinidad and Tobago\",\n TV: \"Tuvalu\",\n TW: \"Taiwan (Province of China)\",\n TZ: \"Tanzania, United Republic of\",\n UA: \"Ukraine\",\n UG: \"Uganda\",\n UM: \"United States Minor Outlying Islands (the)\",\n US: \"United States of America (the)\",\n UY: \"Uruguay\",\n UZ: \"Uzbekistan\",\n VA: \"Holy See (the)\",\n VC: \"Saint Vincent and the Grenadines\",\n VE: \"Venezuela (Bolivarian Republic of)\",\n VG: \"Virgin Islands (British)\",\n VI: \"Virgin Islands (U.S.)\",\n VN: \"Viet Nam\",\n VU: \"Vanuatu\",\n WF: \"Wallis and Futuna\",\n WS: \"Samoa\",\n YE: \"Yemen\",\n YT: \"Mayotte\",\n ZA: \"South Africa\",\n ZM: \"Zambia\",\n ZW: \"Zimbabwe\",\n}\n\nexport const UK_COUNTIES = [\n \"Aberdeen City\",\n \"Aberdeenshire\",\n \"Angus\",\n \"Argyll and Bute\",\n \"Bedfordshire\",\n \"Belfast\",\n \"Belfast Greater\",\n \"Berkshire\",\n \"Blaenau Gwent\",\n \"Bridgend\",\n \"Buckinghamshire\",\n \"Caerphilly\",\n \"Cambridgeshire\",\n \"Cardiff\",\n \"Carmarthenshire\",\n \"Ceredigion\",\n \"Channel Islands\",\n \"Cheshire\",\n \"City of Edinburgh\",\n \"Clackmannanshire\",\n \"Conwy\",\n \"Cornwall\",\n \"County Antrim\",\n \"County Armagh\",\n \"County Down\",\n \"County Fermanagh\",\n \"County Londonderry\",\n \"County Tyrone\",\n \"County of Bristol\",\n \"Cumbria\",\n \"Denbighshire\",\n \"Derbyshire\",\n \"Devon\",\n \"Dorset\",\n \"Dumfries and Galloway\",\n \"Dunbartonshire\",\n \"Dundee City\",\n \"Durham\",\n \"East Ayrshire\",\n \"East Dunbartonshire\",\n \"East Lothian\",\n \"East Renfrewshire\",\n \"East Riding of Yorkshire\",\n \"East Sussex\",\n \"Essex\",\n \"Falkirk\",\n \"Fife\",\n \"Flintshire\",\n \"Glasgow City\",\n \"Gloucestershire\",\n \"Greater London\",\n \"Greater Manchester\",\n \"Guernsey Channel Islands\",\n \"Gwynedd\",\n \"Hampshire\",\n \"Hereford and Worcester\",\n \"Herefordshire\",\n \"Hertfordshire\",\n \"Highland\",\n \"Inverclyde\",\n \"Inverness\",\n \"Isle of Anglesey\",\n \"Isle of Barra\",\n \"Isle of Man\",\n \"Isle of Wight\",\n \"Jersey Channel Islands\",\n \"Kent\",\n \"Lancashire\",\n \"Leicestershire\",\n \"Lincolnshire\",\n \"Merseyside\",\n \"Merthyr Tydfil\",\n \"Midlothian\",\n \"Monmouthshire\",\n \"Moray\",\n \"Neath Port Talbot\",\n \"Newport\",\n \"Norfolk\",\n \"North Ayrshire\",\n \"North Lanarkshire\",\n \"North Yorkshire\",\n \"Northamptonshire\",\n \"Northumberland\",\n \"Nottinghamshire\",\n \"Orkney\",\n \"Orkney Islands\",\n \"Oxfordshire\",\n \"Pembrokeshire\",\n \"Perth and Kinross\",\n \"Powys\",\n \"Renfrewshire\",\n \"Rhondda Cynon Taff\",\n \"Rutland\",\n \"Scottish Borders\",\n \"Shetland Islands\",\n \"Shropshire\",\n \"Somerset\",\n \"South Ayrshire\",\n \"South Lanarkshire\",\n \"South Yorkshire\",\n \"Staffordshire\",\n \"Stirling\",\n \"Suffolk\",\n \"Surrey\",\n \"Swansea\",\n \"Torfaen\",\n \"Tyne and Wear\",\n \"Vale of Glamorgan\",\n \"Warwickshire\",\n \"West Dunbart\",\n \"West Lothian\",\n \"West Midlands\",\n \"West Sussex\",\n \"West Yorkshire\",\n \"Western Isles\",\n \"Wiltshire\",\n \"Worcestershire\",\n \"Wrexham\",\n] as const\n\nexport type UkCounties = (typeof UK_COUNTIES)[number]\n","import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/location\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["COUNTRY_ISO_CODES","COUNTRY_ISO_CODE_MAPPING","UK_COUNTIES","id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":"ucAAaA,EAAoB,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,K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CJ,GAAI,SACJ,GAAI,6BACJ,GAAI,+BACJ,GAAI,UACJ,GAAI,SACJ,GAAI,6CACJ,GAAI,iCACJ,GAAI,UACJ,GAAI,aACJ,GAAI,iBACJ,GAAI,mCACJ,GAAI,qCACJ,GAAI,2BACJ,GAAI,wBACJ,GAAI,WACJ,GAAI,UACJ,GAAI,oBACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,eACJ,GAAI,SACJ,GAAI,UACN,EAEaC,EAAc,CACzB,gBACA,gBACA,QACA,kBACA,eACA,UACA,kBACA,YACA,gBACA,WACA,kBACA,aACA,iBACA,UACA,kBACA,aACA,kBACA,WACA,oBACA,mBACA,QACA,WACA,gBACA,gBACA,cACA,mBACA,qBACA,gBACA,oBACA,UACA,eACA,aACA,QACA,SACA,wBACA,iBACA,cACA,SACA,gBACA,sBACA,eACA,oBACA,2BACA,cACA,QACA,UACA,OACA,aACA,eACA,kBACA,iBACA,qBACA,2BACA,UACA,YACA,yBACA,gBACA,gBACA,WACA,aACA,YACA,mBACA,gBACA,cACA,gBACA,yBACA,OACA,aACA,iBACA,eACA,aACA,iBACA,aACA,gBACA,QACA,oBACA,UACA,UACA,iBACA,oBACA,kBACA,mBACA,iBACA,kBACA,SACA,iBACA,cACA,gBACA,oBACA,QACA,eACA,qBACA,UACA,mBACA,mBACA,aACA,WACA,iBACA,oBACA,kBACA,gBACA,WACA,UACA,SACA,UACA,UACA,gBACA,oBACA,eACA,eACA,eACA,gBACA,cACA,iBACA,gBACA,YACA,iBACA,SACF,EC/0BMC,EAAK,CACT,KAAMC,EAAAA,UAAA,EACN,QAASA,EAAAA,UAAA,EACT,QAASA,EAAAA,UAAA,EACT,OAAQA,EAAAA,UAAA,EACR,MAAOC,EAAAA,iCAAA,EAAmC,OAAO,CAAC,EAClD,WAAYD,EAAAA,UAAA,EACZ,eAAgBA,EAAAA,UAAA,CAClB,EAMME,EAA+C,CACnD,GAAIH,EAAG,QAAQ,SAAA,EACf,OAAQA,EAAG,OACX,SAAUI,EAAI,KAAA,EAAO,SAAA,CACvB,EAEMC,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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas-BEK79Cdh.js","sources":["../src/utils/location.ts","../src/api/schemas.ts"],"sourcesContent":["export const COUNTRY_ISO_CODES = [\n \"AD\",\n \"AE\",\n \"AF\",\n \"AG\",\n \"AI\",\n \"AL\",\n \"AM\",\n \"AO\",\n \"AQ\",\n \"AR\",\n \"AS\",\n \"AT\",\n \"AU\",\n \"AW\",\n \"AX\",\n \"AZ\",\n \"BA\",\n \"BB\",\n \"BD\",\n \"BE\",\n \"BF\",\n \"BG\",\n \"BH\",\n \"BI\",\n \"BJ\",\n \"BL\",\n \"BM\",\n \"BN\",\n \"BO\",\n \"BQ\",\n \"BR\",\n \"BS\",\n \"BT\",\n \"BV\",\n \"BW\",\n \"BY\",\n \"BZ\",\n \"CA\",\n \"CC\",\n \"CD\",\n \"CF\",\n \"CG\",\n \"CH\",\n \"CI\",\n \"CK\",\n \"CL\",\n \"CM\",\n \"CN\",\n \"CO\",\n \"CR\",\n \"CU\",\n \"CV\",\n \"CW\",\n \"CX\",\n \"CY\",\n \"CZ\",\n \"DE\",\n \"DJ\",\n \"DK\",\n \"DM\",\n \"DO\",\n \"DZ\",\n \"EC\",\n \"EE\",\n \"EG\",\n \"EH\",\n \"ER\",\n \"ES\",\n \"ET\",\n \"FI\",\n \"FJ\",\n \"FK\",\n \"FM\",\n \"FO\",\n \"FR\",\n \"GA\",\n \"GB\",\n \"GD\",\n \"GE\",\n \"GF\",\n \"GG\",\n \"GH\",\n \"GI\",\n \"GL\",\n \"GM\",\n \"GN\",\n \"GP\",\n \"GQ\",\n \"GR\",\n \"GS\",\n \"GT\",\n \"GU\",\n \"GW\",\n \"GY\",\n \"HK\",\n \"HM\",\n \"HN\",\n \"HR\",\n \"HT\",\n \"HU\",\n \"ID\",\n \"IE\",\n \"IL\",\n \"IM\",\n \"IN\",\n \"IO\",\n \"IQ\",\n \"IR\",\n \"IS\",\n \"IT\",\n \"JE\",\n \"JM\",\n \"JO\",\n \"JP\",\n \"KE\",\n \"KG\",\n \"KH\",\n \"KI\",\n \"KM\",\n \"KN\",\n \"KP\",\n \"KR\",\n \"KW\",\n \"KY\",\n \"KZ\",\n \"LA\",\n \"LB\",\n \"LC\",\n \"LI\",\n \"LK\",\n \"LR\",\n \"LS\",\n \"LT\",\n \"LU\",\n \"LV\",\n \"LY\",\n \"MA\",\n \"MC\",\n \"MD\",\n \"ME\",\n \"MF\",\n \"MG\",\n \"MH\",\n \"MK\",\n \"ML\",\n \"MM\",\n \"MN\",\n \"MO\",\n \"MP\",\n \"MQ\",\n \"MR\",\n \"MS\",\n \"MT\",\n \"MU\",\n \"MV\",\n \"MW\",\n \"MX\",\n \"MY\",\n \"MZ\",\n \"NA\",\n \"NC\",\n \"NE\",\n \"NF\",\n \"NG\",\n \"NI\",\n \"NL\",\n \"NO\",\n \"NP\",\n \"NR\",\n \"NU\",\n \"NZ\",\n \"OM\",\n \"PA\",\n \"PE\",\n \"PF\",\n \"PG\",\n \"PH\",\n \"PK\",\n \"PL\",\n \"PM\",\n \"PN\",\n \"PR\",\n \"PS\",\n \"PT\",\n \"PW\",\n \"PY\",\n \"QA\",\n \"RE\",\n \"RO\",\n \"RS\",\n \"RU\",\n \"RW\",\n \"SA\",\n \"SB\",\n \"SC\",\n \"SD\",\n \"SE\",\n \"SG\",\n \"SH\",\n \"SI\",\n \"SJ\",\n \"SK\",\n \"SL\",\n \"SM\",\n \"SN\",\n \"SO\",\n \"SR\",\n \"SS\",\n \"ST\",\n \"SV\",\n \"SX\",\n \"SY\",\n \"SZ\",\n \"TC\",\n \"TD\",\n \"TF\",\n \"TG\",\n \"TH\",\n \"TJ\",\n \"TK\",\n \"TL\",\n \"TM\",\n \"TN\",\n \"TO\",\n \"TR\",\n \"TT\",\n \"TV\",\n \"TW\",\n \"TZ\",\n \"UA\",\n \"UG\",\n \"UM\",\n \"US\",\n \"UY\",\n \"UZ\",\n \"VA\",\n \"VC\",\n \"VE\",\n \"VG\",\n \"VI\",\n \"VN\",\n \"VU\",\n \"WF\",\n \"WS\",\n \"YE\",\n \"YT\",\n \"ZA\",\n \"ZM\",\n \"ZW\",\n] as const\n\nexport type CountryIsoCodes = (typeof COUNTRY_ISO_CODES)[number]\n\nexport const COUNTRIES = [\n \"Andorra\",\n \"United Arab Emirates (the)\",\n \"Afghanistan\",\n \"Antigua and Barbuda\",\n \"Anguilla\",\n \"Albania\",\n \"Armenia\",\n \"Angola\",\n \"Antarctica\",\n \"Argentina\",\n \"American Samoa\",\n \"Austria\",\n \"Australia\",\n \"Aruba\",\n \"Åland Islands\",\n \"Azerbaijan\",\n \"Bosnia and Herzegovina\",\n \"Barbados\",\n \"Bangladesh\",\n \"Belgium\",\n \"Burkina Faso\",\n \"Bulgaria\",\n \"Bahrain\",\n \"Burundi\",\n \"Benin\",\n \"Saint Barthélemy\",\n \"Bermuda\",\n \"Brunei Darussalam\",\n \"Bolivia (Plurinational State of)\",\n \"Bonaire, Sint Eustatius and Saba\",\n \"Brazil\",\n \"Bahamas (the)\",\n \"Bhutan\",\n \"Bouvet Island\",\n \"Botswana\",\n \"Belarus\",\n \"Belize\",\n \"Canada\",\n \"Cocos (Keeling) Islands (the)\",\n \"Congo (the Democratic Republic of the)\",\n \"Central African Republic (the)\",\n \"Congo (the)\",\n \"Switzerland\",\n \"Côte d'Ivoire\",\n \"Cook Islands (the)\",\n \"Chile\",\n \"Cameroon\",\n \"China\",\n \"Colombia\",\n \"Costa Rica\",\n \"Cuba\",\n \"Cabo Verde\",\n \"Curaçao\",\n \"Christmas Island\",\n \"Cyprus\",\n \"Czechia\",\n \"Germany\",\n \"Djibouti\",\n \"Denmark\",\n \"Dominica\",\n \"Dominican Republic (the\",\n \"Algeria\",\n \"Ecuador\",\n \"Estonia\",\n \"Egypt\",\n \"Western Sahara\",\n \"Eritrea\",\n \"Spain\",\n \"Ethiopia\",\n \"Finland\",\n \"Fiji\",\n \"Falkland Islands (the) [Malvinas]\",\n \"Micronesia (Federated States of)\",\n \"Faroe Islands (the)\",\n \"France\",\n \"Gabon\",\n \"United Kingdom of Great Britain and Northern Ireland (the)\",\n \"Grenada\",\n \"Georgia\",\n \"French Guiana\",\n \"Guernsey\",\n \"Ghana\",\n \"Gibraltar\",\n \"Greenland\",\n \"Gambia (the)\",\n \"Guinea\",\n \"Guadeloupe\",\n \"Equatorial Guinea\",\n \"Greece\",\n \"South Georgia and the South Sandwich Islands\",\n \"Guatemala\",\n \"Guam\",\n \"Guinea-Bissau\",\n \"Guyana\",\n \"Hong Kong\",\n \"Heard Island and McDonald Islands\",\n \"Honduras\",\n \"Croatia\",\n \"Haiti\",\n \"Hungary\",\n \"Indonesia\",\n \"Ireland\",\n \"Israel\",\n \"Isle of Man\",\n \"India\",\n \"British Indian Ocean Territory (the)\",\n \"Iraq\",\n \"Iran (Islamic Republic of)\",\n \"Iceland\",\n \"Italy\",\n \"Jersey\",\n \"Jamaica\",\n \"Jordan\",\n \"Japan\",\n \"Kenya\",\n \"Kyrgyzstan\",\n \"Cambodia\",\n \"Kiribati\",\n \"Comoros (the)\",\n \"Saint Kitts and Nevis\",\n \"Korea (the Democratic People's Republic of)\",\n \"Korea (the Republic of)\",\n \"Kuwait\",\n \"Cayman Islands (the)\",\n \"Kazakhstan\",\n \"Lao People's Democratic Republic (the)\",\n \"Lebanon\",\n \"Saint Lucia\",\n \"Liechtenstein\",\n \"Sri Lanka\",\n \"Liberia\",\n \"Lesotho\",\n \"Lithuania\",\n \"Luxembourg\",\n \"Latvia\",\n \"Libya\",\n \"Morocco\",\n \"Monaco\",\n \"Moldova (the Republic of)\",\n \"Montenegro\",\n \"Saint Martin (French part)\",\n \"Madagascar\",\n \"Marshall Islands (the)\",\n \"Republic of North Macedonia\",\n \"Mali\",\n \"Myanmar\",\n \"Mongolia\",\n \"Macao\",\n \"Northern Mariana Islands (the)\",\n \"Martinique\",\n \"Mauritania\",\n \"Montserrat\",\n \"Malta\",\n \"Mauritius\",\n \"Maldives\",\n \"Malawi\",\n \"Mexico\",\n \"Malaysia\",\n \"Mozambique\",\n \"Namibia\",\n \"New Caledonia\",\n \"Niger (the)\",\n \"Norfolk Island\",\n \"Nigeria\",\n \"Nicaragua\",\n \"Netherlands (the)\",\n \"Norway\",\n \"Nepal\",\n \"Nauru\",\n \"Niue\",\n \"New Zealand\",\n \"Oman\",\n \"Panama\",\n \"Peru\",\n \"French Polynesia\",\n \"Papua New Guinea\",\n \"Philippines (the)\",\n \"Pakistan\",\n \"Poland\",\n \"Saint Pierre and Miquelon\",\n \"Pitcairn\",\n \"Puerto Rico\",\n \"Palestine, State of\",\n \"Portugal\",\n \"Palau\",\n \"Paraguay\",\n \"Qatar\",\n \"Réunion\",\n \"Romania\",\n \"Serbia\",\n \"Russian Federation (the)\",\n \"Rwanda\",\n \"Saudi Arabia\",\n \"Solomon Islands\",\n \"Seychelles\",\n \"Sudan (the)\",\n \"Sweden\",\n \"Singapore\",\n \"Saint Helena, Ascension and Tristan da Cunha\",\n \"Slovenia\",\n \"Svalbard and Jan Mayen\",\n \"Slovakia\",\n \"Sierra Leone\",\n \"San Marino\",\n \"Senegal\",\n \"Somalia\",\n \"Suriname\",\n \"South Sudan\",\n \"Sao Tome and Principe\",\n \"El Salvador\",\n \"Sint Maarten (Dutch part)\",\n \"Syrian Arab Republic\",\n \"Eswatini\",\n \"Turks and Caicos Islands (the)\",\n \"Chad\",\n \"French Southern Territories (the)\",\n \"Togo\",\n \"Thailand\",\n \"Tajikistan\",\n \"Tokelau\",\n \"Timor-Leste\",\n \"Turkmenistan\",\n \"Tunisia\",\n \"Tonga\",\n \"Turkey\",\n \"Trinidad and Tobago\",\n \"Tuvalu\",\n \"Taiwan (Province of China)\",\n \"Tanzania, United Republic of\",\n \"Ukraine\",\n \"Uganda\",\n \"United States Minor Outlying Islands (the)\",\n \"United States of America (the)\",\n \"Uruguay\",\n \"Uzbekistan\",\n \"Holy See (the)\",\n \"Saint Vincent and the Grenadines\",\n \"Venezuela (Bolivarian Republic of)\",\n \"Virgin Islands (British)\",\n \"Virgin Islands (U.S.)\",\n \"Viet Nam\",\n \"Vanuatu\",\n \"Wallis and Futuna\",\n \"Samoa\",\n \"Yemen\",\n \"Mayotte\",\n \"South Africa\",\n \"Zambia\",\n \"Zimbabwe\",\n] as const\n\nexport type Countries = (typeof COUNTRIES)[number]\n\nexport const COUNTRY_ISO_CODE_MAPPING: Record<CountryIsoCodes, Countries> = {\n AD: \"Andorra\",\n AE: \"United Arab Emirates (the)\",\n AF: \"Afghanistan\",\n AG: \"Antigua and Barbuda\",\n AI: \"Anguilla\",\n AL: \"Albania\",\n AM: \"Armenia\",\n AO: \"Angola\",\n AQ: \"Antarctica\",\n AR: \"Argentina\",\n AS: \"American Samoa\",\n AT: \"Austria\",\n AU: \"Australia\",\n AW: \"Aruba\",\n AX: \"Åland Islands\",\n AZ: \"Azerbaijan\",\n BA: \"Bosnia and Herzegovina\",\n BB: \"Barbados\",\n BD: \"Bangladesh\",\n BE: \"Belgium\",\n BF: \"Burkina Faso\",\n BG: \"Bulgaria\",\n BH: \"Bahrain\",\n BI: \"Burundi\",\n BJ: \"Benin\",\n BL: \"Saint Barthélemy\",\n BM: \"Bermuda\",\n BN: \"Brunei Darussalam\",\n BO: \"Bolivia (Plurinational State of)\",\n BQ: \"Bonaire, Sint Eustatius and Saba\",\n BR: \"Brazil\",\n BS: \"Bahamas (the)\",\n BT: \"Bhutan\",\n BV: \"Bouvet Island\",\n BW: \"Botswana\",\n BY: \"Belarus\",\n BZ: \"Belize\",\n CA: \"Canada\",\n CC: \"Cocos (Keeling) Islands (the)\",\n CD: \"Congo (the Democratic Republic of the)\",\n CF: \"Central African Republic (the)\",\n CG: \"Congo (the)\",\n CH: \"Switzerland\",\n CI: \"Côte d'Ivoire\",\n CK: \"Cook Islands (the)\",\n CL: \"Chile\",\n CM: \"Cameroon\",\n CN: \"China\",\n CO: \"Colombia\",\n CR: \"Costa Rica\",\n CU: \"Cuba\",\n CV: \"Cabo Verde\",\n CW: \"Curaçao\",\n CX: \"Christmas Island\",\n CY: \"Cyprus\",\n CZ: \"Czechia\",\n DE: \"Germany\",\n DJ: \"Djibouti\",\n DK: \"Denmark\",\n DM: \"Dominica\",\n DO: \"Dominican Republic (the\",\n DZ: \"Algeria\",\n EC: \"Ecuador\",\n EE: \"Estonia\",\n EG: \"Egypt\",\n EH: \"Western Sahara\",\n ER: \"Eritrea\",\n ES: \"Spain\",\n ET: \"Ethiopia\",\n FI: \"Finland\",\n FJ: \"Fiji\",\n FK: \"Falkland Islands (the) [Malvinas]\",\n FM: \"Micronesia (Federated States of)\",\n FO: \"Faroe Islands (the)\",\n FR: \"France\",\n GA: \"Gabon\",\n GB: \"United Kingdom of Great Britain and Northern Ireland (the)\",\n GD: \"Grenada\",\n GE: \"Georgia\",\n GF: \"French Guiana\",\n GG: \"Guernsey\",\n GH: \"Ghana\",\n GI: \"Gibraltar\",\n GL: \"Greenland\",\n GM: \"Gambia (the)\",\n GN: \"Guinea\",\n GP: \"Guadeloupe\",\n GQ: \"Equatorial Guinea\",\n GR: \"Greece\",\n GS: \"South Georgia and the South Sandwich Islands\",\n GT: \"Guatemala\",\n GU: \"Guam\",\n GW: \"Guinea-Bissau\",\n GY: \"Guyana\",\n HK: \"Hong Kong\",\n HM: \"Heard Island and McDonald Islands\",\n HN: \"Honduras\",\n HR: \"Croatia\",\n HT: \"Haiti\",\n HU: \"Hungary\",\n ID: \"Indonesia\",\n IE: \"Ireland\",\n IL: \"Israel\",\n IM: \"Isle of Man\",\n IN: \"India\",\n IO: \"British Indian Ocean Territory (the)\",\n IQ: \"Iraq\",\n IR: \"Iran (Islamic Republic of)\",\n IS: \"Iceland\",\n IT: \"Italy\",\n JE: \"Jersey\",\n JM: \"Jamaica\",\n JO: \"Jordan\",\n JP: \"Japan\",\n KE: \"Kenya\",\n KG: \"Kyrgyzstan\",\n KH: \"Cambodia\",\n KI: \"Kiribati\",\n KM: \"Comoros (the)\",\n KN: \"Saint Kitts and Nevis\",\n KP: \"Korea (the Democratic People's Republic of)\",\n KR: \"Korea (the Republic of)\",\n KW: \"Kuwait\",\n KY: \"Cayman Islands (the)\",\n KZ: \"Kazakhstan\",\n LA: \"Lao People's Democratic Republic (the)\",\n LB: \"Lebanon\",\n LC: \"Saint Lucia\",\n LI: \"Liechtenstein\",\n LK: \"Sri Lanka\",\n LR: \"Liberia\",\n LS: \"Lesotho\",\n LT: \"Lithuania\",\n LU: \"Luxembourg\",\n LV: \"Latvia\",\n LY: \"Libya\",\n MA: \"Morocco\",\n MC: \"Monaco\",\n MD: \"Moldova (the Republic of)\",\n ME: \"Montenegro\",\n MF: \"Saint Martin (French part)\",\n MG: \"Madagascar\",\n MH: \"Marshall Islands (the)\",\n MK: \"Republic of North Macedonia\",\n ML: \"Mali\",\n MM: \"Myanmar\",\n MN: \"Mongolia\",\n MO: \"Macao\",\n MP: \"Northern Mariana Islands (the)\",\n MQ: \"Martinique\",\n MR: \"Mauritania\",\n MS: \"Montserrat\",\n MT: \"Malta\",\n MU: \"Mauritius\",\n MV: \"Maldives\",\n MW: \"Malawi\",\n MX: \"Mexico\",\n MY: \"Malaysia\",\n MZ: \"Mozambique\",\n NA: \"Namibia\",\n NC: \"New Caledonia\",\n NE: \"Niger (the)\",\n NF: \"Norfolk Island\",\n NG: \"Nigeria\",\n NI: \"Nicaragua\",\n NL: \"Netherlands (the)\",\n NO: \"Norway\",\n NP: \"Nepal\",\n NR: \"Nauru\",\n NU: \"Niue\",\n NZ: \"New Zealand\",\n OM: \"Oman\",\n PA: \"Panama\",\n PE: \"Peru\",\n PF: \"French Polynesia\",\n PG: \"Papua New Guinea\",\n PH: \"Philippines (the)\",\n PK: \"Pakistan\",\n PL: \"Poland\",\n PM: \"Saint Pierre and Miquelon\",\n PN: \"Pitcairn\",\n PR: \"Puerto Rico\",\n PS: \"Palestine, State of\",\n PT: \"Portugal\",\n PW: \"Palau\",\n PY: \"Paraguay\",\n QA: \"Qatar\",\n RE: \"Réunion\",\n RO: \"Romania\",\n RS: \"Serbia\",\n RU: \"Russian Federation (the)\",\n RW: \"Rwanda\",\n SA: \"Saudi Arabia\",\n SB: \"Solomon Islands\",\n SC: \"Seychelles\",\n SD: \"Sudan (the)\",\n SE: \"Sweden\",\n SG: \"Singapore\",\n SH: \"Saint Helena, Ascension and Tristan da Cunha\",\n SI: \"Slovenia\",\n SJ: \"Svalbard and Jan Mayen\",\n SK: \"Slovakia\",\n SL: \"Sierra Leone\",\n SM: \"San Marino\",\n SN: \"Senegal\",\n SO: \"Somalia\",\n SR: \"Suriname\",\n SS: \"South Sudan\",\n ST: \"Sao Tome and Principe\",\n SV: \"El Salvador\",\n SX: \"Sint Maarten (Dutch part)\",\n SY: \"Syrian Arab Republic\",\n SZ: \"Eswatini\",\n TC: \"Turks and Caicos Islands (the)\",\n TD: \"Chad\",\n TF: \"French Southern Territories (the)\",\n TG: \"Togo\",\n TH: \"Thailand\",\n TJ: \"Tajikistan\",\n TK: \"Tokelau\",\n TL: \"Timor-Leste\",\n TM: \"Turkmenistan\",\n TN: \"Tunisia\",\n TO: \"Tonga\",\n TR: \"Turkey\",\n TT: \"Trinidad and Tobago\",\n TV: \"Tuvalu\",\n TW: \"Taiwan (Province of China)\",\n TZ: \"Tanzania, United Republic of\",\n UA: \"Ukraine\",\n UG: \"Uganda\",\n UM: \"United States Minor Outlying Islands (the)\",\n US: \"United States of America (the)\",\n UY: \"Uruguay\",\n UZ: \"Uzbekistan\",\n VA: \"Holy See (the)\",\n VC: \"Saint Vincent and the Grenadines\",\n VE: \"Venezuela (Bolivarian Republic of)\",\n VG: \"Virgin Islands (British)\",\n VI: \"Virgin Islands (U.S.)\",\n VN: \"Viet Nam\",\n VU: \"Vanuatu\",\n WF: \"Wallis and Futuna\",\n WS: \"Samoa\",\n YE: \"Yemen\",\n YT: \"Mayotte\",\n ZA: \"South Africa\",\n ZM: \"Zambia\",\n ZW: \"Zimbabwe\",\n}\n\nexport const UK_COUNTIES = [\n \"Aberdeen City\",\n \"Aberdeenshire\",\n \"Angus\",\n \"Argyll and Bute\",\n \"Bedfordshire\",\n \"Belfast\",\n \"Belfast Greater\",\n \"Berkshire\",\n \"Blaenau Gwent\",\n \"Bridgend\",\n \"Buckinghamshire\",\n \"Caerphilly\",\n \"Cambridgeshire\",\n \"Cardiff\",\n \"Carmarthenshire\",\n \"Ceredigion\",\n \"Channel Islands\",\n \"Cheshire\",\n \"City of Edinburgh\",\n \"Clackmannanshire\",\n \"Conwy\",\n \"Cornwall\",\n \"County Antrim\",\n \"County Armagh\",\n \"County Down\",\n \"County Fermanagh\",\n \"County Londonderry\",\n \"County Tyrone\",\n \"County of Bristol\",\n \"Cumbria\",\n \"Denbighshire\",\n \"Derbyshire\",\n \"Devon\",\n \"Dorset\",\n \"Dumfries and Galloway\",\n \"Dunbartonshire\",\n \"Dundee City\",\n \"Durham\",\n \"East Ayrshire\",\n \"East Dunbartonshire\",\n \"East Lothian\",\n \"East Renfrewshire\",\n \"East Riding of Yorkshire\",\n \"East Sussex\",\n \"Essex\",\n \"Falkirk\",\n \"Fife\",\n \"Flintshire\",\n \"Glasgow City\",\n \"Gloucestershire\",\n \"Greater London\",\n \"Greater Manchester\",\n \"Guernsey Channel Islands\",\n \"Gwynedd\",\n \"Hampshire\",\n \"Hereford and Worcester\",\n \"Herefordshire\",\n \"Hertfordshire\",\n \"Highland\",\n \"Inverclyde\",\n \"Inverness\",\n \"Isle of Anglesey\",\n \"Isle of Barra\",\n \"Isle of Man\",\n \"Isle of Wight\",\n \"Jersey Channel Islands\",\n \"Kent\",\n \"Lancashire\",\n \"Leicestershire\",\n \"Lincolnshire\",\n \"Merseyside\",\n \"Merthyr Tydfil\",\n \"Midlothian\",\n \"Monmouthshire\",\n \"Moray\",\n \"Neath Port Talbot\",\n \"Newport\",\n \"Norfolk\",\n \"North Ayrshire\",\n \"North Lanarkshire\",\n \"North Yorkshire\",\n \"Northamptonshire\",\n \"Northumberland\",\n \"Nottinghamshire\",\n \"Orkney\",\n \"Orkney Islands\",\n \"Oxfordshire\",\n \"Pembrokeshire\",\n \"Perth and Kinross\",\n \"Powys\",\n \"Renfrewshire\",\n \"Rhondda Cynon Taff\",\n \"Rutland\",\n \"Scottish Borders\",\n \"Shetland Islands\",\n \"Shropshire\",\n \"Somerset\",\n \"South Ayrshire\",\n \"South Lanarkshire\",\n \"South Yorkshire\",\n \"Staffordshire\",\n \"Stirling\",\n \"Suffolk\",\n \"Surrey\",\n \"Swansea\",\n \"Torfaen\",\n \"Tyne and Wear\",\n \"Vale of Glamorgan\",\n \"Warwickshire\",\n \"West Dunbart\",\n \"West Lothian\",\n \"West Midlands\",\n \"West Sussex\",\n \"West Yorkshire\",\n \"Western Isles\",\n \"Wiltshire\",\n \"Worcestershire\",\n \"Wrexham\",\n] as const\n\nexport type UkCounties = (typeof UK_COUNTIES)[number]\n","import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/location\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["COUNTRY_ISO_CODES","COUNTRY_ISO_CODE_MAPPING","UK_COUNTIES","id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":";;;;;;AAAO,MAAMA,IAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAkQaC,IAA+D;AAAA,EAC1E,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,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"}