From 46a06d3af38c8c9e95cfacba3628647794cd847b Mon Sep 17 00:00:00 2001 From: WillForan Date: Sun, 24 Nov 2024 14:50:34 +0000 Subject: [PATCH] deploy: a9c7500df87c27bc8227910ef5efaa5406739383 --- .buildinfo | 4 + .doctrees/_autosummary/acq2sqlite.doctree | Bin 0 -> 60577 bytes .doctrees/_autosummary/change_header.doctree | Bin 0 -> 37290 bytes .../compliance_check_html.doctree | Bin 0 -> 16015 bytes .doctrees/_autosummary/dcmmeta2tsv.doctree | Bin 0 -> 58022 bytes .doctrees/_autosummary/mrqart.doctree | Bin 0 -> 59972 bytes .../_autosummary/template_checker.doctree | Bin 0 -> 33218 bytes .doctrees/environment.pickle | Bin 0 -> 55665 bytes .doctrees/index.doctree | Bin 0 -> 32947 bytes .nojekyll | 0 _autosummary/acq2sqlite.html | 355 +++++++ _autosummary/change_header.html | 259 +++++ _autosummary/compliance_check_html.html | 162 ++++ _autosummary/dcmmeta2tsv.html | 362 +++++++ _autosummary/mrqart.html | 319 ++++++ _autosummary/template_checker.html | 234 +++++ _images/mrqart-browserUI_20241124.png | Bin 0 -> 70096 bytes _images/nonconforming_example.png | Bin 0 -> 143360 bytes _sources/_autosummary/acq2sqlite.rst.txt | 19 + _sources/_autosummary/change_header.rst.txt | 16 + .../compliance_check_html.rst.txt | 13 + _sources/_autosummary/dcmmeta2tsv.rst.txt | 30 + _sources/_autosummary/mrqart.rst.txt | 33 + .../_autosummary/template_checker.rst.txt | 20 + _sources/index.rst.txt | 67 ++ _static/alabaster.css | 663 +++++++++++++ _static/basic.css | 914 ++++++++++++++++++ _static/custom.css | 1 + _static/doctools.js | 149 +++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/github-banner.svg | 5 + _static/language_data.js | 192 ++++ _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 84 ++ _static/searchtools.js | 632 ++++++++++++ _static/sphinx_highlight.js | 154 +++ genindex.html | 405 ++++++++ index.html | 271 ++++++ objects.inv | Bin 0 -> 940 bytes py-modindex.html | 166 ++++ search.html | 125 +++ searchindex.js | 1 + taglist.csv | 24 + 45 files changed, 5692 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/_autosummary/acq2sqlite.doctree create mode 100644 .doctrees/_autosummary/change_header.doctree create mode 100644 .doctrees/_autosummary/compliance_check_html.doctree create mode 100644 .doctrees/_autosummary/dcmmeta2tsv.doctree create mode 100644 .doctrees/_autosummary/mrqart.doctree create mode 100644 .doctrees/_autosummary/template_checker.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .nojekyll create mode 100644 _autosummary/acq2sqlite.html create mode 100644 _autosummary/change_header.html create mode 100644 _autosummary/compliance_check_html.html create mode 100644 _autosummary/dcmmeta2tsv.html create mode 100644 _autosummary/mrqart.html create mode 100644 _autosummary/template_checker.html create mode 100644 _images/mrqart-browserUI_20241124.png create mode 100644 _images/nonconforming_example.png create mode 100644 _sources/_autosummary/acq2sqlite.rst.txt create mode 100644 _sources/_autosummary/change_header.rst.txt create mode 100644 _sources/_autosummary/compliance_check_html.rst.txt create mode 100644 _sources/_autosummary/dcmmeta2tsv.rst.txt create mode 100644 _sources/_autosummary/mrqart.rst.txt create mode 100644 _sources/_autosummary/template_checker.rst.txt create mode 100644 _sources/index.rst.txt create mode 100644 _static/alabaster.css create mode 100644 _static/basic.css create mode 100644 _static/custom.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/github-banner.svg create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 taglist.csv diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..b637720f --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a0fcf460302088f3b558fee9146ad410 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/_autosummary/acq2sqlite.doctree b/.doctrees/_autosummary/acq2sqlite.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41c1e59d53a4826b9ec31b67955b3023a060898e GIT binary patch literal 60577 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 yYk?&pusgumJtzpTFf_E<C?%Kr}xFgiH^ literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/change_header.doctree b/.doctrees/_autosummary/change_header.doctree new file mode 100644 index 0000000000000000000000000000000000000000..68f4ca5d18989580097323e6980ac9d1fbe9986d GIT binary patch literal 37290 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/compliance_check_html.doctree b/.doctrees/_autosummary/compliance_check_html.doctree new file mode 100644 index 0000000000000000000000000000000000000000..217482d1b72a4f85a2532d33d4c201d94bb4fa1a GIT binary patch literal 16015 zcmdU0du%1wS@*8r_WH4#U6<7B<|a|vYgpTCDQV>_AyI%f-Hr25RG@K~j_-^;b3AwE zb{@NSqNu6bY}et0M|b)JwH2cMqvem3BIU1A1VRN-fe?uQK|qlJi6W%_0SJEIIcH|h zjOWg^H%k&M`QAHczH`p^KIi++`Cc6T%qJfl5`TOy>N&2zw`y9JA6Ryj@(C;GBwgE& z)0^q?$I}IOaP3+U z?yhyiu(RS=;mSwN(r+n&HN#BeAWFJjGu&S*m?B9Pl&*#msC&odlgXAd#7AA=jfKfp=yo&=`Q*QhbV0Fia2AQ!fRKN)BUJ%CX7uPRo>hd780zBsn%9vp>tJ>?7 zpVpoX@TP2ne?5i2x@p?N9x-Q>c=3f+Y{OCslb#tn%TrVDSD3X-zx9EqAG^|$$Pp<& z^XMawKh|<=)3QTBml?WI;9qDt?vCT(KPH;HZqzknOcJe5O?iQ78QB!=>_;}&6}-*o z$zHa$!=T%W9Xm&Dm0U+_+XaEje~ebiRq}^^#yeq<^fdh}{M0xU=a_mkfiBlvD|XV$ zQ=}?gs0xEN`qGJJUa+q=!>#56d{`fVyyjM5?bjkY90u2FUyPEqAMOLYoP?h=cS5u0 zXdQX54s{H+*!oB6G@*5=UWMymANYg4MurqZ3wLU}fYL^qd(eA@71r+T(;K^u%c zxKtgZ%eN7uOdG~MH-H4Yj4L**ic)y1=dYESC(|ES`u(o#G zIK3fWUo%5LJ%9%6uS>_C@^iI<#Uc+Fu@t5oVxHIxckDRjKUxc4>!pOp{5%%Jx0a{8 zd;(%fVVMhjsnNq}vQKr{+kNFnLjJU~QEcO2tv!%%1s` z+v#bumG|}zTA0b-=&b6m>WWowMcw$TV@R!87j8hbFF~{inJBXrroXJ8%)MS|LG0&% zOF+`|W~*bx(|#etf&bL&nnLQ&m$T8F|5omEri6-SJO9&PA==K@kKi)@v&n+6&6FE`HGH%`RTKwY}T|zlEN;Ut()ShzQP(5?7EHe@4>HE~uVOYM424klxHw zkMK0+JR6rmtA(E+qwMUJ1-_WUg`@OR`!*sN|!I_Pawd+R`aafraf{-<)!Z?Npug`@Sq?|XBJ2RMY3J{&+k~~3TW!~G z$t_ELn6!Mnok>&VI>bki2ss=w(q?s*-WZXKh(AukQX=DGE#^%TRIvpXqf!cn@(5Yl z#Tn%b_0A|;!u!20l>Xz5O5f(wAY}z26%+Fr!b5EO#B*u?$~qW|S@?j;v5(QXi|qM) zc>dg*7Y$QRTzTGvLT;<-rqXbQ2|pij9vNhQt4(EFd#`%5(%l42*NHmaPf0bk(d#zNPAw~wYwS7w>M7rv7ffUmgIx0pM%q2B6aOX= z|JMQh;}fnA1Mv~dABa6*61pjW)QRI>w7#~s{aw(-Qnj|8Dz%DHZN!PXiD z&V4ei2;+%~|15F&r$M-kAkIcMbwnhtspCJ&j)i}e&ZCel3jtwLjuxqBm|n`K$dMp$ zNA|p&IpAZ1V)aoOs5@hPVmt9XVa4pTn1D|ianK?Ch@+If{Ukg%HD5>SK)jHCYoT`K zS{5AGCqkBT-GNZAQi}*{DS0E@RVRQbv;%`I*VT6Zf5x!vo#0e|yVo~I5H>~pZ~F2F z!Q88m#!5KJr?y?&v!p+$8ml;n5$_L~IK5I`t82m36PcIEllOX4;WQsU4)fSg6Z9gx zL|;oHg%7t`U{Ra+#OrC~_dPrAPv9iELIc^p?ja&It=!Sq!&dtdI)8dfq`Q|}D=V$X zlem|}MVeVctF-pEI?K3#9jPC~mrzQZlF_tjllg9B#3^+itrlyuNyung^Ju{Tv zZIL}QKmxSn{h}1shXg45Fut;FnbM+SEx03RI-Ml7+OP$69>6+Uzv{j$OEi^wYy5kS zFzCBmt9WguY~ou2-$OP*&H7kXn_$oBhz^5-O!LL>g4y4z4AftZiHS<%|5PB=A5_

_ zgMB@Dgi#-tptPtoWl;!$bqV@j0m>f0S6OY_>>;g=go&I8^ z`PKS2MxFBYk3FHydB}Vo5QnYm-1r(cy4f<*+73b-sK&O{N+_YyGFu;XeP+J9I3LZl z^mUC<(E9e{(29-HB6}Np3{nauKH|x37T>fKUrU^mDSuLGD@c3qaY)O=_#WzXL@^dl zqq^QMAS8f8DR8-RWL#c{XONRNyM_-4ku++wkn+zChGR;~#Ij>ax!FtnBrFGNmTiWe zrE26=v&ONzWv48(sqfU5o)#gNyu(tB($q<;gc?UACzOnR4D{hr6;ea`vmdO;`#bQ} zevti~&6-!_>HPserCw&wrvahDttbbY^MkA{gQJmXzQ~U0s)fu6#42E+h)9|cj%W!RsNyh>%u&L3nJDx z3uXIgGmhEVEBF|kQTinsk>}A`qa>s%j-^@v<&6u(;6F0un z%ng+#Ex5s6rBOwelzp{?TuHuSdHcW334XVcyvCg1AE9g0+E=9aXlJ1EoZmTeC-x6u zjGp|fXW#cV_Q|~k`hDBLzgssVK6S>}dFuKt48@k{*VKr5 zyq>bVsQX;W_S&UXU1lg)1b+h~kY7r+*gfc0@tRs1-%tF|D_N;XGtkUKg5xmBvTE{U4!IasAjcy<6c}u0zWZ;PvllrBtR;B z#7N*S0Xo>`^6*?4T>e~;bbz6BHR>-?EnL4&osMX2cRrj&;ZLgz)Gc|;BMl16Y6C=p z=NFHIr(pf(1e2QSQLHC=ZZqpkVYOm^sjVRGwd0VMIlSMaPDd2MM803SWS#}}DM`K;RhRToDLRLQfN@m2vuTpju@tM(qc9cSXG?K?pkDRZD!R{hL-n27lFxmjd-e(1jFBYR zC+XMpC_Y}we_h9~1NJHLc|&|2h|ibB=P!#-PM_pL>Z0(1>b7%9-yN=qV~G`Uuxw|k z3mrhK55ifxs`Vj3O(Du3mX1vvtD$PBzbnXVq?`-%aUN?p!4mv)zaB==a zrk9{VDLb&_V}Uq;OE;W3+(K8!)ImsB(k&FCM6ucJ;bA%qf*7dU+wNY1j6Q>$3dW%f%EBwqh2Ji!vwiL}b_zYFD`AOHZs~_H5B&P&U@cD#$RC>Yz%>Hux!7B4c>=RU3>v$)_CC!zreG9Ob9&Js13o zal0%kT1PE=E7`$xvvh$U=^Q#ew9PJBCLxH9O;{6tu8-qN1D7`fs;Iyze-dx6yl+L^ zFF0R*Y1m;Hgob1KmS^Mc!Wg02!3F<0$#ZR#Q85aN#VT(qL$HTn6ns{WTi}rOK3{%O z>CESe254R6fJL6TYdGVX{!U`<*xXT@;5MhyqtpwW{2}0kkLRxc)YDK>39;QSf%R!sObcE0wxu^a;KNwjsfd+NNN)o3g(f10 z?7}u;)b~-Pj?kOaKnj`_qd*tF+@g}z7gBzv)Jpd}L^DR)&L76enW7>V;N#RNf3vf+ z?w!U*#3!j)q?iFDUK~Wu-6%d4?{O{o60T{Csj{KWqh~jRifh4_M7Bg^CGADzcy1m1czbbVp0vaTRGDMrogf&* zp|_B!h*qd?cMBz|CD5~##vFRG1U8w?Dn>d}8XpTt7^iRt=c;3=H(0^p6FWgdcj&NO z;x@Sl-GP>1X&!$>wcmtfUrL{Xed9h0JOvabf=bH?bJtjEp3a+vR!+Nq$4e}-f*q=; Qp0db$D@RA06Wr1JUqaDf00000 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/dcmmeta2tsv.doctree b/.doctrees/_autosummary/dcmmeta2tsv.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5c3fb159dfe9f7bed940eb87f51a23d2655a0c10 GIT binary patch literal 58022 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 literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/mrqart.doctree b/.doctrees/_autosummary/mrqart.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d0f9e73d229f0029fae2f2c89e6601ce2b01cfa5 GIT binary patch literal 59972 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 Vbt@!aizLTW6|xILh4RrY{(o}84_5#H literal 0 HcmV?d00001 diff --git a/.doctrees/_autosummary/template_checker.doctree b/.doctrees/_autosummary/template_checker.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f15566aa911cccd9d95bf70552aa048f06a15572 GIT binary patch literal 33218 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 QRU*^tSt;@?oI?740JgRQp8x;= literal 0 HcmV?d00001 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_autosummary/acq2sqlite.html b/_autosummary/acq2sqlite.html new file mode 100644 index 00000000..60e35e66 --- /dev/null +++ b/_autosummary/acq2sqlite.html @@ -0,0 +1,355 @@ + + + + + + + + acq2sqlite — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + +

+
+
+ + +
+ +
+

acq2sqlite

+

Convert db.txt into a sqlite database.

+

Functions

+ + + + + + + + + +

column_names()

These names match what's used by dcmmeta2tsv.py and 00_build_db.bash CSA first, normal dicom headers, and then filename.

have_pipe_data()

+

Classes

+ + + + + + +

DBQuery([sql])

Convenient SQL queries for tracking dicom headers/metadata.

+
+
+class acq2sqlite.DBQuery(sql=None)[source]
+

Convenient SQL queries for tracking dicom headers/metadata.

+

This class is a poorly implemented, ad-hoc/bespoke ORM for database defined in schema.sql

+
+
+CONSTS = ['Project', 'SequenceName', 'iPAT', 'Comments', 'SequenceType', 'PED_major', 'Phase', 'TR', 'TE', 'Matrix', 'PixelResol', 'BWP', 'BWPPE', 'FA', 'TA', 'FoV'][source]
+

CONSTS is a list of expected aquisition-invarient parameters. +The values of these attributes should be the same for every acquisition +sharing a Project × SequenceName pair (across all sessions of a Project).

+

We consider the acquisition to have a Quallity Assurance error +when the value of any of these parameters in a single acquisition +fails to match the template.

+

For example TR for task EPI acquisition identified by +SequenceName=RewardedAnti in Project=WPC-8620 +should always be 1300 ms.

+../_images/nonconforming_example.png +
+ +
+
+check_acq(d)[source]
+

Is this exact acquisition (time, id, series) already in the database?

+
+
Parameters:
+

d (dict[str, str]) – All parameters of an acquisition

+
+
Returns:
+

True/False if dict params exist

+
+
Return type:
+

bool

+
+
+
+ +
+
+dict_to_db_row(d)[source]
+

insert a dicom header (representative of acquisition) into db +:param d: a single acquisition to add to DB +:return: True if added or already exists

+
+
Parameters:
+

d (dict[str, str])

+
+
Return type:
+

bool

+
+
+
+ +
+
+find_acquisitions_since(since_date=None)[source]
+

Retrieve all acquisitions with AcqDate greater than the specified date.

+
+
Parameters:
+

since_date (str | None) – Date string in ‘YYYY-MM-DD’ format; defaults to yesterday if None.

+
+
Returns:
+

List of acquisition rows with AcqDate > since_date.

+
+
+
+ +
+
+get_template(pname, seqname)[source]
+

Find the template from template_by_count. See make_template_by_count.sql

+
+
Parameters:
+
    +
  • pname (str) – protocol name

  • +
  • sqname – sequence name

  • +
  • seqname (str)

  • +
+
+
Returns:
+

template row matching prot+seq name pair

+
+
Return type:
+

Row

+
+
+
+ +
+
+is_template(param_id)[source]
+

Check if param id is the ideal template.

+
+
Parameters:
+

param_id (int)

+
+
Return type:
+

bool

+
+
+
+ +
+
+most_recent(project='%')[source]
+

Find a projects most recent scan in the database +:param project: project name. default to all via wildcard % +:return: timestamp string of most recent seen scan

+
+
Parameters:
+

project (str)

+
+
Return type:
+

Row

+
+
+
+ +
+
+param_rowid(d)[source]
+
+
Parameters:
+

d (dict[str, str]) – dicom headers

+
+
Returns:
+

acq_param (new or existing) rowid identifying unique set of CONSTS

+
+
Return type:
+

int | None

+
+
+

Find or insert the combination of parameters for an acquisition. +Using CONSTS, the header parameters that should be invariant +across acquisitions of the same name within a study.

+
>>> db = DBQuery(sqlite3.connect(':memory:'))
+>>> with open('schema.sql') as f: _ = [db.sql.execute(c) for c in f.read().split(";")]
+...
+>>> # db.sql.execute(".read schema.sql")
+>>> example = {k: 'x' for k in db.CONSTS}
+>>> db.param_rowid(example)
+1
+>>> db.param_rowid(example)
+1
+>>> db.param_rowid({**example, 'Project': 'b'})
+2
+>>> str(db.param_rowid({}))
+'None'
+
+
+
+ +
+
+search_acq_param(d)[source]
+

Try to find aca_param row id of CONSTS part of input d

+
+
Parameters:
+

d (dict[str, str]) – dictionary of tag values (keys in CONSTS)

+
+
Returns:
+

rowid of matching (param_id) or None

+
+
Return type:
+

int | None

+
+
+
+ +
+
+tsv_to_dict(line)[source]
+

Read a tsv line into dictionary.

+
+
Parameters:
+

line (str) – tab separated string. likely line from dcmmeta2tsv.py

+
+
Returns:
+

dictionary with taglist.txt names and acquisition values.

+
+
Return type:
+

dict[str, str]

+
+
+
+ +
+ +
+
+acq2sqlite.column_names()[source]
+

These names match what’s used by dcmmeta2tsv.py and 00_build_db.bash +CSA first, normal dicom headers, and then filename.

+

Defaults to reading from taglist.txt +This provides a language agnostic lookup for columns in schema.sql

+

These column names should match what is output by +./dcmmeta2tsv.bash or ./dcmmeta2tsv.py

+

Also see dcmmeta2tsv.read_known_tags()

+
>>> cn = column_names() # reads taglist.txt
+>>> cn[0] # hard coded here
+'Phase'
+>>> cn[3] # from taglist.xt
+'AcqDate'
+
+
+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/change_header.html b/_autosummary/change_header.html new file mode 100644 index 00000000..d1f44527 --- /dev/null +++ b/_autosummary/change_header.html @@ -0,0 +1,259 @@ + + + + + + + + change_header — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

change_header

+

Modify DICOM header information to simulate failing QA.

+

Functions

+ + + + + + + + + + + + + + + + + + +

change_tags(dcm_dir, new_data[, out_dir])

Change specified tags of all dicoms in a directory.

gen_acqdates()

Generate DataElements for random acquisition day and time.

gen_anon()

Make random date of birth, age, and sex.

gen_ids(new_id)

Generate ID DataElements.

main_make_mods()

Exercise header modification code to make example data we can use.

+
+
+change_header.change_tags(dcm_dir, new_data, out_dir=None)[source]
+

Change specified tags of all dicoms in a directory. Optionally make copies in out_dir.

+

sideffect: writes copies of dcm_dir dicoms into out_dir unless out_dir is None.

+
+
Parameters:
+
    +
  • dcm_dir (Path) – input directory with dicom files (MR*, *IMA , or *dcm)

  • +
  • new_data (List[DataElement]) – list of data elements to replace +like [pydicom.DataElement(value="newpname", VR="LO", tag=(0x0018, 0x1030))]

  • +
  • out_dir (Path | None) – Optional. Where to save modified dicoms

  • +
+
+
Returns:
+

example modified dicom. last if out_dir, first and only if no out_dir.

+
+
Return type:
+

FileDataset | None

+
+
+
>>> new_data = [pydicom.DataElement(value="newpname", VR="LO", tag=(0x0018, 0x1030))]
+>>> ex_path = Path('example_dicoms/')
+>>> ex = change_tags(ex_path, new_data)
+>>> ex.ProtocolName
+'newpname'
+
+
+
+ +
+
+change_header.gen_acqdates()[source]
+

Generate DataElements for random acquisition day and time.

+
+
Returns:
+

ID DataElements List

+
+
Return type:
+

List[DataElement]

+
+
+

See gen_anon() for tag and VR info.

+
+ +
+
+change_header.gen_anon()[source]
+

Make random date of birth, age, and sex.

+
+
Returns:
+

list of DataElements with randomized values

+
+
Return type:
+

List[DataElement]

+
+
+
+

Tip

+

Field tag type and location can be extracted like:

+
x = pydicom.dcmread(example_fname)
+fields = ['AcquisitionDate', 'AcquisitionTime',
+          'PatientBirthDate', 'PatientAge', 'PatientSex']
+[x[k] for k in fields]
+
+# yields
+[(0008,0022) Acquisition Date                    DA: '20221222',
+ (0008,0032) Acquisition Time                    TM: '092132.722500',
+ (0010,0030) Patient's Birth Date                DA: '20070404',
+ (0010,1010) Patient's Age                       AS: '015Y',
+ (0010,0040) Patient's Sex                       CS: 'F']
+
+
+
+

Where the tag is the tuple and “XX:” is the type

+
+ +
+
+change_header.gen_ids(new_id)[source]
+

Generate ID DataElements.

+
+
Parameters:
+

new_id (str) – id string to put into pat name and pat id dicom headers.

+
+
Returns:
+

ID DataElements List

+
+
Return type:
+

List[DataElement]

+
+
+

See gen_anon() for tag and VR info.

+
>>> data_els = gen_ids('example_name')
+>>> data_els[0].value
+'example_name'
+>>> data_els[0].VR
+'PN'
+>>> data_els[0].tag 
+(0010, 0010)
+
+
+
+ +
+
+change_header.main_make_mods()[source]
+

Exercise header modification code to make example data we can use.

+

We can confirm changes are made from shell using AFNI’s dicom_hinfo

+
find example/dicom/mod* -iname 'MR*' -exec dicom_hinfo -tag 0010,0010 -sepstr $'\t' -last {} \+
+
+#   mod1 example/dicom/mod1/HabitTask/MR.1.3.12.2.1107.5.2.43.167046.2022122209214150118864465
+#   mod1 example/dicom/mod1/HabitTask/MR.1.3.12.2.1107.5.2.43.167046.2022122209214176799264617
+#   mod2 example/dicom/mod2/HabitTask/MR.1.3.12.2.1107.5.2.43.167046.2022122209214150118864465
+#   mod2 example/dicom/mod2/HabitTask/MR.1.3.12.2.1107.5.2.43.167046.2022122209214176799264617
+
+
+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/compliance_check_html.html b/_autosummary/compliance_check_html.html new file mode 100644 index 00000000..6039d6a4 --- /dev/null +++ b/_autosummary/compliance_check_html.html @@ -0,0 +1,162 @@ + + + + + + + + compliance_check_html — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

compliance_check_html

+

Functions

+ + + + + + + + + +

generate_html_report(check_result, template_path)

Generate an HTML report of DICOM header comparison, highlighting mismatches.

load_template(template_path)

Load an HTML template from the template.html file

+
+
+compliance_check_html.generate_html_report(check_result, template_path)[source]
+

Generate an HTML report of DICOM header comparison, highlighting mismatches.

+
+
Parameters:
+
    +
  • check_result (CheckResult) – Output from the check_header function, containing the comparison results.

  • +
  • template_path (str)

  • +
+
+
Returns:
+

HTML string with results formatted using a Jinja2 template.

+
+
Return type:
+

str

+
+
+
+ +
+
+compliance_check_html.load_template(template_path)[source]
+

Load an HTML template from the template.html file

+
+
Parameters:
+

template_path (str) – Path to the HTML template file.

+
+
Returns:
+

A Jinja2 Template object.

+
+
Return type:
+

Template

+
+
+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/dcmmeta2tsv.html b/_autosummary/dcmmeta2tsv.html new file mode 100644 index 00000000..6b45443b --- /dev/null +++ b/_autosummary/dcmmeta2tsv.html @@ -0,0 +1,362 @@ + + + + + + + + dcmmeta2tsv — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

dcmmeta2tsv

+

Give a tab separated metadata value line per dicom file.

+

Module Attributes

+ + + + + + +

TagValues

keys are names from taglist.txt, also has dcm_path key for file

+

Functions

+ + + + + + + + + + + + + + + + + + + + + +

csa_fetch(csa_tr, itemname)

safely look into csa_tr dicom dictionary.

read_csa(csa)

extract parameters from siemens CSA :param csa: content of siemens private tag (0x0029, 0x1010) :return: nibabel's csareader dictionary or None if cannot read

read_known_tags([tagfile])

read in tsv file like with header name,tag,desc.

read_shims(csa_s)

read_tags(dcm_path, tags)

Read dicom header and isolate tags

tagpair_to_hex(csv_str)

move our text files has tags like "0051,1017" to pydicom indexe like (0x51,0x1017)

+

Classes

+ + + + + + + + + +

DicomTagReader()

Class to cache read_known_tags() output

NULLVAL()

Container to imitate pydicom.dcmread.

+
+
+class dcmmeta2tsv.DicomTagReader[source]
+

Class to cache read_known_tags() output

+
+
+read_dicom_tags(dcm_path)[source]
+

return values of dicom header priority fields +ordered as defined in taglist.txt +:param dcm_path: path to dciom +:return: dict[taglist.txt tagname, tag value]

+
>>> dtr = DicomTagReader()
+>>> hdr = dtr.read_dicom_tags('example_dicoms/RewardedAnti_good.dcm')
+>>> list(hdr.values()) 
+[1, 'p2', '154833.265000', '20220913', ...
+
+
+
>>> list(hdr.values())[-1]
+'example_dicoms/RewardedAnti_good.dcm'
+
+
+
+
Parameters:
+

dcm_path (PathLike)

+
+
Return type:
+

dict[str, str]

+
+
+
+ +
+ +
+
+class dcmmeta2tsv.NULLVAL[source]
+

Container to imitate pydicom.dcmread. +object that has obj.value for when a dicom tag does not exist. +Using “null” to match AFNI’s dicom_hinfo missing text

+
+ +
+
+dcmmeta2tsv.TagValues[source]
+

keys are names from taglist.txt, also has dcm_path key for file

+
+ +
+
+dcmmeta2tsv.csa_fetch(csa_tr, itemname)[source]
+

safely look into csa_tr dicom dictionary. +Expect nested structure like 'tags'->itemname->'items'->[0].

+

In future, might want to check itemname and pull out more than the first array item.

+
>>> csa_fetch({'notags':'badinput'}, 'PhaseEncodingDirectionPositive')
+'null'
+>>> csa_fetch({'tags':{'ImaPATModeText': {'items': [1]}}}, 'ImaPATModeText')
+1
+
+
+
+
Parameters:
+
    +
  • csa_tr (dict)

  • +
  • itemname (str)

  • +
+
+
Return type:
+

str

+
+
+
+ +
+
+dcmmeta2tsv.read_csa(csa)[source]
+

extract parameters from siemens CSA +:param csa: content of siemens private tag (0x0029, 0x1010) +:return: nibabel’s csareader dictionary or None if cannot read

+
>>> read_csa(None) is None
+True
+
+
+
+
Return type:
+

dict | None

+
+
+
+ +
+
+dcmmeta2tsv.read_known_tags(tagfile='taglist.txt')[source]
+

read in tsv file like with header name,tag,desc. +skip comments and header

+
+
Parameters:
+

tagfile – text tsv file to get name,tag(hex pair),desc from

+
+
Returns:
+

file parsed into a list of dictonaires

+
+
Return type:
+

list[Tag]

+
+
+
+ +
+
+dcmmeta2tsv.read_shims(csa_s)[source]
+
+
Param:
+

csa_s 0x0029,0x1020 CSA Series Header Info:: +csa_s = dcmmeta2tsv.read_csa(dcm.get(())

+
+
Returns:
+

list of shim values in order of CHM matlab code

+
+
Parameters:
+

csa_s (dict | None)

+
+
Return type:
+

list

+
+
+
+
CHM maltab code concats

sAdjData.uiAdjShimMode +sGRADSPEC.asGPAData[0].lOffset{X,Y,Z} +sGRADSPEC.alShimCurrent[0:4] +sTXSPEC.asNucleusInfo[0].lFrequency

+
+
+
>>> csa_s = pydicom.dcmread('example_dicoms/RewardedAnti_good.dcm').get((0x0029, 0x1020))
+>>> ",".join(read_shims(read_csa(csa_s)))
+'1174,-2475,4575,531,-20,59,54,-8,123160323,4'
+>>> read_shims(None)  
+['null', ...'null']
+
+
+
+ +
+
+dcmmeta2tsv.read_tags(dcm_path, tags)[source]
+

Read dicom header and isolate tags

+
+
Parameters:
+
    +
  • dcm_path (PathLike) – dicom file with headers to extract

  • +
  • tags (list[Tag]) – ordered dictionary with ‘tag’ key as hex pair, see tagpair_to_hex()

  • +
+
+
Returns:
+

dict[tag,value] values in same order as tags

+
+
Return type:
+

dict[str, str]

+
+
+
>>> tr = {'name': 'TR', 'tag': (0x0018,0x0080), 'loc': 'header'}
+>>> ipat = {'name': 'iPAT', 'tag': 'ImaPATModeText', 'loc': 'csa'}
+>>> list(read_tags('example_dicoms/RewardedAnti_good.dcm', [ipat, tr]).values())
+['p2', '1300.0', 'example_dicoms/RewardedAnti_good.dcm']
+
+
+
>>> list(read_tags('example_dicoms/DNE.dcm', [ipat,tr]).values())
+['null', 'null', 'example_dicoms/DNE.dcm']
+
+
+
+ +
+
+dcmmeta2tsv.tagpair_to_hex(csv_str)[source]
+

move our text files has tags like “0051,1017” +to pydicom indexe like (0x51,0x1017)

+
+
Parameters:
+

csv_str – comma separated string to convert

+
+
Returns:
+

dicom header tag hex pair

+
+
Return type:
+

tuple[int, int]

+
+
+
>>> tagpair_to_hex("0051,1017")
+('0x51', '0x1017')
+
+
+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/mrqart.html b/_autosummary/mrqart.html new file mode 100644 index 00000000..431d9350 --- /dev/null +++ b/_autosummary/mrqart.html @@ -0,0 +1,319 @@ + + + + + + + + mrqart — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

mrqart

+

Broadcast filesystem updates (via inotify) over websockets. +Serve javascript over HTTP for receiving websocket messages in a browser.

+

Module Attributes

+ + + + + + + + + + + + + + + +

WS_PORT

Websocket port used to send updates to browser

HTTP_PORT

HTTP port used to serve static/index.html

WS_CONNECTIONS

list of all web socket connections to broadcast to TODO: will eventually need to track station id when serving multiple scanners

STATE

track the current state of each scanner based on filename we can skip parsing a dicoms (and spamming the browser) if we've already seen the session

+

Functions

+ + + + + + + + + + + + + + + + + + +

http_run()

Actually run web server, listening on HTTP_PORT.

main(path)

Run all services on different threads.

monitor_dirs(watcher, dcm_checker)

Perpetually wait for new dicom files.

session_from_fname(dcm_fname)

We can use the file name to see if session name has changed. Don't need to read the dicom header -- if we know the station name. Can extract from 001_sequencenum_seriesnum::.

track_ws(websocket)

Track connecting and disconnecting websocket connections.

+

Classes

+ + + + + + + + + + + + +

CurSeqStation(station)

Current Sequence settings at a MR Scanner station

HttpIndex(application, request, **kwargs)

Handle index page request

WebServer()

HTTP server (tornado request handler) Currently (20241102), this is just a fancy way to serve a static page.

+
+
+class mrqart.CurSeqStation(station)[source]
+

Current Sequence settings at a MR Scanner station

+
+
Parameters:
+

station (str)

+
+
+
+
+update_isnew(series, seqname)[source]
+

Maintain count of repeats seen +:return: True if is new

+
+
Parameters:
+

seqname (str)

+
+
Return type:
+

bool

+
+
+
+ +
+ +
+
+mrqart.HTTP_PORT = 8080[source]
+

HTTP port used to serve static/index.html

+
+ +
+
+class mrqart.HttpIndex(application, request, **kwargs)[source]
+

Handle index page request

+
+
Parameters:
+
    +
  • application (Application)

  • +
  • request (HTTPServerRequest)

  • +
  • kwargs (Any)

  • +
+
+
+
+
+async get()[source]
+

Default is just the index page

+
+ +
+ +
+
+mrqart.STATE: dict[str, CurSeqStation] = {}[source]
+

track the current state of each scanner based on filename +we can skip parsing a dicoms (and spamming the browser) if we’ve already seen the session

+
+ +
+
+mrqart.WS_CONNECTIONS = {}[source]
+

list of all web socket connections to broadcast to +TODO: will eventually need to track station id when serving multiple scanners

+
+ +
+
+mrqart.WS_PORT = 5000[source]
+

Websocket port used to send updates to browser

+
+ +
+
+class mrqart.WebServer[source]
+

HTTP server (tornado request handler) +Currently (20241102), this is just a fancy way to serve a static page. Eventually

+
    +
  • will match /scanner-id URL to station id dicom header for scanner specific page

  • +
  • could give more insite into or modify DB.

  • +
+
+ +
+
+mrqart.http_run()[source]
+

Actually run web server, listening on HTTP_PORT. WebServer defines what is actually served (and dispatches to HttpIndex)

+
+ +
+
+async mrqart.main(path)[source]
+

Run all services on different threads. +HTTP and inotify are forked. Websocket holds the main thread.

+
+ +
+
+async mrqart.monitor_dirs(watcher, dcm_checker)[source]
+

Perpetually wait for new dicom files. +Broadcast new files to the browser over websockets.

+
+ +
+
+mrqart.session_from_fname(dcm_fname)[source]
+

We can use the file name to see if session name has changed. +Don’t need to read the dicom header – if we know the station name. +Can extract from 001_sequencenum_seriesnum:

+
ls /data/dicomstream/20241016.MRQART_test.24.10.16_16_50_16_DST_1.3.12.2.1107.5.2.43.67078/|head
+001_000001_000001.dcm
+...
+001_000017_000066.dcm
+
+
+
+
Parameters:
+

dcm_fname (PathLike)

+
+
Return type:
+

str

+
+
+
+ +
+
+async mrqart.track_ws(websocket)[source]
+

Track connecting and disconnecting websocket connections.

+

Stored in WS_CONNECTIONS. +Might eventually need a dict to broadcast only to dicom specified station id.

+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_autosummary/template_checker.html b/_autosummary/template_checker.html new file mode 100644 index 00000000..de90fe78 --- /dev/null +++ b/_autosummary/template_checker.html @@ -0,0 +1,234 @@ + + + + + + + + template_checker — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

template_checker

+

check a header against best template

+

Functions

+ + + + + + +

find_errors(template, current_hdr)

given a template and hdr, find any mismatches (non-conforming errors) :param template: expected values :param current_hdr: values we currently have :returns: dictionary of tag key names and the have/expect values

+

Classes

+ + + + + + + + + + + + +

CheckResult

ErrorCompare

TemplateChecker()

cache db connection and list of tags read a dicom file and report if it conforms to the expected template

+
+
+class template_checker.CheckResult[source]
+
+ +
+
+class template_checker.ErrorCompare[source]
+
+ +
+
+class template_checker.TemplateChecker[source]
+

cache db connection and list of tags +read a dicom file and report if it conforms to the expected template

+
+
+check_file(dcm_path)[source]
+

File disbatch for TemplateChecker.check_header()

+
+
Parameters:
+

dcm_path – path to dicom file with header/parameters to read.

+
+
Returns:
+

output of check_header

+
+
Return type:
+

CheckResult

+
+
+
+ +
+
+check_header(hdr)[source]
+

Check acquisition parameters against it’s template.

+
+
Parameters:
+

hdr – DB or file dictionary desc. acq. to check against template

+
+
Returns:
+

conforming status, errors, and comparison information

+
+
Return type:
+

CheckResult

+
+
+
+ +
+
+check_row(row)[source]
+

Check a single SQL row against its template.

+
+
Parameters:
+

row (dict) – Dictionary of header parameters (a row from SQL query)

+
+
Returns:
+

Conforming status, errors, and comparison information.

+
+
Return type:
+

CheckResult

+
+
+
+ +
+ +
+
+template_checker.find_errors(template, current_hdr)[source]
+

given a template and hdr, find any mismatches (non-conforming errors) +:param template: expected values +:param current_hdr: values we currently have +:returns: dictionary of tag key names and the have/expect values

+
+
Parameters:
+
    +
  • template (dict[str, str])

  • +
  • current_hdr (dict[str, str])

  • +
+
+
Return type:
+

dict[str, ErrorCompare]

+
+
+
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_images/mrqart-browserUI_20241124.png b/_images/mrqart-browserUI_20241124.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e3c9a23091c9948ffe0b49dea2b6d1bb2f792b GIT binary patch literal 70096 zcmd42byOTn^e);2f+V;Ghv4pR0fJj_9SH6YgG&e!BtUR?cXtc!?wa5*z~C;AbI$Lr zb^m|w-gRr$teLLv)zej7+rItn&@YNoDDMc~0RVs^BmG$g0N`i=0OlLwo7WKray3Nmsj&4)Te{=`3tXr^X}-;iN~(s9*ndxx&u;!7yfpHz zl)>Lu&CX8L!Qr!$Q-5W}AZgd+mw~D3@|2YG$_m7PW`bTKG0FK<3i0n?;c5JHIOnCP z2)@7PhdV2^zVOPmlvWr+eD{u!t3;%qt#+NlvE%Qvf? zQpPk4Uj0P|@V~gQIBveD9Ewq!tv_M&fnF%Jkrsbe7@lc&zHj82icU1C?KM@qEKhq- z)M|UW>>1Rv1Cg%_R5B5AXL_sOVqwf_>dWB?CYe^`@od|?n|riP$S(w&mI} zOO^)ReAHv#v01Lt0ZVNJ7!!{Lj0OGkP?x%v&m|hj$I9=6tZ-XO1-Z#xgB6a-shRpMmVBwjheoS^ z25W_%{I}_|U$jN4)0oK@oQH^X+31g_BjpY<^C_q98o?RH3cAah)qKjp@2}6&vt35D z{>)*aves$GlmeG3o`2rS!2=Ekqw_}6Kijln+Zq{0li)yRQ=I;F z0l)0@X3V)xLOPADU)nH+?XGp@4mH#j18ZCc1M2v((a`2Io|L{GUz<3Cx;7FLzWUa+ zctSb~6Lvk~%@8&Y{Oc`$&l>zOAaeG#)8tUMbhP9O&j_!en&r&>_MbH0Z#|7V3nCWu zU7Etig`Ouq2nG;dX5Cc}fD!nal9$@NDO+eiGA1ikF{Q0A_)t85U1|~-!CK`ZL{M6U zrmL-AKB6>0Di&8SV}1I*nYNz%bfA_|?0UyQ4SdP8D@$pok+=UnH#vGoBFfyO{#LB>8XFzkk_mJa6GV17>;ho(E{hOt}=stQXP73SMC1h2M{I)(MbGW5b)M z4gbox7rLgI4>Di%$7$d{S%KV0nPw1~u-)0=pXxJKO{&dI&CSluG#*Y`@4{@@{4Ir( zn93-HUs`6oC{3+l8AK7}Z8Q+zfGyXsO$({?i|a#LI?Bl{Ev37knw+(17mR)nq-_fj z4!Bk~vbr7#dEA5_^*eq9ZMRSA_@!xDKG}y+j5FbH8krRpnlEKb^BJb#avCDEa4;dYZQiTJ6yvWp6-%SX*@-hL-@PnzM z`m`!EaQSJ<^!GQU`Sdgs07$|e@m8ssj@=Mh6R5g>>@6O^bow4O207r~(V-8~BqdPq zSQ4~S&N};8`3KE%YC>`R#H@_gtdpCSLP$vN_TuasS$wSn_GszLmFLRsoa6C}FVXe& zCgmAnZ9%%cP17?z2)Al0%daQ4-^b5=bvAW6Rx%%}v% zJSlc{a}s$`365INxbyfFA4dFHk(!r3FwM=KGn=%kYzl+2q{|&DHt)7BHH%(J6RR4_ zh#sc?88vgeIapnxfo=zg-TW0I%!?la6Rhjvyd%kId-ec++lYYEJdXX5vX2&j2ht5n z%N9d@F1FgCk~r9YO%Jps&0A!qzHa)dQLC&K;>)oE#jjpOfu$5)e$m3;xo!nNcl;tj zzaIY_JeI(3NDdTlC?Zz%;s_hK#Z_vb>N@vUdWFu%cV+8!Z+QRoH^2nv@J0_eH9)|n z^#iyr+;PTiRBBB8ElEH8G{R*& zYIpusNt1quh4##`DHMqc>>oYY2He(Ia*Xzy58z_dF?e594r{+=In=mm|}hMokUv=haUdb~GZt+L_g z=MXa(IDg$YCxnQ0KK++Y!|s1mWnh4pr_wKP@fKJnu;?gQCQNGL(*_hA<}mChZwkYo zG6(7*Gk2v}Zu{LKiJ1pKi7bD^>5rx&;xtCWcP9l!yFzU=(Mjmv9a()uJC-JFDCo3$ zO5pvyZXa=fIcwGLdV9VTUTrLegNuv!qN}CF3O*`IWHETW#r>bfg_4@oOE)oU?K4a4 ztu1>TJ`IGo+F4C#&nh22uu$~k)L*?e6di51WRK1J0@O{aO74j(_m?>YOzvtVq@NA# zg%twNWc*J(TdwJ9S(Fw7^SW<0kV#*~UZR2-3yd&?x^i+Q$Se4fo&Egyw{Oj-8IiM7 za7$ZV1iYAv>}KscFF75R3;+V@+-v{&jcXlUC=rbu1Na9Em>yn({0>(u*l;n&N+k|z zTSakwT8db)`LC)T$if6Ej|BJ<+E8S%fcQO#!O`@P{O|f!@y(0GJI*he`kgzj4ji_1 zHf-wYXGSl@4z1)0fj~e+6#nqCN!Pq1XjvyExiw<>l(PNrUuFD8=AZ^b9_duLqVXYS zRgLnI_>XzBbNTO_-@huUwi~I&{!3jBy;f04;`r1UMJqWPqKxU8snyY(wXRMEtr-5e~exYI!-z5v%8fur9ys6gB z2gX#J%W@e41*7DNW%fS*GNiM`r@G5js)MkoZ%RGR1XL2CkSnc5zet?e3U9ph%ks&f z;ik4@cOp%%>8WsrU>6Hpo2<&$R!DypJD@Z;Jc98_Q(eOcw{|ifN1YQr#>wfW??QNg z)7&k9=^m_3<^SbywTJq7O7-t&5A8xl?jccoxuWT=#Dn8jty)CBn+#iHpGUc(7@kTF zV*ceHB?DfKrBVz+#;WfZ&O+pZGlcjRp(F6wrKP1YEFNt&%ML6@pt=c9@r}N4mb|%i z#AmMwYfI3;rN&3VBJ54pK0Hn6Z<82G7~rv&Bh|o7hiBb?igi23+N$IoDRD<>)BZA~ zNy`syFVM9XO~OxLLtav{f968cY`2ihT7$`;gOPz@W(1ND5iu%aA@i>XJiGb4B&eTk z7rxhkRahgQi*3$$Ky||rH687w+cc>jHh#V8akAA|pz|fOf`z2!ayK!GhbCS1C@I-kc^7?td@w)PQ{x&6TQ~)mW6~<8t;Df ziUm>Yz$DMwqG-d=_Nzy)IF#`nfM}}e7Q4@57*uJ{yX0Dp2TO)6;9865hnqxte&7DH z)fhxr#h56hATKBT1I@?7`R230T|r88bbO+zz=Yn?hIANQ19*XI#wI7D6C=NHuC3ku zJBLMCD>eX-=a(^NWTtC2GU61HHR@@L$CFF9*8Of>TP~*V1{c2t zY50^VeBqsjHtbV~I%TKddOkyHm%{DQSAT0Jxc+_I&xxmQEpjqqd;9XA9`^@jek!W1 zmJT3u)dQ*b7-XD9TCFv=QvyKod~@p5$^cD95Mi^A8^Oz768wC5KBm#8gd7AD?l*Sg zR}27fIk*T%!!yMjfF676z3VwMI>wYCa&vL!VQFVKm6j{|UqIL&khgiVhVrfEXm~<-KuF`r%8fEM{d%U0q(ABme}YgvG>6%aWh~oRu|o zd36EeFhFNZSzcaUTfs>~gM1^^#Zh1J?0bO;D(nT@W+az6NPYW#r67bjBQ7~LF&z^E zt@p9HX})1V8932hli?Hzm}@D=(T&D@q;GGb-|1hnuC`$k$F*d2IsshyA&+UH4;lSt z+uoipqsHgk6f)Q_0V(Ix)9;wC>KE9XaPqr#rrHi`Fb$Q(EdQLu)-p0wPLQ_moP`*n z7G7@Ef{e`#7_GPtZl5u%;D9gxOmc_lo&ToBEQw%eNm*W5n9_S)QJ11N^r)az#q>2k zuZP-#oV0=+;dZR~79}38DSS%T7O*|e)xIU_TR>jb&3yb0qSV?=aHME^&O~s-nfq$$qva_?leG|QieEXjk{wT7Fu+y$>TApXYJJ8DRX^mj|_R5imA(ghz zgI7UHbjerz1KRCb>zX?DY_L9U);H!RRy76D{8p(Nph=XWJRUm^Xx+})lV4*|(sOr+mVQ`83DmF)^ z#}eT>lFhGiT2CYU_`a+oBvPJ-?At7n>vdneY5R5n4{DXIsga0_Zs1r2sK?|R=|f|9 zja4OurP@s8oSew4s``}4@As$<2F#qwYR5jD>2CnB@~9BMKTAkXQG2cXgTq$!nU1ks zn}L3RLPfhvPK_G`7)q~&Q<%|Bh#WZKb8?n@waNTyP+Z5x+Nu509j}>*&A#wLiGlKBemD_g|b)Jf0so+U*pa+Fn;v( za3fqXM0kHs%qJ|`dB%0UM20ovvOClxRO5zH#ny1pNZ$Mq+Ow6KWFGLZpYrU|tHgK^ z`0Vv?lZh|n`KPj?k92o9Uf?~R;`3bnf0z{T;vR|cFVZ81=tBxm;)hI>VufqN{I3Gs zc=tL0FD{-wI~!pD3Kx;FvI@@59yad8n@ zS*%h64V^8_|7w6DTt(&=x`cd-+4zF>{nL6{5Svo%x;YTO%UOw>h0ePDPBzCV{5+_CP7Wfm)K(@ z6~z^BedP+7*L)D#Y^VA{rdVQUN6lcK0ZsZ_1QML*<&rwMlX3++leGiLtf?6Kjix5j zKkDIS%lCmM@#Wk8ra*hJz0dH&ISbs-SGkdrl$2$ZBO$Ab(rm`FjfE3~ZdTofCmW^A zP6Yj*)|;RFjJ$MUnMp0(ZWfQ?|85+?IE(E@W_s}^nx&3M3i3}qX1*N{DD(GOcfTSKPkVXrY4Ui` zmGx|<)bZPWFJ@gk2QOVYY5>SoJtt@3XsDuXEGdals$H7a3DZ&Z^n^FMBL1RySE#Ao zjK5=gH^()HO-@anUz}xFY5kS{_w6z>lJ?CL!q0cAb`k4Ow6FR`CHKOqGP^&ZCIW!I z7tp5;X&XXB^7YQXNx+j6uzJp}Mj$UXwva56eX^c2XGl#Q>>c!OMF(MePcUS@0qmx~ zJ0lr`lWL!bgx_kzcrmYzX9FMLOVi-pG)i8uUhTQbn^OQ$MMeGyO-Rl_YS21mS)D=d z@zC=zbw5W+Q?Q{k(PqPMx1*xG{(~uW!?V0|o0R05PH^-g?0bO^L96JMu1m*2S5D8uFywz&5>s~+xc%6sXiEe#?ZotA#U35Sx&6byd|2@s!}9CY z8Hy6RNg;s7i)1Qg=~7}(-52^JkE2$MHTOfNf*MKg@DMLD;P4YkgDW`PVyu!u81ICx zpW_krr-*W4THz0UxrRS?;)zYU9<03;Qbz*(8+N%R=W;=n`DfqgeckMyE?}bWX`i&& zC_(ssJ9eKi_t6Me%TavQUV-}io~KF#lD3?)${9e4YLW^Py{GJSy&naosf%aP z;WDl4f+Qj*4cpmRec9t4DaY8#{vZILI~_K>ucyp|2xO=kYTPdM>b=A%&Ch$*jFqEh zPj8f?Jg9#{0lox%n=1D9s(ra~KCR5I$;dz|#Z{onu6cqAC9V5@mfI<f$u*}lM2S(KHOpr#pP3Olx^ z7I#jCGPbrSpUyXSNeVJqZQ4546m->deg2Uvf6<^y+~{@uh=XAYIB?dS9u)kV@02?d zO{5fFbnl1w%H}71P*XiW=8s%sZ>SB``i_Z1%B(N!^O3SW4O30c$)v7qKuN!&s2&?e zO^LH?bhzDPG8X2u4@lB_hB4P232$yik zt5AtNt*7hLZw*%*kPNj^7cgOMj&D7$A5$(|;x+rLj_%9=0n@9*BnxE1J&tt@DEe2W-a z^8V7?Q^@1Sk^vTgzhq?rgR0#|hxfDy<&mmr@h5qivBfdhE&~eBrQsNWsPZaZ>Xs|% zrEBsD61{-x3_lB}Kv;XKhB0G0?%J81LYeOD@b}MKWx-dxXRgAz6=YnI=|fC#OU_kZ z)F#^%9iz&|U2`zw)7x#gTi@vCL0&60CZt1_A~sgDT6PNXQMX z(Nx(KI-$qw!^p~BQI$e&znc4UWNH9Gn#?y8*1Q%%LX^Ib(^Zh8vuLb8X1AW*|Lqxr zf||^%banUe$W{3x>Hw!MC-OK@=7O22Hu_z0WNiT7?KXC(Jmq^<^-Blj> zW2R?rFujp9lkhNVXu&&|jJMMxJ0QD)Pd-;v8dJ z(~Vr8!f&>&RxIVv`0Ub{ij6iO4#AIR$Z`jbji{|oFq|~_g zffx}7RGcT9`6QD|&*PQWf}NhA*<-GA1rGJP6q`LouE&^QVR5AqE=%S2b(TGL!3yrT z=nM}}OYTC_d$k}re6NWV4K0M3m62!Y&_iloq$MbEx8;$WF z)C$~Db?aK>POeYmiG!3$LAW(GL-z~d(n?~-dDHJ%oZfvg5@?uv%r;CClS_qQ#te#6{am3~~b>#|cc_aEPS~ZW&a|L^Q{0FSE-b$m8R^IPkCIjwV zdMK|B{tw!RXi@-s288jwWsyMyF+hty_msl~|yoL|(} z4dYM`y%y@j_DrcNX#8jxH6Hy(#2A=Q(a5`+4~S|qqKecgc}=};yA+(|^t9}e3`f$x z=AQ!NqB+Q_XW)%<=*f7*Ibv+S}8`gyTjOY znO3W8BVmw$x$2InaJnoHa+qg)P9U4pXsVh+h_hGcXNQl&*oVH+)WnI5$V3vMm#>R` zy44}vOx(MYAwsJ)J|!0&U2V%LwDry>+;#OSMY{dr%?&PHbCi}n-1D-G%9?-1a_%?^ zHcrt-=|B5@NS|J9#f2C6DyT zL5v26n`VS|%hs;hsf*(%>=!$t^3}SgaC9*{glCem9Q$b$)_fMPVbbfZF8)|Ok_cHf z-QtiNa)Te^91H4&lv~)1t_mo!oxrdw_``@LHNx;m%XJp&E-3z0@rv-H5G{eswAr+# zO|{8i9HIz`Ct}mGP=RDD&?EbxAXSPZHQ+05=6pbcf z)h+~1LtSokHc*ORdWs;5T}jG+WlO+;4BPH>Y(2~e6ted2R-{q&y)JR-Mduk zqZYHiuG8Qx1}$}rHxLrKq7hYDvD2cVkvmwP&y{;JXIcZd%FaybNkx+R8@4_F88S|f z7qQk0KDp!?Kx<{-wsI`6+l${qXr-HdPI)++E`qI0-mUP7*s)Yp_FnvHIpVg?Wb4Go zm7li(@9Zt}0d!+%_W zlMLRP>YpYY`l_++4r|>^`ROdgd<_c{8#!AB&mjvp<08}6Gv!SNosS=`==O{4^Oq;d zg>*w<0BL;Wlm$`hk(a4jdc$v4oz5$f(LIU^&hw_Q0PFU0g-*M3Zm!;OD5bjOPtpa^ zTakqREX%FdnBqb^goJs!Oj6&cu7i&c>N5g|ReHTz z0?DVMCWSQHE~`}#8Kquu)baTh)Ulv#3SDl+5O)`M6OOK&r)wIV6jV%?`gM>1xvq}b z%yI=JQBzD&DEHo(gHB9RMgejGa*|Ue_4(lujqb>`dSfA`NF`p;o?USsbz@`^#_~rK zr%BJG zH=ha20Yij+TI+D&5dtD^*-eQZ-}pc9ld*=p0a6I}UdS@vd@Vj0HYvoe2a_&Nbbk?- z7gMdg8Vw@U;7?60vQE);(Qfp1lA?y;yy+2-`X2h4bqW5vEulM(R$bOEIv&+ZWaxc1 zN(C){_>Ma6Y>Wl0YT|*36w9+=5F6%pg$61ZLC%mr^Dv{`EN|Y5mhA=KJueXvd>9s* zk94fzt~21QXoNv>F zGTx?8crDWEToF_#6M8sck!E0lZ-aWr`Xf`>^|9R%!<>-&NiNfP%qNzQOPREQPZu2H zBFL|)qSs04^6%5llCYB(ST44-2dR5G!>UuGv-4l?me+M8sf>rVI5QTfz<*7?)LmOy zmy}xR9Ry#-*^;E=e3n28E;C!Xo|$0W-?PigubeBfe%V3rEam`;Y9@c0XX4F*W8OmT z%QCM%<_5zDnAY2^)f6{S7w}WB!IyOi4y$p>pHZ0le;sOMKj^UDIl@SQhd*oqD;g^) zKxmZ!romR9%_C>U;~jNOclY1nHm}LZ!Ap>Px7XY-$BL3?-LCi2y1MefK*qZvoXIZM z6n@L3)Ne8yXIKcsF`Vj~Zf08zx6lehN!n$l_BykZKg)qMEwqC)Zi7P~qT1cAGcJxw z$H^!oMs;-Qxjj|GtqHYtIG?FlT?ERBM0!E`x7H^) z2eTcK$0U_`LTlB-rFG}rh3#9Wf?2cOb7w>A`xH(;syAT;KoTQ7FnNcz7w%R^!{5Lo zfI;xQ4UIHzk#+%-J(P7$<4W_pkWI)AE+!;fg*<%?9+q75c3jQWjc3QLwhnU#{kPAb-f(^%S?JOm*L@hz;BrUDxPh*|$$ zhajxXv#?1@(_2cTr%lH!<21hw<$0P$G!9Wb&lwTzF3`2EPSc!tnn$91{LLTj-0&ijkSZN2}11|+9))#9&$ue!dwhNl*IKBUG~2xPs*hhg(jxVqG?=qb2TBZKi*gI1d#*Mu%ZD{jq@Zn|e7le*zB0GXZeq-eY2 z$vctV%kS=g1(6FPe>ptAQ(c%0d_6hn<;h$11O89pt)3hv>SJ^YcpPj50P?nt&yog1 zLD}!^g-#i!AYAitZy86}(j_P)0xn0QUQ?peCxLOGmxgIL0KJ5I8S^#$rJj&+eqc^I zq6|_|lY{|IH|;7;&)*M~za}fB-7;ICzj+D&z9nBVw4A(Vo4*?PJv)PmN;PF#{THJ< zl0@Ws_Q_4XTVvXKLm~G>$1JH8g~-l0>+`b~KA=($4WdY;DPHI#%;T&Je8~;VeVhrT zDIb1l_B&2C)46o~@)7WlK0aJN2`Bfbha#ZG!f^uVHc#`*$NItv`V#OE1f#IbHGSm6lh1@3IR~3n6Dn#vvjzo2?wU*KB?M!!0gv=8MCrusMHhxUJslN4=L?B4oA2zEBl?Cr*#2Z9yWJI?J9tsgJHpO3sYn#* z8pr(DAivmv-zHr00=Z!vG4#@^)`WjC{ahqe)KIC4v-9;0Bv(I)hZaeP4c~2e<)Dfo zKE0f;AdncKdZJ@8_jGWrDocG)PLrsv+s=~#d_5ewnF^R5=5`D$?Ve{AZ$jTJq2k&u zdpnlus`MBt3cGvc3K>ePDEK*MM+UbiO~_{XZAkY}glN!@C51Tz|hoRvpas&1%#NmE%{sJ)ZQ z$dr8Cr5NoZpIcpSjIo^c`xsd(f_iltF10wqx9`+My_5DGy#kv)<a0B9aCU3vQ0PcM0g6-N{-!k8g;Nllu1#Zqc={vEt3ZFiOJL#mHN6V%u||F($D5C8Fn;`k zZ}@(DV9lV~(kvANl;6r1lYXSlG2S;PnX?nr9U&$v>0#fZ|V`pnoVTQ#-zIyk>)}Pm`YSDekS& z_N}V+kECXX7Pu8$un_<_Lbc@igSiZ$)Tji22YV6*zG*K~=aMk4EB8OxRMdPsDRr)yBsix3yJB z=!lGZIisnp#_;hKWVCIgiYhRf0GIsxpGQ8*r{lG z1Q%2xj>%1o;{ZUk8SyGppwGr(l|Z(HJ?xuzIyY-G1Ntcd(8Aw;<7hblz3cN6s$Drg z0H{6BIM(isww|4YqAe+AaZ=GyzON-g0D-g<5yh(d4ik{f z*a#bOKBEQ z8wyikKPMVg@tzy%j)AL7yJS0!`m&WMzJSVVb7u?R`BHtb zxP5c=yODWA?yBwPAj7YDAv=Fs2|+QVgS*7gLasS_5S-ykKVhi^S)9O^F3}9!c5DrhN^DERE+!|*h@FNH=O*LQ7>dRW$J6{%DiAP zYjSy31_dW_a_nCOmzW*f17t<^(2* zP!n_LGM*=W#7A*tfCSkEnG0$LKYr&Eu-F!Lww$q|eCvpQ1K4rHUa{*A0jl$w^631v z;iX=x6Bq{B<_q>EjCJQEKM}OCS$GwJ$)M!y0To$D#~*JBZy)Oy?E|b`2y9-c_JZ;u zil<&%_a0kzB}1Pr6Ok9gQ&;Y0QrJEF=g)?sDsOF9%a%%PE+n@2)0el?rC`(vs&;f{ zC!1}lU;so*I=UKgF+;)CWI4&n&l+V!BvV6AEY{1l2S|FPEG_`L+w9|Oj@!JZ05K73 z+ZjEhSzDxFIbQtj3Hw~{TdT_k1Het)Osoy#O#;X}9SFE+P;=Yvy=S8 z1sI%D$TSO_+SX!tbX*0)P(#M`*AnsEm6g1_gpZ=9`IMgr-g}F#UDJxjg1GFqlM9F1 z2&~2jQJp&;89-YP`^rX{NChvV=n8|pQ399Q*4wrQBG4ZW8%cpmbJ!@KE}WpRF-7al z21Tg<8qem4B@l4TZ@0F~d`S7F_!s8S3QRHC7CRx%l#%jm(erS~zSJ;~?zMB?j;2T8 zAMKjqWu_+e_RVe9BCjkt<<4QrWLC52sl=*`^so#@^eZcJxaD}AbG&0JUu=-et>80g z*Du$=&w~|P;wkr;3Z$ym9Uq57a?9@we~F;TQA2mPabB28TLsiIibD3{*7+5=}HqvhL4=( zw`+4;Axs35}61$z^I8%IlBL)Yue_N+$_p-rey9l_jvZJx52eB1LfS)K{i zx7`FB^%*q}M+^mN8SXhwE|z{29UnPfvjNUE@AGbgCzT1+5E4f{L31~r*jHYJ1=oI8 zQKIBSgN;Lz>#U-@m`aR9bd6*Izw3ihavjIlbFmExhpw_`tZ&TWoxCny7K!ycglC^Eoq6#SM)5~o1K8q+4lx^0~n}G~M z3^^yYZxKJYa1KJmzTE**RKaaC00Z0Kq=8xnybaoBRP=sgGU=hR^wi&97Pv}|11HDI z`HB~ZW#eQ%$K!^YNzWLVS^XNO=5{?$32f7b+`~GuDSxY}AxH@1_0RiO97?NNl%<7D zHEkNSqcB^>xt(F&F}&D09!S*r<;B_J?#tUL>{FRZMu#;h#+fg5{=M^YdyEjufD%NaF-qtL{{Y(GyK(O;Cd0xLPT_>-h`OvMv2rgfww=bvW6y>}*Ov*EAce8E~~^suWEL ztetYiGDixn`KkKPoWuI9&~pkh1lCp8^J^!^E`1%UPnkUu(-|)Mc~5#C^jZ?J&+r^K z;V8D`I<04%j4D3h3REVFkp+FIm!$C1l$Rg_1wcOV!vCt|ig8bNg zpQ8B(i}=1orTfHM837cZl%76hd+RznF%A`7V?Aj9Q?|24pu-&!(mMZ|&}luV{; ziU+;_%zo)5k2^jC(6g~Kwm%a#9^M7Te|KB;(CkE#Bs9NSPKL)G0tKCpz11 z|K2&ROItm%^7@n)U~{Y>ChGW&RX3bo_F-}rm1M-qg~rxUMTmu|0UW~&x~1mMb@Yo^ zGBZ-5Fg(F#q3f*_E>0bPFUae#rdTNm57RXXWp9bE!j8v%5!P*LA70cPGPs29=Ln!Z z4J$~M9azqd&$c}mUUkjEMp(sWz*#1e25~u0bG&l%$h9A$aZ@J#iRke{f+36@m(L75 znRocU0+E@Q!?+4Y7&H5GV=}z)!C#9l7%=l9(%MepML_YYlxcF^3bGUTIq^D52ljM= z8v&PJ?Wf?sG5diZdSN<=8i?-1O{KN-muKYguyM};V82GmQu`-_WvN|P$}scit{%An7iAYkt)m=%W>5Jq>3g_eko}`$IsbPgf@kjk` zNFa;3HD@f@&iusK+{Wm6Z>zQV++F)9kENYS52s7Fe3-7I16|!4Fk63zI zx~GZVkAsU%Zofub-7dC44kx9GZ+faSV^LXl4@yF+8^*yZnRvT}y;2Jj`*YCmF?TV$ z4X8$+Xct{M%+#qnyfkk#TW1p+S z;Y=`nEj|f*-z-nn)8BKsniP1tu;ZPO#M?;r*Uo!3y(Kd+YN&prcuvL=qc9-j7|q9r zocgi9wXyKKL7Mz8QJPQROu9|)gl`IOSk84sOB zgr09wlNt{s1jW4iV@!KE7vUzkstfzwSG|5EVJ3cX`rA7#6V)tKFit{kuwiIK(0YS4 zZcLQ~W@c`I1ENzD?NGZ1{nd`QjOb*mzVf>qnRJo8QpK+v*7ETt)`hh^{%E8X#h1K~ z3D{x}v#`^UJz7!9`3!DhXQI1S(34d5aSJ=<1m6k5zQWZNr=X6f%b>1Ankd`FbTXZ^ zVCGPyS9ezx2St8G8S-LR*h}eOart6>F;zMhdRFYH1U)|TBl}V@(p?Y6d@alPy&9w{ zARP<1C~OZQ4M11lc{f=;$dD>`hE&L-AtL=8miEB%zS5#KT^KLor7QhAtJcDpYJ9XP z$=N43vv8qhVk57p=)Kz7w7Fb9nHI3v6s4V3av25Pl!MDL*p(P)S7OYC@h>(vWk~}* z?X`PiVc`2fqV3^}t*yQ!V_+sGX$!Ety`{4J?MT<$Ef;{*>^Zlb{`_kS-;%9*qA}g; z@z)!&#d6O`B1R?jFyi1P#6;vR;ZE@B>`JtNz5sU{hC)@=23q$lysyEpil2Y0!(b5oJKox1n#H}HgXD#rxAo>h znTgjYwmKMSpT;e(zcHuSyzw6va&x#i+4Ehnho*r=R5?LGnOEeC0?dW*pO(S%OKckN zD1mrC-;MiDSR#{`0vyn@1f(60#FbcV-EmS{J?0g8FbtUx z@gTu*zwA1r@m4;aU~tE~IT6Rd+9_D4HcfPXx8CP7iun|ynRd?2OjUWE_I};#Y3}B< z{9y_zZoHw_QC9$|Fz3U5MY%km6d4Z+XVRL!m&kVdZjSa?;ordclyyEgiVbEg zV)U!N5-U2@ho@Qa8>|1CVFq1N>@Gf_z9_tzQD|#8w3Os}MPZa1qteHxQUpDs@n7@K zil^%**3hu#E7nnugA7u3UV?FF!ssDP{yeUPy4&%-KH z?~qJS7tGfRoejjPqq@|WB!m5lwlLW=0s~npdsfEi%e*@u?Hqid$=6FWj^K%*bTwc1rh} zaVvsHa#8N$AGuOG)Ck6|HHdF;jwW~|l|05nG{-woqedAScYaNu6X2RfQiMcgT9#hl zop(GgNQE?e_~vMpyQT59%O`nC`Yj9C-%e|h6tiC*?CgLJ4Zb{$Kb+>styk92BU-u= zwr0rnrwHn_J*rh(+#FRbK$Tut?Jo}{mto-53d?(MGD~Y^+g~7kB?nanyA8FSM+=gm9kwiDx91)Gp!H%`R!!{jJcl^ z3-2F&PEyQ28+pE^$~9Z}8$=E%3aWjAWO$Twf}{UlrIL3OZsv7&4d|D)h9CBv85CDN zYhRh;vGjOuo7AV$v=cT6&KNy}_DMhrpjJtxpMRii+;-3WMET_7>Fo6PZorqWSwb&5 zZlkA3TMUsmCnn1tv+18r|$%cATN1Wus%}plPkENimWhq9r8IxjN!^a%5rn zs~TUN6HOd~O8j1NbT_mVqICrou@v0<0r~Z#MWZIeoz2DQwV-ek2l}Q0>bDI^jlM2U zgWZ&+-c`hsR7|&C_~YW&h|B^xX%>QH1op?jGl~1Tx)xIDB%fY&lxFdZ^Xm$;(mID) zIDo$WuqIr8Y}l2mBrzxd_M*W@<0g=aaAIIKzD_@;$uEx?21tvG*7Z8Mb?;Ofr!B>; zGO4Rm00~^`vbTj?p+%hgJU5-OMC#PijPWEgqgpX=e+IX8F^@k7VI;-=#&ucEDNstYh08Z2#K zw^>`thmMk((KunrdI<>&266 z#W9v$Sz62Ck_dfQvsCqCm@}uxc~V|5HGPPh+QL)~esN~aG=rpy%$#l809~>wapYUm z9Xw~MxH?YH^d&*zUZ(ayn%tsYR&VGQM)26EY3_TU z1pK2xZSZ-w4lE|%kJs$pJz87NO=G{Wk=gT^$~HyVu66#<9~G*pcNI0rgg4`o#BV#a zeC;~3R`j??Xg#s!n=B>GdK;+HdRMzUFM{(N4ln2HWBGj{wo5P?qmaQ$E7;bHC6l+N zRCW!2w=hKSl?!&Z;#2_VAliJqea5k;#lQyh>C~>TmrkJL0|Ql_=SF*Nb!HLw>S|YK zRC-5(TF*!Kyn>PGWT_1^||bAE#Szi~gZ{gy3 zp4tqIkI=)n8d(A?lX&pNkrfzrY zYL?u#@6{%Du(4$qFY!@P1*r=b1hzFagoYbO;lsABjQAW^PMBno=#cPft2ZT@nS z^}IfA86)5`>Pp<(3z0hyHy-x_@!imWXi&mLoKi=kcIGD7XXE#78e|a*?es8ee zdTd}RXk{W5YybJuWp~}9C!zPXVsF$}eR*8eN+G>|<6S53?&XpXgruKvqKSl6uXO77 zlsf)|w+~66M8{q9C3$62fDuE<2mV%6ZGj3U-2=&i{t?8h<-@yELvK$KO}&XxpOd<~ z3!M=z`p=q_`W>FTMF#FJc6{XKlg$saYghvKwYt|IFkbh@?6mI-23o>QQ;&U=0V1C- z`SxwlLTwr)l32IzGsBeq`boy>D_`p6tih=klO;gz|)aW&Kli9O!A^HwIk zx}vQs)e+AH`QoXZGd=6w>PH8rlpw zr8Pg>X$cmzhU`5d-&KdBy*=Kj`O>(*)YJ35Kq>jAAo{*IMx9g$K|YoH`0&CZ_~N8< z0?sC5{u`FZ-Q)5#$AZE5{UP7WO==Lmx5wUW{|E~f+y0Xj`8&wBJ{XJbOm8u9wd`j)yZc9!qPqoel zyMEw=u|tT*F>XiOJ>$z!zi8WDcmm5x=C!t$BM0fvbYVx)!1FZMMCTI`cRqcdZfDb* z@0H=cTLP5-i0VDYE5}aqHlLq?NNKJHTIfozVCddnds-+Hv0>>Ju|D$_tCLYe+(dQ z^?4eblb4g|$7jdC^~0oxq<{LEJ%7_5l8_v#(sGUwGw9E16^CzfW%}aghVSOEM2GX` zjX!pbi1ni9aJ`svC!C)$0wz}H-jPvr`ok}vWY`~k_Xec+K{2S4$Xf^9kV`&NKUw8#MAjEp= zFWgJo#i|`^3W#ANepk>6VoVMrPW}CPr{VshXrdK4CMOYD@|!AIUc_m4j?|~M;Pb;! zq$uJte8(>XmV<3pWCXu*dra6;Ib=>VH3)0>OwDTx-s|Aj8Q!Qe?)x}AZB9@QDsG0l zLa^y4mo7r#kc35?rRL^5kjv0w_K z?#Bs^n`?l$nk3b|pM;o4qafkxDf#L}q9T&HS63mMHND@iUPocxAmDw;ETvdi8i(-6 zv}PPEP()|`bn{vEN=h+tY&5NZeG2FpuV=%AfjSR5`@8*NfhOjc!HA5|I9vZ$4a^!` zCuY;V6w*nJFQS;jD>>oE@pi0PDv@kxI5!hE=Ndw4YO28RK|B`?4du=)QK~>G=a5qZ zV|k8la$9rD(F{i;GEpOu<@$Ix0x6s`76a4rrfXWE#_&Jr17T=Cib4N*+JS#hD}T!A zeyeSIT;fl6^VkhuvT!WIc|@Ewa_%-ZoZyRZUE}s=R@`UxhKTyGW+_AEk<=)w zc>eiB2KbN8-kl*_37Mj~kaI(?@HDLSzsOpP#EbJTPFXoJF4z(pe}5tNx+9$HUJ(GE zo#G|m7@W0+d=eH^P|$9ucTv@9wmGS29-C?JnYdp-7Blw2hq&I^$jxKRPFov2F*)mt|U%erBRv}}j4%S%qKu-c76EH#d8K}a(u~JV2v{qRW0q}yz7hPPgy;w zc*r+Hg&phLM0Ck+F?1#D)|jbT-`JRjpf&H13{YRrQ`(|vh$W?_^uG};8hQ|dnIRwVk;bi_!!-LBK;#cQ= z*QfQ|uImJXjV>7ZIGkNe#Ikt5i~ui`#Ik@1qhl|37qR5`?;Fkv=LKYob2PY%encH`>H8E4QvhIXNj7v zrk^jX{oLFL=BSZbF7vSh{q0$6bb2i8r=gjP!<-uy(Zb1*yjx4k%hIx$W|~!w&xO9v7`20%hh%DSO`;fRGZeNijc6I zWN|fz-^&SqPXl8+=d>eb<84U&Tvc?sukYXH)V&wUyKudpd_LwtFjJr!MEP#diUn%H zn;%Nua|9 z0m>&k(MZf)?98rFvXv7;KV#qndyJpAh`Yq0``)x~ZQ&#uo1+6}Qgy-hsY9sqruGY|ArZmx%Hx=>6 z07rF(47^{Uh*IrqV=9+o^EWSnd8QyaK=8*J;+!3EN?u?l-%VMQ#!gbp$$&X3^tzsZ zu6fU7^%8qpLR3TlAJ`1M2)@<_YvJ**y|koFs55BDZaCYISL6NpL7SNycubp^H+UQo z05CnMDN+Mq42YV{Yk80W!7xkB+OKaqjqh?A=GK&*z_cjr!n)CGie#s6k&)nw_r5q# zRyP+F&gOBy6@sV90EK-sFr?OhJI{^PyPLR_aG?BgU{{NUyEvAfslEbt5r&|s#cJ@* z?HJEY77$!U93hMJ^QGUYG42&kbz}WN=~^}=;NfxNjE@e$Mr`2gdVKM@k=8rmd>R&a zIzgNaw!`9gvK>Bc2~$%nB0{P?qeF<36z}b^B64aYG%)!Jm`knWq8) zK#E1z`ZKi~o zCDrCHA|0{Woh)%^ow4x`S5BEBxPobslKubqA{Q0q)g2YOG~Jy4e21csjf1~pW%fK! zxpgA=(QngwM$eN4E!OX4I2^Uhrt6sc`Ly(^S1$Yp&ytP#nX*^ZRU9q&;TRX= z*;wop)Q*?RmqKpzD~)NQmFgncM%@@uNy(9#+NXdKE_)E;mH=H5fbH|Rty9DHaJ3CT zmA_ub>eau_NhEK6&5L!U;JaqCP!Sg&3(eWUQXvd#RnlKK{PJnib8}JRWD1$C-CO{* zz*4FyJM%)z)Ol z*ytp=jk^P+H;p4w!G$X^7jKf6gj0gbJ~NqS5byKk@W@a&tUQkPsM=@2ZLlrr@?Hg{<7W_0015bY+V&f{1S%SEh3dYXpZ)J86#g<|XW!b~P=YmtkW&_-n2S{#0`zS-$NNNN+Xak@S4b=v26 zb8R5#BdSn_*P;=s^=-#eUJv3CJ9E3brdVJ6bxK>K#NT}CtJ~MGtNL;XH5e8-q{4+~ z)!RF%)^%0JzJbr~VA9;vv;}hp!qLfYfFZ0Gt?$6eN2~Z<&Da6HS)Rqd68UncJ#Yic zc{}o@cT(d2O1r~XiTU|Zv3cC9PqfG8fGUaJ_m z4VR%gbk&17aP_g!O(lo@$rHb)0)=Sr-j4UbX3X!>4w={A!uDi;qXPiY^1~4d7k`7} z+g4h92FAuBiS^;7)JOa*o^t>2a1e6g`rY0^4-?kgTyp7m*SjuLFwUo(W)2Ch3<&R2 z&1ReZzE$c>%ffW-9G(7HPdW$oQ41wd?E5e@G)Zmq%>g2{J2pL;+i{Ko)5GO)QG1zt zphk*P^$pXKD03*h>amf4UGn(e+%;mv&3b!<_)M-(`*o0j;>>6m(d$^;&Ij%(kFMo~ zP*K4>K4m(J?1P6adpZ4tJ*|`K3H>zuY`pZwNxi6CgBp`*h&KCi%IyO_2;>o4|K6C8eGW4 zg%`hxhrH7E(fo^^UZedWohi;~x6@Z4ifh#TkL_2*k)t)Z`?j=`%$Bp&2&Q~wMUn!Z zx81X3X6U!ATsqw&p7f?2@uoMu_3IcUiv7-OrXsY9OCZFuLJv0&jB#3Mae`*<1hS(Z zn!%^_Kd|yAj&LX~X_$qvgP^ut=|a_s*40x{+HGbaum`6CgqX&aPA-^jn9#^|4M}b2 zG*60lZGRmtCouY$KjL)LYHN~uw0dD?d`YgKvp>RMG|Dlea zpw+bH*6NSkmWJ0k*bgkGf5nsc%!R3>Ocpp4*Ms?ZXLk1Z3frkT7}Hg6``|`4IeHT; z1XwwCFa&8?t;G@gI?L5?1y$m)ITUgtBO`m>dx7Y&1_8u2(LFw;8nIFk$-QbGw@ne* ztB^Ow$h+hle=?-SOLCbJms=r@^oE#RlH>T^@RuP0y2yVSHm~E?&XspE>G`TMRg^jT zcSI6uH|?5XPd(wE8*8pr#!hBwB!uSODkt0TKQS! zI19vxu^$Sl0SKMDl}PeKCVX0XM@dNt%`0gb$6KASE(#_lXPAXY#k2?>R!SUT6C0f~ zmspkD9=yOET&5@_V7UUYqcndjCGA3nyR$<$CI>AeJ$cz%xLkZ!ZmrGdq-JxywPxlE znWRCp(avFj7OCI0_eV`ZwY9MZ$Q++ zN`7~%XddR%@P|oQA2?_eG8^n4WqNBd#KCz2tW{6kZx7aSwxuQsv3i=?^JU+a`|{oN zl*=LCXBq$7k1*ql5p65Vn_o2EHn|QJU#X?fy(VIsOoY=ah8_^GXR>U-&dqiO!>Wj% zt%`@q5%4I1BG5{ccBBA+iLS&(67pG7$H97u9!_Ap6Gv>Nb}jxt5oGJ-E6F*~#cn#X zWt-Dd6OkUH z)UkLI*65Vi;A|UObLFt<-$YZc$%C6?DXT+|PuD>TF)|Z#*e{aKkMi_Q%z_LyzB3Vq z1i*k59ECL9WJJPbDYR{Kz?41UTN1$kI;<7^PI#p{#v+>S1W>0L|-pvC*o4wqsvA-`520rKG4D*7mHuZ=*F#cb4G+ z{XrXFtZd#(C$_(C=#@9fCKJxmis-|Q`b)Gx^*Jy;-VnO%r?{ha=u6Jy3aF4f8B+n`Hzus*ZxFxo)LqdDDqit z3aHU!h>@a@O65w`B*l<4Np)(AaQ!Jy8SOSUt`5SFi^Lf3`s;POhAA!L7~8o(vf=<~ z1-JLA)eKNekrr__IxUsKuQtG4WhVeNil3q-lv#n?80dE?;4)PEgHPVF0p{G@iWbdy z0OAo6<8w`iwCl!|3Xfta`5>ys%>tjDKq|>?>P`BHQq!8V3A2l337O8z5TjpOxvhnD z|Jv2xISbQOI-pjOCZ^VHJVR09n_^=We1@{3jVW%Kbh|Ew^`f)$iq_i6@aKM-rplwe zx!JYNCKiD8ZKW~|TLOzF^&iO|DK_A5s>e;GTiwY3-7wU3Vsk_*mu6Lq>~%P#q2qS> z`}V5NHf4iU(*1FT7&X40dYTX=*Gvye$bk(BY124f7=uXF)G#xuiGfPXhT1D=FKR~p z_H5(s_{YHN44$`tIm8epGNiWJJt;PNXG*S!eQS@J-XfOWVU)MusNYR}6xN#}fBsva z9#(DmKF0pFZp>F^NVc(Q?_dpTZR&JLsk<3rBZctwFl`%xNC>mdWOl3+QEeY6%F8NC zAElnnh*h~BzXYh#iYOMAT;Z17*Z2CW;hgnP+fsEB?`z1bJOP_mC3I#0so>a(!v8X>2T6KgK`vaf6nGSSBjd zobF=Ot%t3ee`p z4j2=TWpX5FKCtht7Gz4aCD#|q%%>^=!1y%wPX7$olYsY^FZEJ+s>S43jrnWtTL(B( zq>c+A0%M215-AmtI#&&}4p-wGT9;ajSfv^RS~x9kf|w7RfA$Qmn=v{FF0KbF<2J9( zUK}$eW=YG&?oXp}*iCtOuV(ugJvVny|841O{uvfz?O(1Lo7}UnUJtWMNssFHZiZ_= zlFdH59!&rzjXFD(k(=0*gPzR7i~NwD33`J?4KwlHUh%X=Z79^qYx~{9TG^~XNRe%; z$If;{&UVgbQIV+ukMQ~_VViL$S-IR58vUd> z7H1;t06^d9atqxVQ<~*98Q-*pneA^rM7Hp=$nVW1SPa~d>9sWoJeWpHt+QJ89EO); ztagB#Gp?emi5bhx^ zu;6kp;pzeAp|7|K57)W9Jxt8Lhkz9h9*yvM+ges%X{{EV^aNb2P0Q6nsgKYjPwsE6 zr7T5-i$huKT_b-awE6a2ezWC;_#k_LU95J?yrEpcJGHu3wR>5!}+_>n6yC(SStbko8qg}eet>+i*mvW@3fZ2lS=(4%l_r7-rFFm zx0c^n#}>%E53&+dvh93h%Hc_D_N>c%DVn^bWWzAx%YCn|`|Cpm(yZ3Z(g%BM=y_b9 zUD@&rz@4m4ZzB^PHigj`>bmA)!*_Ub#`JdY6A1`0vjV&Ji~CWX-jviKby~I8ewGJX>ldDR)pAGkfe{QX z-4!>6+PYMe4PI`?*>_f|qi#go;{OqXoZB1h-u!QX4wU)u(m3<>->Vpr)OoGzzk%Dv z&L96YgA$94(U#276?fk} zl|jQ*_4(_r?W`wtwv0IrQ(w4F=J|`kipU+0}!|he(rfF7;1d<3(huZ%7?501tO4^=hqA0!j{$b_{1f{TKfSZE> z`w0eCgx|Q2*r4~Q=hz)@fw${C{`s%745g!X`_T^TIc~UgA>LyI%`6mYv@C zD?&MkktrkAcj+~gsl`*v<}uuEs{ic;IM^Ue_v_Y5Y?)3sOKGvh7`H!PPq)iiX21CP zv6QYc@50ySrb^||Y08g5t8t@{${L}_5$v;Q)c))-=shuVL{`JV^TMNe;e?rquxayJyN{n9 zIERVHo}Dcp{|#VAZsJqhY;!q*-7AZ^R#Gyaa$B=r+_*Z9ZL|$?O?*LhvaLEQ=Kodi zv){f3ySnkgP@)N;rUyI!5t-A9P@|@X2Y2|nJ6*4g&BcmQKy&(V9fOGe{jAp58c(yC zk>}KRyZo!$mzSrf+|wm~&H4gb4CRL%;yvw~`J2rWCSKg|U#R#CKEbvEzK0@}W6vXD zIJTN>Jep*2YhlXoz5B4L)vPtx8G^s6BXs*zUk2casjnSaN8)muYS$ojy5c@PG_f7s z*Zc7}W->7G20FP#Nom6J;TaB*({FC7zH+VQlkRQz;VwU5ydjjFq;kF$55x9p(eIVw zXsaCy#$rGY+=FyyVfpd$qL!U%V(B^Nn@FoKdPH1R)PC$$-Vy-X(Hgq?0B8z==M!ML z@74Mau`>bbs$Hj1zmUGO0@cH7XE2iT;okh+)dgG_zi!QW>A+W_UjcQU6-d6U^L=aI zhoz*4W&!z|z9B4B*bQ#OE`ntKztMT85{6x;QjISoe4#-I~SG*`IQAx^#aE4#OCbI#*Xbgyxs?`@n~E0aWnL+JD6<=C19TxYAYo~;4d?!a+ z#VD2o(Z9zPf2a8}aPjPOxCcmNY{XlyI|j?Co)SKk6i5!$mn1aKx6OGZ@=w9T%^6)F z;;$$qzMpshb>~>|vR9{aZ5OyVcuGYh8N$rsF*Y=v;PEx!2&d7}A3H96$-ZWOIH`=J zi=+JG5q-?TG?%ZyYz1S3g(&EfCE$ZJ@s9 zH(N4)o2P;P1o05sZb55yJ_ZGq<}wFgwPS$B(S&d_e|df4u2_6^c3rPVDp$i1)z8vc z<&R88BYu!RUPORU$0AE)hidG#?Xh6#34gW^^ZDMeu+?WPoQ1i0;Vb1sPgX`lh#!HS zQdE_h5%=moU7$IG4rA51P zPU2NZQaA%x%XcZg{|?2BZH{|nfjh!OhRP%FJG-28&WV(Ml0zb2dJ(gL1hbz{930Z& zsYy;-^e z&;X#zTQ}zQE`Rbat`Cm6I%zpD)p3*>1h7(5`MpSP7;7f0>9g1@RaHc2)jP5|d(9@I zxs#qQAgm6bekA-dn8S@GlwUP9i7~vQcT?o~6z|g)?8?adQOo1DX{m(G4n7h8;5f8N zhcYX`Oh^wbx$0M(Yh;aFZ2V;OGqyy5mcLf+p@`J-D(EFw+_PQ=CSStBq*(%d4wgyC z7@Rqvw2dl(L8JQFoY;q8O6xW{r%&?6{VV< zca0jcp5;-!d(Oej_4QQLkC|VAtg`FLcVM>}|?HPww%S$=ii z?if{Ji+9g+;#aOdX0+I`pO?5fh6xeeAzUOfX1{PjHTGu7eZ>Z`cEJ9O}U=e%bpRb zu=zeznVeg49UjF~elNVekW!vHwgtL0lKwW0BX$ER<)M)ik0Lm$w1;uxC^=~C6uUxB zJ zdpc=LinDWi|Lfnr`0@&bu5Le_oU;;nG$nwfG#{Re2>@6N&F<`M?0r2CmT{Ac%hRY` zf2J@kz$&X|^LyG$Nm%uscDXu?4#X>pVC>QPnXMk@)&+C&yzCT*O0vYYtxq)VtUn;H zuxRJ>^mF9jU&Z2KMb|K0=(ZYP3}wdU^jdCAQnjNfrStkyw(*~ok|k1RzH9$c3FdRz zj>Lu;6QnIJZ+qNZ@ZS5WSDuJ1^afZlAbMUPbJ!@wZGN|85jPX1A-$?|-w|Xgsz<(4 zGi!E2XIX!RtjpmxDlDr#;6DHZWCZ_2^3ok8#~JaspJL(%0fIaEgo_n-p_xj0+Mtk( z?Wo-}eOUFhO8k~Y0JT_^LAR^uzI6I|rFKea(e{MiIzIrP)Acm}D$bkft!$c9TbF&h zz+@6soBk{J6q(9Qc-0f-!J<5;%j>9g%mRV4%M8VuJYUG2gy2n^LTy4qYnzz?lvJ)j_8gmTY>i?caG)rXxJl9hIw*6 zi;09Y@89Eb2Yz*rNV-rJSr2mfa7v=a4PJN{7Cs8>VZF}79irCniyF5ZK zvQUf2x9+R^LJ9jA9(`o@W0(YZ-T?O)W~Cl1{!7}asU*ZVJwaQ%m+-cU$_u5!(rvu< zLtZbZ4=>i4x*Q7HjShV2&I!DpgUt?P#}phdP9)((Y<^Qw5?8}yjCvM$U6NYHm@y^i z#e80EpMNX*Ji23yq`fDyE@$9NpttOAwjtU!9bR%c#Zx&6zq@^|Aq`K%<}jg&B)MOW z*8Y(f)%C9DQ{Q~S$FfIH1qUgtU@kW}IA^be$fw&E%B!{e^+6Y59!dUXosR@HUM}3P zqs2ahgVK!89>#h>8+Vr1)0lvKElzCNP}ZlsM8wGac$(9KjDosn?&9;AKcu6f&p{8& zTdgBO2k)E43-6HdQ(LOP$Np-Y`d$|B1DD<5WbZ=>zM9<*(=rbH5)Z!E(F5)JsQfEZcotjkkH1jUOLDt4C|Y25E3r9` zXE>=L8DJ2wLH3EC%J$Ab##Ph*qyz%3EJr?-fFFX3YOCrpg}@ffa&4r)-FcY0KfSfS z#^`ayZMHZmDB}@l1q9WTlPlFvv;(6)&j|j8D{OXCFg>w}>DA7(NA&1_ouxu(<8tn{ zJl&*P`^|nQnRYrW8Ft`6tLI4K#g1mIzrA_ZYw38X;p6EqwEQ)i(v;nYp9DN&{n45~ zY&|*YVxBcJgPev91zBY$v2Rix8$D61@V(m@Lg8)}W$2cE7iq&TWpGwuW)eK0ugUXR ziEG=|28>+Bw3B)Z9 z+eZm(eVnyg&Dd5SFE`PAn+-;7qo&^e$r}3*$8_OVVSH&rc@Y~@J9MwBlzt`cL#kKl zTUc4<0{rGTxbh{Kb2*TuKbDQ032i7SZ*Pq;VmHGKqp>=iVs_!!#A;gCkyO%Fyj3~q z{xd1IV%w!jz}0KF_Mnm+MW>Vh%&Vo7N9hf2Any|qw4B6GVq@C>MsAFmYO~bdCML_C zemd3nx20=WGv_7E_dpG&`XT!)62prw|A(9EujTbRo8bUry$bKG{P#m2^>{dwuROl) zQyI0`@Fs+WGQ6;QZptl^{#o}BXtcg)*kJA0IPF@`SZSVeVK8j&v)09uS0bxnVI77p zeGKIp549uX@I66#eYV{kD#r6j{M*z}WvG&^Dtwg(-&iWy_mJE;VxZtR#}e0iB^#TI zMvLo{hcc2)3;>hEoxeIwDg|?=+shMJYqwb3t+9j5EJyUO)HCD@1Fp51N3WJ21oHAK zAiZV$$2+Dq!&!ch)4uimnDdL@X2G9mo=0~&F6P|+TzWikwaBc8ZjgRuLx!s5XNTq#cpz}g)<%k1XO2Pl;R$1i1Gd?MF~Jp0C#N+v zoSNP$WJ8wpDxsz9 z9HuN*U9y~Ny@DIO^`n7tmiJ<*T?7f}^Hi|&hQ*fykh5B?^Oa#B%L)^?p9jGlk-E*-6A`T^cz z%S_s}e}}L}`*VI{-7Q1v!KZ;{Rs(V%5VVRQ4|;xkel2k3(iHqH2&0~pCD-ROl99Oh zH?IlGXfcml<&3=hBbdD~ojl+7TQ)Pbzm4AuPAU6ARDCXaxRrtRVUZEAPt_}uxhg&jZJ*29KRomp%9|G>CHezd-SWKoa zxeX9da?;bw$yU^DHot^+5}%!Qy;mzPZH4u7iL%Mjsc20ZxvILfL_uQ-uB{GxS2*xF zN3~S_dbCAUYxh^x?_DAqyq9@FHVTR7Hg)E+)CXGr&>BTdvy`~yFjBYqfqfPmeV4dP zrlBNkX&qvT*ZtC!E&3s5=8(%2WFd%t%hPG|9XAS0QAz6@^?iPWsUBQt+;Az*6|*f4 zp-j6C5#QMk5YOb*-{b)?_Hh!6W#*i>YbjnhX^B~5u}aGA>T+#HFcf!Bb`TY{=(FPP zzg?7OGmMR0`)+Qhv2fE02R4bVl_~#&Iy0cfTy&@sx4JwSlvq0wGZS;LmAx3|x<bkXd56a4pt>eNP?C)=pvxL^1^ z0gs!sJjJnxy~6^Iu@g{#Kjt>iWX{EX?eK8iBL1i11`-6&m%7eU7V*Q9qkP}dGArdm z74Lkch&=LfmBziBNfvtL-^tN>ImS{}Z<&Mfpqbdo#-X|7qw3^=pV4^??`~)1h@5TK z*m?YRAqiW`_YbK@C0lG59B&b>xVKT>VMb{VZ`Uh*dY5onJhKFNm zaK&Ai!tRS=cdCHTGdhQ@r0L_q;3RV6+!310yZGftI<8{*qTR&@nF;I1*Au5ViY5Gi`F*FtGmc_imGLIF(XA(#1b<|*KqFJsOlnaF^yCb6SYKA#YC*lV*z9|kaEEV2bUjA7ULh897 z=AxAHy^6;-af#UC@Enl6cE(6vv_cRVv7{?6w5kjBb~tR%Q0|NwV26dZ`h7%S?3>YV-t_X z%;lsM%EofP4C3-Nhk>@Yf_qGRV+@?<9t^mc+ee+)W~)seHAPM8=3E9b)gvn<#wP^{ zvuqhRzp!*Xs4mM-Sbih>-3$cN<{weK4VTPFZ^lpFPyGO~2#Vhp?264XgcwBv|L;V_i<2pv~Vmh*YniFOrvB%E`0LS z&tF5OzOTQJdrY!Rkq%X#^AhKLZrfW~^VW0((%Fcc^zOd?Of-o`&oRB;1 z?v~&1evR&D3WO_}PqelBr;qV7FKfS3y;KbSeA@5o%FZ@dUroZXAx17E#@}JmFYY|d>&N=EO3NdFxmUuX(UTdrGvm|+L zMldYUq4d6raQE|R>#@$YkD@BC6^yxxH1B>!;9uSCc(Zj-0kME2@DpHpsUsx&r?#LV zz!SZS<#>!gjrm=_tkrPL*1$!|O}zv$y>q|&7P$sVcD3RC)vtliVv2Gn&2Ptdc!lHI z^mbkDWK9aN^S1zy7Ly(P;M|p;EcUcYpFxg*3@8oG9ZnF234;W0oteMoUwg_-KcbX$ zl54q2eE(SpW91x~f8_N;jiA@=It3ur%mnAf_D{Nb`C}jYU!5_aK+gYPgq^^=1FzKY zAe|P6awY$NS`)MoruaPce}tp|(j!)z-}{wE+t0ON@F4t3Br~#mE!+P$;j2f%$ZOwN z?}vK4^rjW+|36G+`TsGcr8)f#TG7U_QKW3W`t5LErTFW=B0>3Z$EI{~8Ec zY(@jX2X%qOK<;luK*zwi)puNg1$YK|gNWeG$05o{=cIxpg6{=6JJLEQS(b196>$Z_ zyAnejxehS#Sj2vNXh0o#B?3owYkc%W5T8Cd9OVw80X;t2`Aa)F;L+^~ef_Kd2fzr$ zrwM}uw9e{J3&2$%=@SB=^9w}#J%H~Y43UFq(Hh8J@-T4N(&h}J z&)2M$)hl4H%+cIARWgOwvb@H#e^vSNUd83GP|J}vpi0u1kdI|DU}o(y;&8efIgwh8 zvi2hj*`#brm6=~=lr*qHn)61jJlULnT9Sz4X#Ex+od`pa!q!dayjxvkvS&%#s;=PY zWjg!Jn2fIXtug6T09BciJ2;(dGLSXK%48=oJrV=zXJ}-8j42Y+PIBB-R_SO`+3<#9 z{vf5a4~p0ms=05qc~?S8pKi*uC%RfhQjOn3=<;3M%oGV;ufB;fBm?2f##}CtO+hKM z276oXJMm|mKw)5IwU_8>p81I&bYmQuzZQws*YbX((0AR|rn&uzv@1`*P^c7p zsRdIZ|vH>kS!(wS?&GpA!oq4EXoh*}J1?^{1zO zkQ*?JaB#`-W}|nwKdAy|U$+IC5Rmb);#&!-Iji&eVfwSHre$K3Fxw0>8Md5r=3yCC z&d&y9E;4<~61Opu@Wu|IB7ifK$w(~UH3gw3@9h-qvy2-kQYbM<~frWb$X=@Z{cuYXk`a36ea{x!-| z(tyEl{%B8GZ*JB9c;W#iB2GGXmbv-JzEm8UOI8m~y9_Sl_-b>ECc=V8MvM<7?bL zHA9}QX3r>~?=iu|>IJV$Q+@ZBy(a;I%jUn19H<_Wrp0~FJDHR*ijpq*ziKYfoEv74 z1&bFSK$U-9cvU7U^~zUJlXg0x>Ly*w8=W#70HCloce}0__=7)Rm-mT28vjC~B<%RH zYzq#3?SskOpmlyps{V|-ftS>RdVL2^3*yYge3zrk#?IP8Jpvh{4CfMdlVubBJ3);< z@Aal+d8Ery`&pCgS!DzP`liOSd6lD?tyW>55=(W`JGw)_KR|18s_8Wbs#G7>zFNab z0P08`vkVu&IUFZ&{s!8t{k=bsux#~i3aW-nz$e(4y9w*28+!ao#XFRkPJ7zXd{9># zi`tf1ZJ5C*J&JbKrM^quTA88Y4n<)^0Kg_vp_bEsr}z#ww|L4_z2w|XfEhl$Z@xD4-o0$tQ&ZhyX3nOH`Vb1vW!MMvv;VB1S zd@nys7ja+2)Ao=`2hPLCGrEqp$eRlIspM#A9gYU4bYS^L7-2_Txa!N7s>$tmXhuH{ z;9KEy-+i^?VCb)s)y3kBCe%Hz&gSIpb{%-?wdH-SSB8PNQ>!6AGv%AB zVuAf|5bOGx^~dlEVM1+&jbHrbee`a~xrK%meh}>V!=rp9ffzhbek`oqFBc3+JRWGe?32apK(SvuCeUseEPen4_CK?pBdCTmss9!IA|fidc*7J4x1hiLIh zZk2(L4LjWlhnTgpEh~FJ*5~WfX{78_zq)aKA;^wrM4mxge7fyiB|cQntu|TgF+Gcw z7OSuveeo@v_Y3e-Lx{pbofeX@Q2CY_q~^z}Ld`K_@UBFie#9b&gbg%=1+lI zj)r%&nq$1HA{8_0z;kSaS^1#IjE}H?1b`NCC z64|6Lujd>j%IM+Ko5EyMzP}_6Ut$7DRJjX~tWSE(Q9Aqa-iYrUv3yO+h-)453*U6= zLfj*??Qmgzy)KN?EUnmG+9AGWHemG!ny&Wvf#>?7ncQ$T4j&xU8r=(TVtMBU7@@(6t zMXL8&eCu{@5_I>>=bdx~qFbgb-8eSDFX`56w3Se_`E5Ur)L8z+-t9_Ifv|?x&HY4o z*v~%MRcmG1qN!Wk2VXfu!>)@~1V$C=Z554gV0uw%9EKEuhdnzpTGk9(37#rwhk?o1 zE^KJ`&#-j~KOz7CS94mwDX2TX_X&}u(iyas2LZq1(q3-0|29*)^Tr94fix#N>uNXN zM32FI3xt=-WUj7mx{6xoeDF-fFDBs`tSUb7PUSIcw2qwDFu-7EnHJl;2mEG)J@;Gpkk2PYj+iS1IW0F)c70i6%IZLlXcOd7Nwo7WO2fvd-Z$Xi%2qAr`QTs}r%X@PJAu_GD}i z+LkCi6gTawI_-}G`(}+Vr-(d^av)H~XWH!6mWB)g?cdnCy3l3b)KsyupeJ}3f4F`k zrRtvDV^kw;7WEjzZg9A}H+a;zs;aeEfW4Ea%jL(f*0tfkI(O#J`{ekiV?M3D zTSrSyUlG(teRcCPiY)ab)9`X==niZ1GQ;J;4~5ifqv`Fs)JL^hx(e5G2Y}#Ig3o;) zJ&znEW!iGPK&ATP-8>(GCyMEMub5CeH1^O;|MJz&rxhLvAgo;|q>hhfSS?c8-&SON zswrV6W24|YP}Hq{>px8_{79_=*`bT9P*5fJ7b;rUO85ga3VjLWul1HBx9}Uu$~j&? zO0?H57p}oX+p?j!iuivObBCx(sUw6mRRgSwxCRED2U8u_VU=r|&1BFB!vN@XK_=d? z7=!xp^HNpIz4ilsTtqUY9!kHFkGfK`8vy)|IN1$z%*;&CZ_)TKmW?p-`CB&%O|Z$w z4=-5+Y>HbVcT;LUvlRB5Zq`UD^(F0UGrWoa^D;}9|GUt^X)9%j(U>Mx{84iWuBW?K zHq?F(1Gs$Nmg(&Fa8T+ZOgz+G`h$&)v5`$E>EaonJYm(n zZ;yb^&HWi0S`HZ1Gx-^FWoHq3{?K1qhz6s)1w4$h)pHdUHd~Sv+b1GC)yDTDB2X#A zM4|M1_G;lw0%NZCs-#BrmvU*`E=9lh_PS4|{9o}zO#)b%2D8T&I8GcV2Rk*F$4fw9 zC8KJ^+|$7?GYO0}C>5WcD9dR%vbwmdfxXjgl$j(g3;sGMS=5?}`^ieB`jy_ti>K`* zC{6a0*f;03fK0t2Px=(wcqx377KI6n>|w{va<;;owlZ-l-0yLB)lei3*TL2RXy2?s zeud%G{_2Q}qd=($rk2)YAe?&-QLgM(J7;6^RMM+Cbyo!>r)magq=DP#QLx1zcnpy=D9#3r<#8gjar4j|__tw}T z!HW4|R8eua^@%aZzsfUU88@mWLBCqr?Fln7*flE0&3OmtY1J4$Mf)fbAJ-EAja1R!Oh2S3CC%6v`AwY0>Uw{F$0dvD!8XR6D2^eKu;qhi?-dEAsa|4l`btE?Qj#MH?|s3dk$*(t!VNQ(bQ@r62>wlWzpin zP6eZa$PQatjZ2)udKvU-$Q~7WHmM|K&|@HcE%Ti4{8$Q{4-R#<^6eDiCd5+38bjqo zd;QV`W;{3Lk{R#>bSUF$AW%tY7{EXj5_+I||kL4)sgle`nCnp|cM zrPazW;%~_goQf~{kBy55%%Y0vJpskI9bWgN9`av%hy#& z%g%_lNWa|wAta~YOn+|C4Yt~VQ_0K4k{Xl?ZA&E5bh}^D1tiEQ*prCp z?Qp4&tgaM1f<33zG-zjd3ytMih#Cov+tk?CUojt1At&}UG&Gq3lPe*sI%egE;MGbDf)^!O65Y6;S7#o=LDpb?_@mQbyG@bT0`fL{q5SmXtg;9C}{wciDqlMNGI zI{h==+TLf(Ent!Y6f!bSQdP2Tq7O6*N@)x8XL106j9)9L1B$oI6S0?S=QVN1&ZxLt zu)~@=&_R()4`u9puq=7%t;`h(r4<48uJJu`9XvrrOmYig_uX8Qfd~(igQu@!jB~S; z>*Tx<8A9Ejf2N8Q?wR9^E4ij1ScK-QdgM$k4|h$-REk!!Lm6XY59ptB$Fq9&4Wiag zg??#HB&o7K$S9{{zZtG#Q!?ykP)y_G5)y%o#~}ZtH+z9n|AC3G0dEgmCaf%6g8hdo z;8xRoA%eul-s~MsMzq=8Y^c86RfAXBV}>EYmhcx%@LD~a1XmW|9}OF`+4C&>(!B}b z8RWdEx@DPsN4w!2@8-x1IvQ$kU)x&Gl>F`a2c3!I*uONAm?)Wm_T!$2xJ=Xb_NOPQ zi^+b%HSFLhU=#rz0f1lxBjZ6q3HIE%NJA$f zdGa;?wT{}E>PdC##fY%zXkEM4?%RX1pDR&cOTS(czLtXuVq0a^ZKaY&1;Uhn?)cJrJbsDI;C%1Br z@{tD{MGUq_wv*8{t9Mno6z2QR?EuoLHz#R=JOw4qvW^b{7Be*NsY5yV1fu;K>l743 z2kcNehAS5m-YF=8l2qbQ_k$aq=$u=C42cCd!t45KyjQV1*xnYJqIe#<17#yGYBq_m zdy1H;vh=3&s7+cvIur0SvRnC9H~g7i)qS@0Dwp&)S!TDI-$V$uA8>BOJ+O`K-MQ!w zzvfaqUYOYMjjK3mp;cu{l`5LbOx8Oj?64WHOiSCtBMHCzQ)Vi4N8s z+!^^AmA>I@F3!OHTYCgcbuj=vYnie&$x!45C;6k3BZ*B1TvGsXW}sK^kKQ7SP%@>+ z4d@!DB^w*F`ucsyQcsvjuiw|^ZV_=Uq@0MmM&f5PCO_zV>VAs+ZGf}lphIyK-Rfa# zoW*zk3mF&JWS)&WDV#|aCqc-?^2qQj)Ol{&$@?^fEGTPaYFJ}++{*=V~4E0?`o zWSXmBew=Qbm_yF7LIan$*2b-SRkk@VpUdG?$|0GfDz28iKX=^K;3x-Nn2Q$V$L}c7 z?Zqr=JW4d8J%D#b1Fut~5hl3`gQ`4v^hfG)5nTMdBq!e7Yvo4ta^m>7vo;v02kG^tBjDhHC|O5|5hlnK47 zL+!;jh<%7#;1i<{Y!fjEl-g_Xl|Vk#YluSwA{x|mYD`Frci(mm);Wis5y!}oLdV`c zg%w2gIqFo=z3wFe#*(~PxxjhL0-j}sJCd&M1)RTTdbpeNi}VaD(|OD#UC(p8(R?CX zH4-(rXbR7EA4vGFlZ|tEJav_QU%z(n{p7TfBV~z^t-kt0e`05+qF-*%UfqtHM>Jn) zw6F5v&wkvCs3^*r1uF)(l+?dkTt~kXq#~hgLK%+vyMo5<$b(I(7FiXleD%dUbJFnw zPdK-}a!9+Qn%VC%3>f%7GsilOyE~8)Ck#re#mrwbAmHDvnsAPGup_Y{ljDLu89T>B&AeX(J#?} zYSjbNZugP#asFjTP{qbl3x=hky>FiRr{MLiYpf=})Ek+hdX=v#m0uPdXAt#K4Z5Qc zQoSsW-_doLPlvgxA)qPKQ8aAo3o|HE(>Bbe@vhlB+8DN=dFI;IzkOgxokd4FKEH4h zzcp+fY;C(AP)xle#f&Td{7x_$J3nfCnSMr_aKAm@kNul|hLs9paK)&zSH_(C21wzS zrc8BDRX?E|TASO_HEQ(i{WG@rdf(20oJaKckL2{^SIdTP+qC9~tW)McG^fqlY4@~D z(pRxLz#=UkJ`H=4|+!p&1wM?W`-b_82x&w!7sPy%w4AM^MBwy)KMygHmv45 ztu>rlS6lx1`)(So3t3CPntq<|>!MYx_3Ucg-|)}G-)S%a@_yZ;0mhT z|88kN9>~2e+fZ4To=&yP7`a|^b99{Ezd=P~32;x;81nZchPOH->MEVQ zkQ9=29U^!4g13nb*Y@$H#|etw>e2}u(Q=9p7_q$o_n^T?E0I%2?JN6D-E1h}F`P^2 zqnyQ6No7u>!YNZGEUNr=-31TGR@g(Uxja?9@8dFj3MgqJcAby(W8<=0?v15ZA~$p4 z&UrPvRa#oWCFAVs)nTf9TmyJ>ZA5!F8r0q^FLGNn(fP~G8j!k<#ubGd5ut^gROI^K zS^WeS>Sbm{zzxafVVjS&+ZEaYI!9%*%SQ9Fzv~bxnzo#>UT-8XK2~pqB);l^RcQe? z#nd}1cO&?se>MfS9Xdwa_|2`$%+xOD@K-;0gN;;HoI7L#9^1e}-~1$h-O9~pZmZNN zaGFFpB_6HfEvJ7tOzOZKMNELK2JhanP9b$c0$*2;{=N&Q4t@h6SPKyjL41w5my?`~ z*agW1FZKiZAytqEaD_8)jesHn6Xx~)Nq8!yf-I&8-@-ERx{A9b-M3dc9K6!w?$Z~^ z-|kJ}xtplkVZ&(6@p3Zoa|)vO)*J~bXx+0+bZ|;-!;_i*b-4G0*wdoR=lO64Zs~)c zuV9D!b=b%0l6xFoM3aB|PA*1hGw=gvMp1`q`J{Dgn(VNhGpj=MeGKn|>;;d(*{=qJ z0*6uu*pLON_t%zI1^)U$Q$U9gG>SIY|FVCCA17wa`q7-cT^HDJ9d{>Ug=ibejvi0( zSp+rlE#ChiDR8-{F+(8LKPay^+;3a;b2A?2TUqlox2bUdmXU$sZtryCq3t#}j`Ztt zMF(Y#(S)S>)#vG*rPT_HXV*0^|heUnq{a+7lH5}&xo(!RH6n`LTyFH<#pluG{C-it<4 z1y~!#n2+jfT6aE0%J5P@rRg+V_6EG**%d#RsO*jsZTM)^cF{m)-Nq66wWQ;Gv2CD3 zBufp}y`d@Rw4!z*Dm=Sym6J|?jPE5*#$}heyD(5U=tl*%wqOr2H?-)kd=KhVGZFoX z5(CkPSgo0^sXRMAoZ_Ei;~~i+5SgH~zYqy$5vRjLqyspR^bu(BUi^VY5s;ejobq#$ z;32S{zNiL`t}FwBYyAJTVn~rcw0=sQK{f7D_S`zj-J`yWJ1UQQfhYshl zjMN+3+wr@~ETa7{2GM`T0Z+q?Tc^MM8}o2WR9$=jFMt4@%%k%h(yaq#vs;J5%HIKF z^vj|gzSHAffeb1CPRy<6lxi&kN`O3c)EC}4d9wfe!CPY(OXtRaa%my@KQbir{`Z5D zA1P6&{uRU=_FYXT1nr+ ziLli})+NrMZ-!sSS;uXhpCa}~=*&u%4r2_!{~FyZ#C?0Ui!4oBz3^np2jidb1S)z# zL7f6HomB|xrAqnB@l<4}`t9_TXLS%F|j5~$$ zLre}A_B&fzLi+f)Q;GvFdUF`!8g!}KBM@=j=84yoOsF|2foe=0%p`;$G*Uo=&EXmG^>y6`0HU>b0!yzx816d(RnZexDzRS0&Xkskxry^_Qw$etXA8I3W_XNf zS=IHmzf|J(6g^kYOY_0-KLibCQN3$?_DAZ#e{@RpCtkntPCc1V(tNuN|=e!K`uQ%Smk-Z&0gDC&N1fs|cqFD#P%S3FT+S z-5`G-NU|Y$G|WGP87q^RZy3CN1At%bv2sBzvy1w0cFBkklY0Yt?_bRDMLxB4eo5e5 zYt!pVhzDV&W>|C^XSQzMA!a8b{Bqpvt@2|kJzp!cvez#z(tX+J646x1cDJ@JufXW4 zAj)Gpo&_ivX}WC5zM$o?p~&A+@jN{KkbNueDCcU>B-R_k$D1)-?h~(}ZBdwfKxbec z%egUqMu-9s z{A~GcIVDk9=2)NJVpdLzdFp80;CLsokLa^Oyli^u1)m92R~>sK^9NLg!Ov zlfZ3q!Thf(9F2+$%(l)Uo5UB8IYon3|Jnyxc++hN&k;^)8@8ffu3v#}W9TbXAs_6K zN=^5M5(4gpBE*K*Hp-Pxr=jgNtgbQ)yEfB$S(EE8H|Xs(bw>>am%DV@VVk_Oktflr zoB=PPN&+KIIq>5)k=P^zsL0ibbQf64p|c!_pjw6Rc@;*mb!i^(U~`UsZ9UZS$2qaE zcNp{Ih{DE;wQ$$Aq7)FT*lP4@L#Bck2C*7fmqZ}}=3Uol(u-XSE3PiP6&KRLYL4sL zVCRu=iu!nd$ln#w=cqgCyUi~({8(7w)R9j2+_UIF<=eda!#Weyo45dhy5rRrf)4Ke(;sBxh-GRHYS0GMwIjBI`u13*bgKm|L|7%1L`ttTREbh}yq8qB zpIh)TdLyBoQ{CAb?WJ9GGWdf-pHHqU*m-oRWjE=e)#j-hXtPt>Q;HViPk-zOK*7YS zi2MMWKkf}u2l&MY2&)PC7}h(WN&?Y^<9X}6h7^Mk2;`vZtjPo;Y`_oAs7{GoD0KV{ z$#y@8P40xXaPvhr6{jj)T(XJfSaJm{E8exzE-I%id7nMYTD=D3KD_@FtGgkduSMgT zNh-P`_p@IxaODlWONT^hX5@q?^ElqqB=1*0tLoxkR@5c0&2)1mgbHm`at{Be$(EUh zNe3n2;zpajA*{thq>}Ji;%xp^HuHVT=M80wZN;lnfh(vbrUhAF#{CJ{zP(gvU!3t< zFT4A7b_4UsXbztiBXv2sIf{9WEq`yz#})kjlQ(O6%9KM_4Us!P29xITK@JKBK{!TO z7dZ}L`hVIvolWf*f^c`dki!}ZvnL`!`g>LKi#bW;pJ5*`B{Y8MzF0ga=qQF%YHb&b zj_9Ok*rwILS%{miuP4=oeD-i}*D@y&V*D*rDAs9yH{Tnqt9%$dXfC9oaYaC#u{%g| z^Z@^q{6vxIiaEo2t;yM%A4ZF6T;sEynVi9wf*z2+$*|z28Ktj69KJ%t>#smwJ9TY% zbu_cW{ySqZcJl*hyK*}(#ot zKxm#h$GCKKc?s)xXE2-_94G>G!iTs_tUjqsA#|8OPd7NBl~aZM4oTsCBU24t%$WoW z25&YbZ%{+qQuAxA^%483i(t2Ya^pVhkhkH&6<`y$*H${|4NV*aPsR)J8bD$xq#`C2lGqQEgmp7YW} zg8AJrXlTLZyUX9Rs$cI%mIcO=ZG#1+EIo@fh8FfcW0b8)_iZ1~D?`6OI;BFScwzIQ z<#HVJohtzq(cO2n+x$3!Ni5rvvssDmh5#; z@T_ZU>Oeoq;fw6I&JF}3^)3yEV<~JtK8xbMW$RfS4sVV-HO%fuk0*W5as#`CE-QAe zzDjGH`1qAv$=G)ej)$^{RkQgVg+9%FYPq^#L*wpvQgU*=+lkMCQC8oPxv6^=>4@i^ z4o|#(yQ`E%egGR06Yo~WyXj43wDOEpsT_tk;W}h5wBcX%2;}%3T(z_3 zJt6f4dB0iP5LV-OYJLlKIMdf(5qK~|Y0c0$BV!H^Z=G~nxIb%k7k~1Pz{RSbtS@ya z=7@rXf9bX2=WB^QYW_r*b@f*=zBneJpN}|>f5B>m%EW;|asTl#YghUu7ZQl?&crMM z(iQh>Hu?)NGvifhxr>5D=*>w?{3dn*-Kc;_*jJvWzFwjr0^Sqr@jp2NY4-|^<<2K8lJaQ?36YV$t%Gj{o0+h# zp#oz_EfPt#wa?tg77~|)*iTeMxIZ(pe=tEX&UZjJ7-emOF@ysG=+2UPSA$GVfuH+( zKjxTp%%!A5fA__OL&oQ8i}TYjyvS~64gFKq=@ay8fw0chyHwY09mMi_0Zgx zV6iDLk5%q^BeAtrs$4eHt+fQ(H05y*P--=Heq|x}>(c>ifHYuVgg2upU|yL^4Um>& zv@Vq}le$>VS6^N=Aw&3f`4(d{2QcQoq62H*IYiOnCffwR4-rV8D@4xtVpdC+%{31H zi(2zsOl?4^R0#KgGg422m~z zOL~opN`}$g9VZgPzbC`au^CP!ou61P<2sfi($=q?_^~o(BF28WCTq{klv;u|4YpWW zu+fuvjd8yA96uTX-j?r+SY7hI6Qxn1&-7M;uS{38BFi)Z1O2o8DR!-H?=ThYYO4Nf zXV0~vHY9XgFCe7@){FuDR=}xWc(e`qVwH)nw8(^6ev(tbzpjYvxE_$&~J2Y-ZiL z`+ce}zKObMG!M(y+Fe-Ei@A#$pmiFIG>_C&ovnA!9M!koUd7I<_nM-8Oka-E1o$NW z0BeFxS1O&C8{a%mR>;^*0nnq)MN)iDfXk+6=OVA%AD|b0dE-V4c?XvsIy-8SU_uXA z+vLO48qt61D#yczcvyk!9=3w5EhKoK`kg0?4PMb%0yCaN6VsbvYq3O;UJpwnxJHPe z&rfJ4TVCfT546@YI@LIdJ0nfzK8Cl9x&En+=dG+AqEOkq?xB{t9mTrVG=W>8m5;Ngd7=o!7M4tILl2^2W-onZ=$- zL20u)l_QICn{665LF)Nj;1zyX);vk)lS{0|&qVY$tAEdq`d~dLqVvbw0zdTaoDhvB z$LW*$+2be7%EGpVgk)s)xo?0)hbaHV{NBBVsr4+<#P)oC z6pTbzOrC)B>L=1#u$6?@>{Hk5Byc!paq+O;Qp5Uc{>(z-gc` zLJzeia2!rFG-CI3vm%G`1-ItCFPnwMaUA^M=7(r=PpC_|zwI<%`jmSd$oWB`Z9qK~ zsy@x%Wo>sE!*wL{5|j5}gQwvbzhlDG`g41$i0JxQUiW+~#m#jktuzkL?obBLV9VCu z7XF+D%vaq+TTO1Q3Jr+Vv+sAecl@YXbyXZ)4DANjO3x6wCVO>D+nPfzrj1ltaNRoF z6)uoI7lE&s@Qt$H)1{mOuSv6Q`-0lmPdt~pk`y<_2O)3@d z?;{V{FUm>H{0ZL0lApY(#*NEt^4_1DF(>l?qXk&>2+&-h<5Zg>B-pD4vtjC>DrWDY zw|x(1NsT}G+g8Yvi<+jygT=lXntg@5?f>1HHRt_*MQgjkzKc8tPS+Dx3pi} z^CP!q;9-_7XuFS{2`$qD&#kBG8AlNW@m_q+OF)Ax%n5P>f8rXoSRwXx*EzOO;g0H* zj?HWxfV;(@7ce0bdlX{@YN{lAfi=xxN~;1P==xEW2~d4(l%s_OJgK%N|;-?Lo<(4UwCLb|HZLRwL?#HgcKt)mQo20;T@}f%~~8i6$+Y)0FDtP z^J{{hF6oqAqOU1y6)W$-V2Q6%>WsRR2cPll*jCRqt~C@B+mj#TU!$Ft`01TYF^`RQ zk{TGn>8Y}F$ASzcvzUe5Dw~R5@6C1vQ%bUAhbI@C|FTIdrM|*G_+6h!0!^AGnQ$W? z@};Crkj3&9#XWtFL3l%y>FnG*v=q#+Tq1zom{pVB?o!Ktanm0|TvO1nlrLNaYM)yp zFyVS0V4e1yGh1HGsPmUjjdkzn2f3|^wN=Pa;x>0HTUo08PipLp-Vl+0UPg+|NtV57 zJ+~@2-{_zE!eDtjfBBm@#J1|Xf<8gj;pC7B(H?3xYqY3p-UttF_*o^C42n;qvb<+4iYedFToaRI#>=@@9vp(uJ(#dr@nloA7ezsT)lS8z z(s_JtB#_uUG@Dn|H`cAP*B`ZZn3vLB&k!oexaoufj!oWJzMyZJy*m$F`m8y;n}}nkkpOllzY_7 z*SjkhKAlKYCE#@EV#M?6scdp|$b_O3ULhr;)ctk!%_$7(VpyEhj1u4Q$B?_2 zhUh-sG)-xZP0r2CZyDO!#i@9pFVZi&-TR*PQQ%)I{^wYaTS(dEJ>8t`)Avh$YpNgP0}`i2A{ zmuI$*scuu3Od+~_jO4o|VVzt~^Z~7sNw6Nw1GFjfWWi{&<6@`Uq8aWS;;hN1*CKngx{m-RRZWED@M1HA{oU(vR+qeWIWfUAgj z-ZDszG$kh=Y_mctl9+MSHT5HtW4~}cAZFIos+E#!QdCaK7j^hq58RvYhHLC1qceZ2 z$O>>EjL@S;lPQodqOy83;9)Fcf>0A4!}aPGgcJKm8Ie;RlWf&3`tf_zpP+neE4A2_ zJ`Lp33tWnWtiZm)v&{s9LadX(-h%2FGV#Tb@Pl(9e|sn8-MR09DsvCqNf2feoYP&g zSpilAvY&`IVwlMQ<{ScW2oS4gILV{PA`GrrgiEZ>ECO3Xgikq4R_wx%1+xh|U4LGBqzd6sl~VDqGU!x$|c4Uj4 z#xIL(dtGFN>u3Hx#S30XNB3n8~^!? zN%(xrCwz3B2zhpONh$Y7T8W zbD7-YBVDU1w{N)mjPCH{EzyrFnsG{10(qujN`jRxU)3VL!TO zxx!EZV`;3p^>@n)P|Rv;tZyD>gv`(7aqIlGtekiAYxpZ{6&I^&oHNCAnc%6d^S(ja z3Jw+*jBiKGt^}I41PnJg7YIgtdCL>I3-hYKZy=rMNT-&k? z0agQB+vNz!)`bs6VU@|TeBN{aB2OyY7KFDv`B@=zXee&t^jj#SxdvqrB9gu5tP zM+qB8XVE>>mg0M>yPsu;!DwIkY@LgT77jQY28`tu%u7D{VEhX>p;m+OlfUscGMk}% z=6(p=<|V+Rbc;L7j-|8d&sNwikRGYP#tzJ!i3rq!yRCK5F7{tlO=tWDrioaTS*9E2 z$AM+72Y%37+2O`a{+@(=bUEy~rLZ!2s1TJh*Ll+PleYS(#goRnyEqr4L7IoF~>yri2M}^S2yxP#H zDytg4pv0Kat#^uE8LaAGk%bJw;n5{fu>2_0*J;M2s`75x1OVXog(nqPB09VK6*G6b z81Ny>$lp5igSx0|G%-4N>v7>Y0gb~tY5vv_oygu>MhYbnr*1oX1g>S3R|4CV3X0A) zuvkOpvKG~)C8nVYkD8$>n=&mD`<)o$5UIM6wz((eV(La1GZ;(V+>Og zsnF3gsgg6BcU99ROQxE(QtDf7?c65LGmY@V0yY~ESwhkw z&|)vmsE{)VJ!Gz=F9lG4jSg@Ue@CPb(BcA8gI$A3O@dX|I91WSVGK-Y-XNI;(HN*YgvxtYjhpAiH&u(C=%|NQNz9jG$6pg* zgiRKF!=aWR5U>fgQrZXcfds|bI%^EG)3K zG9xZ{9@Bvos0>hj?f2e15NzHIhEby`*>!*Vzc4TV!DlGxu7xF@5fVT0T5P{GFS1EJ z?Bu9d>MwsNNFT8^*6qX|Mo?eSe5v3)!ZDbfUq1U%WZz8-&sK$7wFPNKX8B|`*o6!+ z%y2x)`sYiSlks@XF%J6e+qt_zHIL>|hS|lkZOeKF-gb#pj+afi@CnM1fKSra{vyVh zi9%+a}kZd-$|+bkNymd`k=7 zrkPqlrEtM6x5(Zw^_g%sN`FxAfIPaDco?ffB>lSs%Q)AuS`Ihbq;B6I(p-IL9HJZM zbA+T;Tj%mr4NvM*h2ZtKhup+g@Aqq9eK#sxP^b3|9YN!lWv;WbC*oH$uV7O>@l;qA z2*KJ#;OiBd-MgooDN>sM!aR=8^{YRZJZ(IlKi>g*7@P-AW2%|$ZLaFqdIz!eEjW97 zos{6e33e8}%z`d5)|+hctTbQtO6o_jJOp+($Jc%~q1*v$+}l<1eR?{2M0g)^aw2|v z{VN1{xK(HUMrWAS>8&a>pJI$!g$=L_FV?Kt?omtQ&&ENo?q zvEbKAu34%H2Pt@GoU1_TEo{sIJp#Q_Q2FoZ|Q zDEQYTn1BhW4L-isz(7WFMjS-~xPxs>SX_cmRs?{%V8oxJgM2cqf=IK5U~r#}^VRw< zj+^DCzg}}`8X75|tF3;Y+w6vDywV>zRA|a*VzT-EtHS5MDUpxbTzZgbZ7$)Ja)%4ue32cW7I_M`r zczg>Iv~o;Z=2KY+vW!hxs`a(v*533K^25kp64eF#H3Fnc9w%n0pSGznHiFK%%Li#uh)zU@xASFiYPc=B5hwpSRb%`A22bi|jTPP8rx7j?UaX<{qa6aCK)-~(^OwG0R|ty) ztZM~p3eovGf(h%C-T=>2TDN4cJ0tdYABv8VRk57o4})<*m8@hic*m}$jky~W*{pj|NZgc z)AT=$T*S*qqO4gvBCwVrNTWSGmzJwPtDfRlc44*q3>&xz$5#CQIsK%gaqo72`+G~= zH@glu?Pd;bPy_|5?mWCIDnx%()Z6Vu78TQrhy3@}(Y;Ma-qtm1W+boPTiL617I zY;mTq`bKg7mOIMt&$7zL7(EYn$L;xT(fC~+?o>z(d#&2y>{B}|#2pCU62rWs@@HAY zJAKKCkB7)E(Y_z6P9uSM%3V#wiI^bapWFNefgi~k$sGY7f|v_HKQ_qH_6R8&wVHi+ zEA4ixD&WjT{4H;jsqDUdgLTGJaqE!lA*EGjc|DNtSt<=%zoJuFy(x;zY1WVS4bAMw zHBz^}h)lOO4w}y3#kZ%xX7f!Aj6{6Kxdmc6lg%;Q>K@D&7NW965%}9-ec3gL%a9Y6 zqdok?pyeSZAvVB&lSHM%0p4P>U@cx0G~?_g#*-_TaXXaUIXl9yk9#i10e)Ofg;)J$ z?yU;i0AKA0g3ENsbH}PPv!kAfoROSyQ+vs7?EWIJOKhy=ehZlmo(1t+|BF2l_ksA0P`7bdrRCP-$&wyY>azq2cxOLS zaou-tt^du7NP;N;-?1eTySM8a%OCnimJTWYD=U)!omH#;;6#VgD+)~V&47(+7|IIQL#^b-U*H2-l zVUkf*4H`O-usbtrR*!_0jym1E-9t(hw4?h#C|Ytad5!3d^TNZKd9Cr2%_>*7>OQZu z_=mtB>iw7uY(8A3po=SM1_K}EbFX9}ASU@Kble>NfyCc&C#31(RfC9nA}o-M>azCk z7j)yN$q;oQ>@q*m*jds3Rc*(Mf4a3(l5x`4P4sqeTmRtT{i9 zf%DnMHbBft_r^n-%Ky1Cer57Fc&$U3;$Y`BgalbS}X0pbppRHwvi0FXtOi?R&0e8=`yd zC~dnJE-SoK&Rv@K8UHCa z9+eW^mKaMntZ7mul>$e{-P%JSO)e_KHpoI#vXlABA?$bHePaG%E!j_H``-4j5b9lR zAuHLJ%py=pk?oiWg$P(V>9=>5))*FRyap&#>JND}=A5_Mld^`20xD*m$+l2Y+~emHLuJjPUO;+C+`2s!4SV@=Z zpwoqWcexWP@l^H2g%N#JWJMpJ^g)SfH=lxO;RzN(f?^dGg~f^ugbp^?)aa2Z?!3WD z@%$v8!`jm7!@I_S5X)4hPZnbl(S*a;XBczx;zg~2er z+HcJg@Bz~3p7q8k>+-vLEp)>jdXdfRM{3{2YR;SK=4&s4NM)YK0s$)U>~Gdu3ySWO z(X>xzy^AM77F=E@CsubgKul~=B=xe}sX(rsgHfyXNW&_^U-Tk3Tzzu=v+3|Uf9*44 z@kO|E(P*^F61e(y%)HIBa$)3HPk8>0I4uxb@pATF_&rfg;8VmI2(hC|BygBf|M>7` zI6)Y(^^RjUr@{6@#UlaNA!uY&4G8eNuA>eNC^Vf$I%aJyA2tqb=)N5}$;}co8j#R$ za=h!zoi{LgS}e)A+9M-vnHh?uK4QfUx?F>E;rK6hoQV70Y|e1x7=a-N*8yR%&(k6k z{{8J}P{+Iv=@+NIMe@dn^*=2augY@UDxk8~NdB&=cBy)qMbpV{Kr?qXzd{AeF0i6g zIca5!Ety~eVZlZ%IBpLiz@#^Q<5{g^O=k;qG;&(%>yn@aCn%*0xyP|#0t-JzaV@fD zPXT29yipE}v;Fi8muX$$)PTm55(Ops$Wj$5-G{FV(9yD8TuW;T8xP%=8?4q8Av6-SerrcQn8*$9gfKU76 zol0e&({GQ#UXOvwm-5E8Y9qH>6B`d?B;+Ct!(N0uz^{|$DSEsz@`^SdhNhV;;Y*J; z!?fti0;PGHb3GpWtoGBAqFkzXpB7h~Obq-PhCH^_<8no&=cmip5zr|aMaYiX%>fDh zpo4MT&U%7?I<1 zSwZlF4@QPE+QPWO9^~Zixw)3B2h)U%V(ygzXNI`HKJMTWy`lnUXH1AZb62-ZlT3kx zxnNcag$zDdv{Pxk`P|@Oh2@o^KF5)dI(brRe?MsC>r?T9> zeq2&eyeu$2+9$uUA?BIKn3|!n+=~?Rj`xjI0urW#`~KLs;kKZ1yZ!pi`z8;2qg?Te z;~M1%1?!HXA%UAwqvN43vlQ^#I)U?^=oHZ7-8o8U`YVc`Z@+VTh{UN*?xp5)-iXL=wc|}qye14gzP~rl4}Yc<$HP&8 zkSW`5zxs5ntp(m9bv)?UN#7X4Di1;GdDGsw$ERnLGTu+vo0Q1FPlc7XD`#w)Cx7o5 zWPFHx-_73<2KvK|UQtq;0L(DMfBwq7ZMq@CeTEnuyYspi3DjTi^bGmYu>03eSC{bg zDw);jVC75}m0qbw^$^l@lX)=m`m#hxH-AS+dvC>HkiKGr45cN+>WEJ$+;76^Ba7*s zDgHru*YQ*wi$od{4%2|KXUyLby_@~gDz-t3qm~jASk;H6$VcK59*SO!`UTA^_3wmYV z)kWw*B~JD{pgW%8`Wu#=Yu#}Z{o;gn*s+V(6n>mGa!iMqhUVp%Os zuHTubD3ryu?MYgCN6o&t{O~#$SI1e4ohK`)+elG57JW%fg+JQHY^RbfSb_rKt6%7R zIzRAHkI1yrxN2H1iEZ!T+Jxr!sBQM({q6JBof`0)vG_2v*&guQS3f*9RJ)nKWEHj( zk!Z`vvF9y;C*<+iDj`f99BTeGviW@2QS>CjOh?}@{?`0Bka5Bg9q$?@jw_HFLqSorF!2^s< zn2}I_G=j+qk=L){e4B?BcB#d1fgc#!O9XV!Y$ERAVnapGU!)k;o8?u}R;{j6L&44f zFZ(DTGLJH}&cHfZ%Qc$Mnb&SHPw$9FN3&0_Qet*Sel#^Qj(7+5(?ur|<3V zd(S=Rcm7AHX5jUoCu@t0Wo<^?TO6LCG4-qcv$jV`)SeSvj#GE;gHJl~DJ{?$mv5z! zB)^_H9awh%@~RFpTskizqte^{grWg*^4PHyDoD3t<#qFKt9>l5V-nCwScrYwm_L(f zJ(tlI>?&#C)Bug&ZxcpF*4ygU#H_hbh;egxKR)a?pvIAuj{YRQJiZ`pp9oYq@Fu=f zIT@*d`o5A`=gC?QHc+4n6Geuz1EF=y7tM=>$I%k&Pnap87immPiiFnM{kDyUd$?)_ zR^|DZhk85gvaYDRBD&1ADNto1iYeURh#qq3Vqc6p37Pb=wn48Oju(Y&CqnowR22jl z9>yyDQ|yaXPaUNP7kX}ic-n+a2&k5(AMp8jZ+!`T+jk32U8-z1IeuOY#~Yfse`2LS z={BgaYYvaa5`hMU_j@}Xm;3K~HpbsZRxIyQ1xtwbw`7{+-+#h!XOkD*Wc+{>EJn&u z;nyk0fPobPD<;z7*B)rKP&D(dHQ)!Y3ddnXEX7a52+Id2Fq-T{+t)kWj91zg6*J=d z!(oZYw#ODB1l@LgKl*WLf%1JA-#W4b21F)9Ff?YZPw}sAv2OA%_JvZz-R^ zeD1pL=WUgS0|-ymz$b9(q$6Pgrq@H!o9a=E6wcB~jnGUIGcO=T`Mud~wdFU*%|lN^f%V9VGLAt!yVJR=116!7MPn>szk8 zkX&{S6C2_iY)5fHDx<(yn9k*|kFFbgeU_*v%N4g%dR{S-BQSvL-R``|+H`=c;EQ$XQ(UmF*@@vy&B;x4IvL%R9`CKncgPH#mHwpq#RyW6v+f5@ z+U2Ea5)C3>`;2C$t=AtF^x+Dp#v3HESK)b-2x~|(DQ`P{807~$SB`t{fd0>RLy6wF zD%M>-Y{~EV0rBnK;|W;b-l4t}gwB&=Sucf2rIq-0v{#;y@7=(r*7cpua)a&6gz+ya zwX&A!I{0rj=k7xdd?8HiTPs4Ok6TTSe@#^fZbN9qqfOwyT5H%m2k~eIbv7ck!UHG7 zV6%Skh#|b^+R_V|tN-)aRe_Ht;WqTbsN-aOXN^`1H4~)XTYI$y@g94gUKd>sjL`06 zB_8jnH4wij|DF!UY<=9Na`mfXy-l+^p(b06t^K87c5-y!n$B>RHo&f!fuH^;+C4m? zAaS8kee-f=Sdm|vbl4ADy0a76QO%=FRhj-cS8{Su^9%6ObkVJ8f7Va`iv&Mj)9z#8 z-MG;D!d#Y0*1UgeiCLzSdHbBjyhOOsdc9D+-~-7Peb5tJyZ$EQ>Ndh{bfNzE@bj!z zLP^(qYY;qP9a;0$!|rW75XM&72(DnXZKVDxrI-D?CMk>Z0i~yEci?xq(9?E(1r3*R z{VmF}jq9F+(AQVpn~imy=e_hZ6`i&f1Ao|W8?xqR7BqWe*f8sCfNxb9RYRzKeM5qd zY}cUI>6iZb13K41)vb_lZPoO*jdibn357Crz-N5)E>>nDUkyhQ1qCY?f`igVTbTJ{ zDl~hsZ~eAi^^_*_M-&waj^rV2uG%zc<;JRhA{Ek;4~M#*0_uBu_VGkss;OZ&HK{&G za!hy37BTO8*dS_QBYm$LpGIuLpu>Q2le8W>udF=lQa=3jnG=kO72Z<`!)m zZKA;g6>dA7xSeUvASO#%H5Pyy1v$d03+1*C|5#mp$?pEF7WVGlp+%39 z^_Z>wfr}BIG3`q7t+=6_v#3^3GPK}P9Uk7CPTj828c5RE3qnUo`HxUBg^i@ZVq+Zu=j)6mO3Fy9f5ElN0N z#vXVNUp;Pk63kr8iP($=0AdvR%o+(T4>cAPdB>rq6U&H<0>n!V^ie9M8f@U*fuQn3 znmIL_5C!q^<;wC688<#-n=W;C-p4a3*i4VI;&0S9nBlMHTV_H^Hu1gFW6RPag^C{@ zb(Is@VJb6TikgOFevK9gv`bhRHtVZ9UhMsf*hrO=Og!Q_@1J--m|D80%5ZsxA$1Tz z$czZI6a?w<5UM5Srff2{Wj$YDN1_uN#m9SPv++*Qifq)R%WE+%EE+9RF3& z^;$Ldlfdsr)$rT=;3#?IrV9sjCOGo@tu315Pz$q8{AyoQS)-B_EpJ6 z+oi<@y1b#31{wk(O#d&F%I%(EI*Q4N-=mE#E3u~$*fDC1qc05PN)kong6s`8|L)xC z#=;O}VWAqBY1M|y5w#ZSI9Ucmt9$fqyT7ZI&>+SfNjw77`m@Jw3FJ#G>pD2Q ztZNVqT{(Q=e>O7y9R)iXf9l_3{R?x=3IQvAH5YDA&+XlazqIzV=TUtms;11`H+O4y z^M3BUB%ywUwg#6z$pGL6>Ir|ClfdIe?e(6Fttbe(|Ec`s@^<;15=oerlZ4ZH!3=b) z^r>-a&WX<$D11Ein@G?pUr_j5i{foR)QeKzogKO|-_Pv;Og`8P*EL6!yWXtF{yT%V zqrm*)Q6cHFO-|%(p@cZ)-R8P`vRFECPSDu{Q+psRR{z}C+*V-Qd)^2yORMLbnL2Uc z(}%3{d2TKf+k#OU6z!Ink)r0J%OEeleQ&#$IZn(9$D?&%XXk9Li66~Uh-Z})_?qv$ zu=UbXuC_pgEaf{>e}cYWhv=(?#3vGPFgY#*rL0o-I2kojr}>`fKS9t)D293CRBDEL z;^;>tosu2{_pY8QO!~|NnPcnw_RXj^R!qN1JK}R^oS#xULbfnQo1(L=Y&kp%z0OLgCre`+5xv|3)Ckml$c zgA&&)VhIwaro8J8ike((Q|iGIx-~5_aGz4?xX})8 z1By8Yuz z#%F)fOduz69P(*T- zM@&Yg4~!O}s9Wgy4no9AOjg$VQTW;1)Q zXJ!VpXQVq~&f*jS#04^qX>6ShUwnuvW)*8vO1)S|}lZk2~ZsQ-R^+1C*wensRy9N(*E`#JeT%{iyaY60x-0r@s8IWVM3-fEIfvAFTTl{(0 zo=S!t@1xpm=$8LMt6}^J$K<~r%=w!xm2|wHW2czj^=bSYZAo%y{M}(v}L?E*@Ano8s!g=JD z<*=g?UvIn47`30$pmfk;swQdS-E7_$KS*m)e3*{#k6ac=YP#aft=z5Ok}cy{9Y1ba z&v|`W?%#Ig6xT9^0nqL2v5b_V$cYOLAI%~TusKJ<$Q{C8Yl@>-%oyZVW#Fk_u_&VF z{n+JoB#A2Abko}#hEfxV;kMg#P>{yM9O~I?yND~;lMWPH54*nvS#PKj(#SiDdg1LM zpv&Y(Ns1X9%NCeXP+qOxzbZ?(yaUJnDHaakQ9M&(6tI+_IJJW6({u5@ciuUrK@ zEAMl3w9{p}k6!)BRdN50#etZc{0r>~y_;QYU!Q)d?229=f`p7l=D+8H1MSZyF`}&q zpc>h^`#QYku|zt&&_4y5y8MZ8dc_mPS1CBF5Zlo4Nz3A2#g;R$6znyhI|oOtk!$aq z81M8MdIX=<;9F}JvY4VVWQaCo3;%qi_mvbrR$6;LO{|hf3`gH01)0R~a zF_@o48gIRRo`8ryE6lBPyvkP61e&y^EX(Uw6a`;R1~C&J7lZ@J`QdH#uIKT7IbDWj zT%jvp+j>}mivP=C5>SO4e2s+#WTrylV$$vTCFDEZY z%y02zSapX{T{(h(Nv%WyUkf@}A?Nz)6Penw%|-Tw+&6W8cZd5`2t}znkf}Yjr?)|S zO8VUe`h4&!EQ(m==M~Q{`5?3tkg|`wfoZ9&PFO4{YP9Y;E;Y!ZxajDk8PKozw5q@N4VDK;wKbMaiV-N{LUcN#8K8R^NDcA_6OhGKw)iM zta?>gI{SNKkJmVdUX4yoG(Ob!5)DpD>;m_h06(3l#*UXmI%K z!LPm1CaC_m>g+z<$b>MT>lbw2SSym?^veRR|6(|B3>y6o)l+m_z*2N8to$zV@b@oWopg5jPmmB-o|y3@9DwCWY--EeLr4@;(eJHj zQRh_JkQ()MxEYLV=4e&`kAQA+~3ZZFqM|YWz#?WEMcQZ#V}5q zzrt#4d~o}TP`}^39aaN!yxxfo%L(x3EJQ`E@OGlA`5_U~`P%j1c(531v>)j2pNc~P zSktO%xc$|VO^;YpTAQ|k2lN?J2Y8cFj6QsT1>2F8M7OqTbDCN)cFh0UqQrOM`0(2J z*6AX%DKSD7Ac_1>h^Z%WD7hM!x$X++pB7Im;f%Rl{uKW|S%3`BW3Y6d;sDebswCRB zHl<~0zzc0%E0bblcjSm&n9Jv?o|it^LmOykJeDWq0X~H_Rg?rM)3`?ep z5m8qyMtz`JT`DA>mGxmUa0h`aC&7zpD^y zmh>V6qI#^@fk|z)IOzH#G>>|b#_7{k;}7^|S?FokuiKuoO{CWe6R>|Xm)stb^b)r7 z?TB@n)%H4?tUEz`0#OGBB{JQ4Uu2V@TqQ7vh|UM`rCbxu#trEm*x~kn$7lglKZ;qc z$NQL@>Kb15K43P5pj4vfyMRPAd4+D`G;|;gz-0amezZeaviPxQWJ_GHd<*Dp-8K$G zZiCzMHziyc|6uXaWZx`oO6Jix8w|nU3KBQEB@1iiLP)sM8MY(7Vl$K|5kBSaQDP#` zERyng?c6h1K_L@+;Hv>jW&Ua0rlTcsGG)bl{K9Y+EL3+;W)SKubueCQ0@FAhyN2en z2MQ-88Ry=epZ#xB)!oQ2PGs?@gqC z?T=0FKluhY>@G|tG1WJ=v2lC5ZQRzhY;3-qkDM$lV`U!a@U81bt`V!EUcd@-5hJNP1Q*I|`I&KpU`Djnt z#^oNRCwE=Y?lLj;hpZqr)D(t{Eu#rH5nQ@k@0SjPHXzfuQR9fS^7xybnY76>zgUL4nqZf()!-QUY-)lF&vhYs z1UzBI5x!rryqtr-<6`t7f3BgPK-lCL87a$l$dMr^<6MX#$9D92b2B6j!C9ttacIc( zZm}rl#9PCu85GUovf8bN85YG3^v`!Q7RbJ(>S(UoU?uWJkOOh~V_^$szx6UrS)6oilL%y@iT+;V*_p@}Um_mC~ zmRy71q~h%lv|kp&jZQ_8jK_=c zs9!ZkRa{-kpEv2yXV;2(t>L|yeXGU7^*WmR+AjZ;u*Y9g0r4q6D?{*Fw3Lw3WB z&JVS1ZRQBwN~N?o4!NlB|6^9q5naDU{BO1V4sC+`{|HCZLaS~yI|2tv&Umh*_+gX}0^dKVq-Ty4!hxieZ6nX@@+{=Rb zKVJ2}<3x4@|7WL4(B!?HdHr{-{}zg4zaszl_w#@8%l{jH^8d}Lshb^ba6X$g`xCD# zE&sESqT2sEErh7)31hu{Cq%^*^K{ONzId+qdik0vA)y{4)FvRvy}yGpK#!jGW=xT- z_myWU{UrecmdiPp$nXZ1O`?gmgV!jArnFyNZ7o$dxy&JfT^;8yTVT}l zjVghD&@Nm7qH+7x-W0fhgT8=q5&z*f4|N!$4bqfI8}X)T)SX~5a8?90yjUUbW;dC- zQwU{01z)|(6(zPLSEI_X|LEC0fSfU^|8NOZ{o3ElSkSS)Uwah)@4a|*eRx75)%FB| zP${&2QAPV*8KlsqaDo=4X<&g&lGLkaT|I+cO}AnM7DIT_&sQu}o!JmX8nsMrWukEB zj|+oJ81OL+V}E=q@Fbz`9FmpH@wVrgz+4jyAb79!JN-P*)fjqT%S7r!Sv`M!*0Ynt zbTty`8;7!YLcM9oBHbjqHsxDA`d>zpp4_?X4a~kmDlWmYzeoTRJ1eWTfm3hCd-uud z)5gg1+A9FIZ`M4=1Bvw0dsGB~7Z4Fs-0HZd_4z4wd~}>&{rp5i@ZZPzT75oka$%j* zS``h)=O>IR%wvcr_YuKL&2q#|W6u7ksabYdn(!v0K8o$&Y@thuQ+Qi_Cpb_noNK1D z2$`a-jTF_d$*{3N!Z$Co<|{VMd(xg(&jO5$yO-tw_Az8YUi76Lu3-G+Ee+|ZL1Km7 z#mG4^(3LQ5!JCPo@tEQc8!SkMPq1|k>HOUnx%jqrfqQe&S@PE>g6H9vw#!vV9zNE8 z9pCcM0&zPG6Q`^cg?|SlPZ%EF8HUB8vju05^%E&XES-V%CGY^^KKvNG+B-ZGguDgTI)9sdgOpGrxbhj%tTmxV1Z#c3qP8I2owg)xO59WYXR@Is152R}0B)7*B^hcdT;j*lM@ zWf?Y|^*J5xV-u(`T#o8M{ddtB2C^4)7SoEld3#px1u@4ouQSo$I=SbJF4|M=8cS6s zh&4II=@T}C3S?R~WagjhXJ!k$-0p9tcq!0kS2>@X4rynsUg?k`p+j)RE;Fgyp;UdE z)jMKbQWI~}GDo-xS7?Pvi$7C8;2k!#+%#==-Nb2-+5?bKdVUCFQJpzHzoYm_g|llB zRwo{T&ziQ8>hJvGI*&tP;0LTScxRo}C2b7o2q?-c%;vMAj;^M9nyj%uko9Pnq4<(J z_erf_5_?FZokF!nSb0-nWX{hoFSbuKE*kW-JI3QL$M8)$yf#shfKNB6UVGRX_fjYY zsDEdUljDfmqOg|+&;GQ+C4>=o433Q|mp%S&`=zH-ezr^<1!*n8Y)QL6yM!#o;b~H+ zNATPqcULj|4|^+dWZ>_Kg>&z?`{gi*I%RG9(?i7HHhcS)>d+dZWtC6W4bCL^T#rL2 zS>D^aV|c|QQUWhq0kcw^V`a0W3$FKQQ-3$mPVS4>Q1;@!W6TFu+YYCBQP@FYCek0qFG(Rb2Q^ zb>a5VWu&9FU-tlKxqfd|dE}5e7PrvOpWs%U+gvM?lULf5w7Ry=IyeSeUkp*QCIrgA z9y~|VKB!5SNNMsZe+>SzZxeC86By><>EtW15hbInogJ9uf{Syu=yZap6&lgb;^JhX$w1!mP zHui$j%C%2XE#fkXZ8xeaV|D%1ya6^tp-y%6WlWNfRW8?wKkG#rf9b*i!2Hu% z0x8z1_fr!r2H-oG{khbzLgltu^IK*j5jYlHkkVZK>)YlCu9i^P%M05#z4oSKL5+^V z=tXFZfur_$3?lTR$h9|!8`DY%Y{vGPs#^0@-D#E0fkUa^9EX6cpAe`w6WaxFqb+i%G0w= zs?Y?vlvf#?De_UAedgSn6(q@}6&98ib$g9&!e(5YwSF|f=uH&IQwBTt~Ms==RgV` z1d&gZR}*6QV}-~5tLz1zNdx#|+SuMM}DWuC5y#&>o1Jxk`G@{^vRdv}*~F)xSFg&NG<+=fEV zS%xnxG}_8dX9hN9l53JMzV>%yHLEM75ZcKP{esTzoEBZfl>b^Qw54EtZHu@uwa(W_ z;&5O;ap0HGSz16{0-u+$5-P6lZtW)L_c%(9&Ui-_8} z9I@EyF%<|BXTrR_KI3^HUR$fTtI)cbgj&S`Ha~- z`YAHa0(=0%4w!G3lKB3vq45u+yv!BS##?0?;mc0*6R91SqZ7IYzk0mGYXfu1S@!Su z@o#(k+!@a1Z$hD^^NgYC7T?Yd(sNsb9BAy>#OuGr6@B^TMe?WDc zWfiLLJvF5v;#;5Ip-5V#f5op9hdTO4`+*%FXF@S!?wbo#mPhb>5c6UV$*0=EGZ@P^ z>fLp0erg0yCldcI^&6CT{m&#)eBBm+M*pBLCupWB`@Z7nEUQvR8UeP=YmlC4uLeUX z4$R(d0taG7caxR?(2j0W9Z*oBF|s) z0+2qHj_!~_#y&3GBB$C)E>`kwHK)TyNoVl0FRQ?gv#a$MbST)+NUwskGY;yJrN|;X zgSxfb%V@X(g1FnUcvUu7eHxzRnQ=H^uiSWlHjHGaTk~FW<$5{IWCNFDG>Ub8@P%KT zS&OSLR%_da?*&c8{=VHaO`&P$@*xOugU=tv@AGvACWb)c?OyK(Qs7Yb7ENS z-b^=>#W}|VqGkH+c`|TIt6L=kpayzvTCCHd8>L2i>0Ua%+{n;g2QZ$&Cm+wxR=}J#mDV&zL`MJ4u+dX(hq9DMM+^}^jycDsJ5{k8IW z6dAaz+jy>q2>FryzrRE(`0Vvg z*y7g`(;}xzw6pY6`}&#Y`#-l*7FFdOuBBBOW;D4LE>g{o?1xjTsCDqCSmw^kzgUVK z9b*Mlezup3nXsg%lB*^MfQX0;8Rm44+{QnOhK9>`Cp-AfsG&1EN~Z;+p{OVZFo1Tc z>Fckg6>*+)*h-NP!2R!;j0hf08-UAUJa8cioU&cbrsb4+c5lc$e#Ovqe-$w6ZxXR} zdzSje=&*L70KT~j=)~7sW@FB;ZP&r)I>;Loh{?#!jwt}?Tp(&)s z5gp_`^!o`ft$}GS{uLaQX1aC}nntp{?#wx~*8h4Rdy>HC%JdTV;A~&WPSf$?4Q_d` zrV~Hb-+H>nrBBepmKiUvv>sz_ZMDfuwR1ke_rZ;swD`BU0al4U4}jAccB%Wm>qVwz z>=mo7J~^&I`&)G)4Wcd=Hl}uv0Xk4tG(fT>&qVYa8~leI8HPdVS>t})D*^+vzPKj( zozLg|quz3SyMPplAoXC;L0RuQ(3ziZyTBKDU2w%ga~o)FqIpMS09QSg?5x;Q75X%Rz7 zFAL=l0}ZQIcDN^PHXgnLFu*pc;6cj+h39azk0pl}>JAy!VIKheSQFuGvG-t&?SE4? zXCVoxP&$aZr#nRe08f?cK0`Xx&V&4XBO;l+U0m4JF8~ncYG*ge$n;}5{?#$R-)FIs z<%1Y0HkgEOgfMQ1&nC%0mH`nVG7bySFFo~=&S@>=>Zre+$bTgwT6X3KfDDI+!G)wf zJWWzScpD11OK^LnXr@IIg1JwVH>Yu@&`Jf$c!hYg3LUd>L^Yo49hB-(ceocfplUlT z5mS(NBxh#*tGa~1Hk*OQC|uOJ0DkG<+WdQ21!Mau=b4`~duJ1hS82>hGF6`dVIyw{ zMsrqHaZ9^EQP&R`-(ZqdPw3Q9^{4v}3{YGV{&wYIYMtUP^Jdg4A`SR*?UA})A5KwY z#`%wFHkKaD8z4pMJ+~$l1qmxEdSC0@Rc5KL%M z(y)a@m7f!%q&?Hiv4(m@zc;jMwl-V!5nzBs7G_Z~~e=f;exzQ$hB^>%B*gJIDg8@1+$O&_!_07`f6 z+ujmCYzf{jg2DOd8p+qkf1en$c+PfJO-`Aa+m){SaVM7I+HcR|CrV_t7|SMB1x}tu znxjgX+AdF*Ou5ceY4}{X7b|YLNeTz=(KD($H6Nr->tIO`SXB4=J=J>s!$}Fvk1Gpl zesT`4QaWqhc?p5v1c_eOgA}wdFG`hNtwWL3>mf4cR)x&_0X?1qxd6~vr+iQtl2cYz z+X7#8S&QvBrowZ)LHsr3zi9ci&g9M%@t*T=Voi&zUPKbV$FU=B(0BD`U2raRjuqSN z1%NVkhgfW$wdThDLY`t)0uB3GX(Rg)MIY2CX7y@=JdLCHo&gNn@Z|m90wH%hJ+N>f z$wT&G%a(X0EGa^-pa{SYHY?aS5Oz)tkII7DZ3NkpjDO}x%z_eW){c_B!Tf%*bu`t) zwIhlX;fhx>Ja52ZSuJcfW3==ZLzk_vrma&2Uw6%u{J}~?CqS}f&wY7~H1pU5{mkQL z=}+A)a>HSA)W|9$U94*ATUizT&bMF2OHIG}r~9IXFK9b`|9=Ga{{aN`10ejV%BhAc z2CFzWpdBA?Um7?y^|2_wHX;C=qOBOJFk;su&`Zd$PZ^EfUw%8!Y?X$Oz zfXZ&TGxcYq;bE}){vo4x=5mwO*4D#QG*8Dr_$6}wqJr`y8(W0mf(RW4I- zEEHWB4mM5xsq=QW5$Er0XGgYohDWZ3@9Dyul5?h_#&rsQ=i}yfaES;-W}NHro3_<9 zKwER|#F_o^)gMsVV8ePw_4|V2RKzn$5R&ZA>S>oqD5xql6Q49h@*@;QJxy%ZKAl}z zq!6N|Ld~#RUgLpU67xBJN|Cmo6B)d--nuqP#-#Ap5!x6#z>yk)1r}x1xnY4Oxm{&1{cW19#p^_NBiWa;U%jHvd zvjxI-HT35$!+`wl5?lrp9k0j{GsAt}jt;@K3iyuSP!?{x3uJWzs+IW0%iEWR;Y1v5q7qLIYRik#W7dFI-ckVpTbH~PQshyL{F57?dPOB7yyTyFZAT^U`|n*UvDi_3K3Tx{1n%TP?CpxT1V zz0tu~BZNt5qmtkIZLaj|*k!5UC==4T=|smQ zysV$ixIkMXmnG>6G9b)T2i4OJW7Q~9|MFQ`g{Z}7gy$s~35OKT4)=O^+tISY=PlD? z?~XP--roXUT#{#*+WI{JV1NFvM!;qI^&Lw94-D3__(ViJOki&8^ zXz9{m4)`nWnZUHQ%h!pYL2+wbiewwATcW`#Q-cPSiFZwpKmPtjT23UXX)+q*TZbB7 zpX=Ypj2D%wC)8mwC9YLW1R$qb@tHzyF;VV9i-x!Sj!`kvEil($)M5YGaQ&}cwAWpVBniSN*o<(9 z1Y;$Ya0(N|RsvVb96~@{%uYnR`qjGoEEcAn@?pj;F9H_pDog_+KuAZ?`RDsv)NirR ztQU_sSXuQ=heu)!sQ$ z8LslyQ{^{^`pB2>@B6KvWW|IyZKXF(lU8WK62YS;lRIcsX>O1P*NFU4J%MTvmCqI-$T;Mf2o7KgBT})n6 z&=34yK|fqKr@)UBvIImPBma8*ui}z5lqQMm4xDDC=xz;#Ehqbrjy@I520;z-MWN$K zF1Bn!6SfP#aW`@k1*QJL+zjahnoD${3~9|8n_8&fS>azw&ZnAbsDGlN68!OKx{cmb z#@)suXtAN>;foz=(h*jQ(g@sKdUNcT%XIF!=qfbikoWuPGfKrBuSXhoq_`vo76_N& zeKKhiLThK%EkvEJ%NCz8#%1rM6`*Opo-xILkWkGLB_zCJ_{^ zWzCUdE9#!*{bnZ&Kqd?m#_upXIA9XP7zsfO7HDnG*`taIg0Ax=>-H*{Rl_h(@w5&{ zD2Dtv_2fNZZ?38j$w_HJQ&R4R1N7!*yZuT}#AkI{Jg+mCUDskWSLkL|SEWm?*Zjvj51nA0<%!fnTmDV@xz`gB^polIlc47++*Iu9OY+-0aL6*IrNO)M3i6a=7x)*ZJF*9E3&TjDwSA4cjd z(ut0l1-$t0M_a#r*p(e#B^9^Xq4NJ??1g|C(a=Z`HfR1+(zsbji}pVH?Iu;K*UBNd zLEm=1h^V7pq=ir^&%pjtc_b96=344jgVS5-_tWdk6rqOyGid3A~w?uD}5A5=2wk|EjXV*j&}4F1~rVl;q=S;_vo_cfXK< zjVHBQrh`o{q}Wika?O)z>M)bCG`PGQVZ#_i{+8*p6{!@b-esQ6agYBI`(|!LiylFt zR~Sux>`YQie|uOD7W&HzrO43y+eQ2c^J0;Ii;3uE3B&TUbn915#%ipurDd{Oc%MLD z((N}fD6R^K6tK#^i=JRcJ_=XyD!Td3x5lg7f1 zoyBh0dtZ9DhnIze^s=_^cRYIk+#he1ii~xN@NrUnzyB#yhfW8zwGN+pC8;=7aOdjg zQUWCjiBOYm3MnI_=vQUPWY8)OoUO46seDF;z(FY*#12}<1VyFbZ=5P~&gr_=_Als5 z;O(wZQ5oD`MMD+yZX!n4^Dh>?#p9+gm8&*Gx5FSAR-<=j*CzYQm}V_prfc89hcHzF$yV0<0EC-`_3 zRD#|wK}`gm*5bT=VGXIKo{QBH{*49)GbPY~%+nGg038)byJkOzgoM^$B-2oQx(q|D zG#im}qpvfUuGH!n|EA(>tN{6`7Dr9%PS2e2>4Q2_hdr0Pl7hla%-GE3%tQ+Jo*Atr z;o+XZ^a?1q0rG=60IC$hkj8+#u&ll2_^&p`UK7pN5OG(Lv4qUOb6%39 zvj-!emWsF2?JNW!rI4xLR?;449*5!Ar%!NM%OA2+_bTcoXUsakDL7B{NnWCo;QWm_ z`s|N&e8Jovfh3@paR}*#Lz_qB;agvd*454zU-q5}9!7tdyVxv^kW~u`zXv8%ho{B}1 zm`=={x0Phba3(ZdyU#VgZV<@ML8TY|k~?d0q;AVYVIS*!Ks~wNZ<5x$t*$|g1SqTJ zvxZjU;ubR%GxDXRCfEXifyn{S==iE??obI$#Lsbh4yc=@68tV9bd+H%*FW)OxV~V) z4CoZb)3y1%T0@p!8=lI~7_Dlo`u^iETiFh|ojv#}8r5nHYS)-T_IC$p2_?`_Eamau z>%JUHn?yz6_`UoAABUVossb}sBu`Ie6#~uV>peebuD&a!t%m- z)hwxm9%c`cB=aJmSv>ljy({C2`Zn|*+*`B~j7;{;Xevr%tc}W&=11@&ytHPs*c^5O$2|daWvnxmQz(lI9J8v$QT-2SD_D}S&1`0xiz+l6G50XzQ-a4P=AH=&pwd4(uZWZKwjH6=t$DrZRg>o5DDD>smx@B79ntbn@KZSi3yh7W~s;2$2A9s_kG|(a?WeYrD`0%dZ=Kd_+K9&J$9Flx<DNdOT4Mk;L2czV;#+UX z-mRrIvi$87$wkEvn-dRs+Qi2DI3a(-&C zCnRINGCxRd(%OmBk@$k4rNL3-Js&hM{V0g~A*hT&hc(xfPdH^5_w`~nkAl*?-9>_XdLHMWM80xdP=GdlVzG+Qpb? zS|B=dx7CmHTTaw}&)T~*#xD0G(FFHH45Ki%bj7a ze9Nz5vp>s%U3aeB;MY%Eveo#RlV9qDAM8DMENZWOn5Vh?OY6&x`ExzbU*vYNQQ!2v zzT#NV(>x<4hM0H1!uS7Py7>Qm`)hfJHi|#*dtqhxYS$EgzWKHn4{&Pg7jjjneY-Mq zTlrayIM4`zWBug=zyYy$VRIXg@7m(poLAhW4-|iqS0MfbwoLS08QO}`FVh#Eyd(SX z*|xd4Av3q+zPMeT+*|)g45Ux5QL+KJ=ykdxZ~$HC)BSs#K*0=$1hQ6>{=FKm=MGw6 i2wafLOUQ^j|Czt6xxVV-)4UZ7K;Y@>=d#Wzp$P!g4wsw& literal 0 HcmV?d00001 diff --git a/_images/nonconforming_example.png b/_images/nonconforming_example.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ccaed04da8460ccf33de291a24745652b1488b GIT binary patch literal 143360 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 .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar { + max-height: 100%; + overflow-y: auto; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox { + margin: 1em 0; +} + +div.sphinxsidebar .search > div { + display: table-cell; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: unset; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + +@media screen and (max-width: 940px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.sphinxsidebar { + display: block; + float: none; + width: unset; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + min-width: auto; /* fixes width on small screens, breaks .hll */ + padding: 0; + } + + .hll { + /* "fixes" the breakage */ + width: max-content; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Hide ugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} + +img.github { + position: absolute; + top: 0; + border: 0; + right: 0; +} \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..d9846dac --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: inherit; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/custom.css b/_static/custom.css new file mode 100644 index 00000000..2a924f1d --- /dev/null +++ b/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..0398ebb9 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..7e4c114f --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/github-banner.svg b/_static/github-banner.svg new file mode 100644 index 00000000..c47d9dc0 --- /dev/null +++ b/_static/github-banner.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 00000000..c7fe6c6f --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,192 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..04a41742 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..2c774d17 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,632 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..8a96c69a --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..ed1750f3 --- /dev/null +++ b/genindex.html @@ -0,0 +1,405 @@ + + + + + + + Index — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ A + | C + | D + | E + | F + | G + | H + | I + | L + | M + | N + | P + | R + | S + | T + | U + | W + +
+

A

+ + +
    +
  • + acq2sqlite + +
  • +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + +
+ +

L

+ + +
+ +

M

+ + + +
+ +

N

+ + +
+ +

P

+ + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + +
+ +

W

+ + + +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..c338b678 --- /dev/null +++ b/index.html @@ -0,0 +1,271 @@ + + + + + + + + mrrc-hdr-qa documentation — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

mrrc-hdr-qa documentation

+

Code to parse dicoms into a template database and alert on non-conforming sequences.

+
+

Code

+
+
+ + + + + + + + + + + + + + + + + + + + + +

mrqart

Broadcast filesystem updates (via inotify) over websockets.

dcmmeta2tsv

Give a tab separated metadata value line per dicom file.

acq2sqlite

Convert db.txt into a sqlite database.

change_header

Modify DICOM header information to simulate failing QA.

template_checker

check a header against best template

compliance_check_html

+
+
+

Overview

+
+

MRQART

+

MR Quality Assurance in (near) Real Time: +#. Samba server recieves files from scanner (iceconfig) +#. mrqart.main() initializes an inotify watcher +#. New dcm files parsed with dcm_checker.reader.read_dicom_tags() +#. Headers compared to template dcm_checker.check_header() +#. Dicom vs template comparisons is sent to the web browser via web sockets

+
+
    +
  • socket and http server managed by mrqart

  • +
  • javascript in static/index.html provides client websockets ingest and styling

  • +
+
+_images/mrqart-browserUI_20241124.png +
+
+

Template

+

See acq2sqlite.DBQuery.CONSTS

+

Here’s an example for the RewardedAnti task acquisitions in the WPC-8620 project. The ideal template is found finding the most frequent set of repeated key parameters. 150 of the RewardedAnti seqeuences share the same acq_param set, here stored in the sqlite db on rowid=35. But 4 acquisitions (rows in acq) don’t match. In this case all mismatches can be found in TA.

+_images/nonconforming_example.png +
+
+
+

Parameters

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dicom tag list

name

tag

desc

Phase

PhaseEncodingDirectionPositive

csa header phase 0/1

iPAT

ImaPATModeText

csa header grappa acceleration

AcqTime

00080032

Acquisition Time like 145446.685000

AcqDate

00080022

like 20241004

SeriesNumber

00200011

REL Series Number

SubID

00100010

patient name

Comments

00204000

REL Image Comments//Unaliased MB3/PE4/LB SENSE1

Operator

00081070

Station

00081010

unique scanner id

Project

00081030

ID Study Description//Brain^wpc-8620

SequenceName

0008103e

series description

SequenceType

00180024

ACQ Sequence Name

PED_major

00181312

ACQ Phase Encoding Direction ROW or COL

TR

00180080

TE

00180081

Matrix

00181310

ACQ Acquisition Matrix

PixelResol

00280030

IMG Pixel Spacing//2.29787230491642.2978723049164

BWP

00180095

ACQ Pixel Bandwidth (?) also unimplemented? need CSA value?

BWPPE

00191028

in matlab S.BandwidthPerPixelPhaseEncode;

FA

00181314

TA

0051100a

FoV

0051100c

eg FoV 1617*1727; but actually cocaluated from matrix and spacing?

Shims

ASCCOV

sAdjData.uiAdjShimModesGRADSPEC.asGPAData[0].lOffset{XYZ}sGRADSPEC.alShimCurrent[0:4]sTXSPEC.asNucleusInfo[0].lFrequency

+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..f72eb58facc94d1f9b67ae34ba977f16ab83a81d GIT binary patch literal 940 zcmV;d15^AXAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkya&luW zXk>CNabXH0AXa5^b7^mGIv@%oAXI2&AaZ4GVQFq;WpW^IW*~HEX>%ZEX>4U6X>%ZB zZ*6dLWpi_7WFU2OX>MmAdTeQ8E(&{29h#PEwPGZ3!>HQXxx&^%=uMu!!1|R5W^*9qq!@FUNTV@V8_F_IUP$V zV~J*zNjsWVf(GHjz_ZaT!$8yAg@V-B(Lifn>hA=b@@oc<90=Ogso*BWz z9E4MtZyc}`5MR5Tq$i49>g{NDYT-LGjbW&tFf~i1ZLi1Sy~3Lm3bMT-GLW88ftdtn zm|fx1XehPLpeeiLxLXRVhh2_zcB>YypEK3?IbV0VQzldPdIv9*q)u z4L)zXbHdA8>9Ad%RXSno#6rDa=yPi_LdMgobTyrDBU#UQ6hK|4>72~(A5v$D9QdrA zwdIY>{J9z$q!;Pck*+=^1n1hjt66%38X|41O+bn2y3SPQhn7zOGiILmu+maVO_m9!|#-#jzHt4-C z9zn0~jLb!`_Y(~h19ykm*z7!0G@kTdFXH#-C_KvsY3+$O-dlP{HFt8KSy zXb7$8B+v9@4KYe9f%o{j??+g{I{4*g@+R + + + + + + Python Module Index — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Python Module Index

+ +
+ a | + c | + d | + m | + t +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ a
+ acq2sqlite +
 
+ c
+ change_header +
+ compliance_check_html +
 
+ d
+ dcmmeta2tsv +
 
+ m
+ mrqart +
 
+ t
+ template_checker +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 00000000..fe44f081 --- /dev/null +++ b/search.html @@ -0,0 +1,125 @@ + + + + + + + Search — mrrc-hdr-qa documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..c49b9060 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"Code": [[6, "code"]], "Dicom tag list": [[6, "id1"]], "MRQART": [[6, "mrqart"]], "Overview": [[6, "overview"]], "Parameters": [[6, "parameters"]], "Template": [[6, "template"]], "acq2sqlite": [[0, null]], "change_header": [[1, null]], "compliance_check_html": [[2, null]], "dcmmeta2tsv": [[3, null]], "mrqart": [[4, null]], "mrrc-hdr-qa documentation": [[6, null]], "template_checker": [[5, null]]}, "docnames": ["_autosummary/acq2sqlite", "_autosummary/change_header", "_autosummary/compliance_check_html", "_autosummary/dcmmeta2tsv", "_autosummary/mrqart", "_autosummary/template_checker", "index"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["_autosummary/acq2sqlite.rst", "_autosummary/change_header.rst", "_autosummary/compliance_check_html.rst", "_autosummary/dcmmeta2tsv.rst", "_autosummary/mrqart.rst", "_autosummary/template_checker.rst", "index.rst"], "indexentries": {"acq2sqlite": [[0, "module-acq2sqlite", false]], "change_header": [[1, "module-change_header", false]], "change_tags() (in module change_header)": [[1, "change_header.change_tags", false]], "check_acq() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.check_acq", false]], "check_file() (template_checker.templatechecker method)": [[5, "template_checker.TemplateChecker.check_file", false]], "check_header() (template_checker.templatechecker method)": [[5, "template_checker.TemplateChecker.check_header", false]], "check_row() (template_checker.templatechecker method)": [[5, "template_checker.TemplateChecker.check_row", false]], "checkresult (class in template_checker)": [[5, "template_checker.CheckResult", false]], "column_names() (in module acq2sqlite)": [[0, "acq2sqlite.column_names", false]], "compliance_check_html": [[2, "module-compliance_check_html", false]], "consts (acq2sqlite.dbquery attribute)": [[0, "acq2sqlite.DBQuery.CONSTS", false]], "csa_fetch() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.csa_fetch", false]], "curseqstation (class in mrqart)": [[4, "mrqart.CurSeqStation", false]], "dbquery (class in acq2sqlite)": [[0, "acq2sqlite.DBQuery", false]], "dcmmeta2tsv": [[3, "module-dcmmeta2tsv", false]], "dicomtagreader (class in dcmmeta2tsv)": [[3, "dcmmeta2tsv.DicomTagReader", false]], "dict_to_db_row() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.dict_to_db_row", false]], "errorcompare (class in template_checker)": [[5, "template_checker.ErrorCompare", false]], "find_acquisitions_since() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.find_acquisitions_since", false]], "find_errors() (in module template_checker)": [[5, "template_checker.find_errors", false]], "gen_acqdates() (in module change_header)": [[1, "change_header.gen_acqdates", false]], "gen_anon() (in module change_header)": [[1, "change_header.gen_anon", false]], "gen_ids() (in module change_header)": [[1, "change_header.gen_ids", false]], "generate_html_report() (in module compliance_check_html)": [[2, "compliance_check_html.generate_html_report", false]], "get() (mrqart.httpindex method)": [[4, "mrqart.HttpIndex.get", false]], "get_template() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.get_template", false]], "http_port (in module mrqart)": [[4, "mrqart.HTTP_PORT", false]], "http_run() (in module mrqart)": [[4, "mrqart.http_run", false]], "httpindex (class in mrqart)": [[4, "mrqart.HttpIndex", false]], "is_template() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.is_template", false]], "load_template() (in module compliance_check_html)": [[2, "compliance_check_html.load_template", false]], "main() (in module mrqart)": [[4, "mrqart.main", false]], "main_make_mods() (in module change_header)": [[1, "change_header.main_make_mods", false]], "module": [[0, "module-acq2sqlite", false], [1, "module-change_header", false], [2, "module-compliance_check_html", false], [3, "module-dcmmeta2tsv", false], [4, "module-mrqart", false], [5, "module-template_checker", false]], "monitor_dirs() (in module mrqart)": [[4, "mrqart.monitor_dirs", false]], "most_recent() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.most_recent", false]], "mrqart": [[4, "module-mrqart", false]], "nullval (class in dcmmeta2tsv)": [[3, "dcmmeta2tsv.NULLVAL", false]], "param_rowid() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.param_rowid", false]], "read_csa() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.read_csa", false]], "read_dicom_tags() (dcmmeta2tsv.dicomtagreader method)": [[3, "dcmmeta2tsv.DicomTagReader.read_dicom_tags", false]], "read_known_tags() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.read_known_tags", false]], "read_shims() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.read_shims", false]], "read_tags() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.read_tags", false]], "search_acq_param() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.search_acq_param", false]], "session_from_fname() (in module mrqart)": [[4, "mrqart.session_from_fname", false]], "state (in module mrqart)": [[4, "mrqart.STATE", false]], "tagpair_to_hex() (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.tagpair_to_hex", false]], "tagvalues (in module dcmmeta2tsv)": [[3, "dcmmeta2tsv.TagValues", false]], "template_checker": [[5, "module-template_checker", false]], "templatechecker (class in template_checker)": [[5, "template_checker.TemplateChecker", false]], "track_ws() (in module mrqart)": [[4, "mrqart.track_ws", false]], "tsv_to_dict() (acq2sqlite.dbquery method)": [[0, "acq2sqlite.DBQuery.tsv_to_dict", false]], "update_isnew() (mrqart.curseqstation method)": [[4, "mrqart.CurSeqStation.update_isnew", false]], "webserver (class in mrqart)": [[4, "mrqart.WebServer", false]], "ws_connections (in module mrqart)": [[4, "mrqart.WS_CONNECTIONS", false]], "ws_port (in module mrqart)": [[4, "mrqart.WS_PORT", false]]}, "objects": {"": [[0, 0, 0, "-", "acq2sqlite"], [1, 0, 0, "-", "change_header"], [2, 0, 0, "-", "compliance_check_html"], [3, 0, 0, "-", "dcmmeta2tsv"], [4, 0, 0, "-", "mrqart"], [5, 0, 0, "-", "template_checker"]], "acq2sqlite": [[0, 1, 1, "", "DBQuery"], [0, 4, 1, "", "column_names"]], "acq2sqlite.DBQuery": [[0, 2, 1, "", "CONSTS"], [0, 3, 1, "", "check_acq"], [0, 3, 1, "", "dict_to_db_row"], [0, 3, 1, "", "find_acquisitions_since"], [0, 3, 1, "", "get_template"], [0, 3, 1, "", "is_template"], [0, 3, 1, "", "most_recent"], [0, 3, 1, "", "param_rowid"], [0, 3, 1, "", "search_acq_param"], [0, 3, 1, "", "tsv_to_dict"]], "change_header": [[1, 4, 1, "", "change_tags"], [1, 4, 1, "", "gen_acqdates"], [1, 4, 1, "", "gen_anon"], [1, 4, 1, "", "gen_ids"], [1, 4, 1, "", "main_make_mods"]], "compliance_check_html": [[2, 4, 1, "", "generate_html_report"], [2, 4, 1, "", "load_template"]], "dcmmeta2tsv": [[3, 1, 1, "", "DicomTagReader"], [3, 1, 1, "", "NULLVAL"], [3, 2, 1, "", "TagValues"], [3, 4, 1, "", "csa_fetch"], [3, 4, 1, "", "read_csa"], [3, 4, 1, "", "read_known_tags"], [3, 4, 1, "", "read_shims"], [3, 4, 1, "", "read_tags"], [3, 4, 1, "", "tagpair_to_hex"]], "dcmmeta2tsv.DicomTagReader": [[3, 3, 1, "", "read_dicom_tags"]], "mrqart": [[4, 1, 1, "", "CurSeqStation"], [4, 5, 1, "", "HTTP_PORT"], [4, 1, 1, "", "HttpIndex"], [4, 5, 1, "", "STATE"], [4, 5, 1, "", "WS_CONNECTIONS"], [4, 5, 1, "", "WS_PORT"], [4, 1, 1, "", "WebServer"], [4, 4, 1, "", "http_run"], [4, 4, 1, "", "main"], [4, 4, 1, "", "monitor_dirs"], [4, 4, 1, "", "session_from_fname"], [4, 4, 1, "", "track_ws"]], "mrqart.CurSeqStation": [[4, 3, 1, "", "update_isnew"]], "mrqart.HttpIndex": [[4, 3, 1, "", "get"]], "template_checker": [[5, 1, 1, "", "CheckResult"], [5, 1, 1, "", "ErrorCompare"], [5, 1, 1, "", "TemplateChecker"], [5, 4, 1, "", "find_errors"]], "template_checker.TemplateChecker": [[5, 3, 1, "", "check_file"], [5, 3, 1, "", "check_header"], [5, 3, 1, "", "check_row"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "data", "Python data"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:data"}, "terms": {"": [0, 1, 3, 5, 6], "0": [0, 1, 3, 6], "0008": 1, "00080022": 6, "00080032": 6, "00081010": 6, "00081030": 6, "0008103e": 6, "00081070": 6, "0010": 1, "00100010": 6, "00180024": 6, "00180080": 6, "00180081": 6, "00180095": 6, "00181310": 6, "00181312": 6, "00181314": 6, "00191028": 6, "001_000001_000001": 4, "001_000017_000066": 4, "001_sequencenum_seriesnum": 4, "00200011": 6, "00204000": 6, "0022": 1, "00280030": 6, "0030": 1, "0032": 1, "0040": 1, "0051": 3, "0051100a": 6, "0051100c": 6, "00_build_db": 0, "015y": 1, "092132": 1, "0x0018": [1, 3], "0x0029": 3, "0x0080": 3, "0x1010": 3, "0x1017": 3, "0x1020": 3, "0x1030": 1, "0x51": 3, "1": [0, 1, 3, 6], "10": 4, "1010": 1, "1017": 3, "1107": [1, 4], "1174": 3, "12": [1, 4], "123160323": 3, "1300": [0, 3], "145446": 6, "150": 6, "154833": 3, "1617": 6, "167046": 1, "16_16_50_16_dst_1": 4, "1727": 6, "2": [0, 1, 4, 6], "20": 3, "20070404": 1, "20220913": 3, "20221222": 1, "2022122209214150118864465": 1, "2022122209214176799264617": 1, "20241004": 6, "20241016": 4, "20241102": 4, "24": 4, "2475": 3, "265000": 3, "2978723049164": 6, "29787230491642": 6, "3": [0, 1, 4], "35": 6, "4": [3, 6], "43": [1, 4], "4575": 3, "5": [1, 4], "5000": 4, "531": 3, "54": 3, "59": 3, "67078": 4, "685000": 6, "722500": 1, "8": 3, "8080": 4, "8620": [0, 6], "A": 2, "AS": 1, "But": 6, "For": 0, "In": [3, 6], "The": [0, 6], "These": 0, "_": 0, "aca_param": 0, "acceler": 6, "acq": [5, 6], "acq2sqlit": 6, "acq_param": [0, 6], "acqdat": [0, 6], "acqtim": 6, "acquisit": [0, 1, 5, 6], "acquisitiond": 1, "acquisitiontim": 1, "across": 0, "actual": [4, 6], "ad": 0, "add": 0, "afni": [1, 3], "ag": 1, "against": 5, "agnost": 0, "alert": 6, "all": [0, 1, 4, 6], "alreadi": [0, 4], "alshimcurr": [3, 6], "also": [0, 3, 6], "alwai": 0, "an": [0, 2, 6], "ani": [0, 4, 5], "applic": 4, "aquisit": 0, "ar": [1, 3, 4], "arrai": 3, "asccov": 6, "asgpadata": [3, 6], "asnucleusinfo": [3, 6], "assur": [0, 6], "async": 4, "attribut": [0, 3, 4], "b": 0, "badinput": 3, "bandwidth": 6, "bandwidthperpixelphaseencod": 6, "base": 4, "bash": 0, "bespok": 0, "best": 5, "birth": 1, "bool": [0, 4], "brain": 6, "broadcast": 4, "browser": [4, 6], "bwp": [0, 6], "bwppe": [0, 6], "c": [0, 1], "cach": [3, 5], "can": [1, 4, 6], "cannot": 3, "case": 6, "chang": [1, 4], "change_tag": 1, "check": [0, 3, 5], "check_acq": 0, "check_fil": 5, "check_head": [2, 5, 6], "check_result": 2, "check_row": 5, "checkresult": [2, 5], "chm": 3, "class": [0, 3, 4, 5], "client": 6, "cn": 0, "cocalu": 6, "code": [0, 1, 3], "col": 6, "column": 0, "column_nam": 0, "combin": 0, "comma": 3, "comment": [0, 3, 6], "compar": 6, "comparison": [2, 5, 6], "concat": 3, "confirm": 1, "conform": [5, 6], "connect": [0, 4, 5], "consid": 0, "const": [0, 6], "contain": [2, 3], "content": 3, "conveni": 0, "convert": [0, 3], "copi": 1, "could": 4, "count": 4, "csa": [0, 3, 6], "csa_": 3, "csa_fetch": 3, "csa_tr": 3, "csaread": 3, "csv_str": 3, "current": [4, 5], "current_hdr": 5, "curseqst": 4, "d": 0, "da": 1, "dai": 1, "data": [1, 4], "data_el": 1, "databas": [0, 6], "datael": 1, "date": [0, 1], "db": [0, 4, 5, 6], "dbqueri": [0, 6], "dciom": 3, "dcm": [1, 3, 4, 6], "dcm_checker": [4, 6], "dcm_dir": 1, "dcm_fname": 4, "dcm_path": [3, 5], "dcmmeta2tsv": 0, "dcmread": [1, 3], "dd": 0, "default": [0, 4], "defin": [0, 3, 4], "desc": [3, 5, 6], "descript": 6, "dicom": [0, 1, 2, 3, 4, 5], "dicom_hinfo": [1, 3], "dicomstream": 4, "dicomtagread": 3, "dict": [0, 3, 4, 5], "dict_to_db_row": 0, "dictionari": [0, 3, 5], "dictonair": 3, "differ": 4, "direct": 6, "directori": 1, "disbatch": 5, "disconnect": 4, "dispatch": 4, "dne": 3, "doe": 3, "don": [4, 6], "dtr": 3, "each": 4, "eg": 6, "element": 1, "encod": 6, "epi": 0, "error": [0, 5], "errorcompar": 5, "eventu": 4, "everi": 0, "ex": 1, "ex_path": 1, "exact": 0, "exampl": [0, 1, 6], "example_dicom": [1, 3], "example_fnam": 1, "example_nam": 1, "exec": 1, "execut": 0, "exercis": 1, "exist": [0, 3], "expect": [0, 3, 5], "extract": [1, 3, 4], "f": [0, 1], "fa": [0, 6], "fail": [0, 1], "fals": 0, "fanci": 4, "field": [1, 3], "file": [1, 2, 3, 4, 5, 6], "filedataset": 1, "filenam": [0, 4], "filesystem": 4, "find": [0, 1, 5, 6], "find_acquisitions_sinc": 0, "find_error": 5, "first": [0, 1, 3], "fork": 4, "format": [0, 2], "found": 6, "fov": [0, 6], "frequent": 6, "from": [0, 1, 2, 3, 4, 5, 6], "function": [0, 1, 2, 3, 4, 5], "futur": 3, "gen_acqd": 1, "gen_anon": 1, "gen_id": 1, "gener": [1, 2], "generate_html_report": 2, "get": [3, 4], "get_templ": 0, "give": [3, 4], "given": 5, "grappa": 6, "greater": 0, "ha": [3, 4], "habittask": 1, "handl": 4, "handler": 4, "hard": 0, "have": [0, 5], "hdr": [3, 5], "head": 4, "header": [0, 1, 2, 3, 4, 5, 6], "here": [0, 6], "hex": 3, "highlight": 2, "hoc": 0, "hold": 4, "html": [2, 4, 6], "http": [4, 6], "http_port": 4, "http_run": 4, "httpindex": 4, "httpserverrequest": 4, "i": [0, 1, 3, 4, 6], "iceconfig": 6, "id": [0, 1, 4, 6], "ideal": [0, 6], "identifi": 0, "ima": 1, "imag": 6, "imapatmodetext": [3, 6], "img": 6, "imit": 3, "implement": 0, "inam": 1, "index": [3, 4, 6], "info": [1, 3], "inform": [1, 5], "ingest": 6, "initi": 6, "inotifi": [4, 6], "input": [0, 1], "insert": 0, "insit": 4, "int": [0, 3], "invari": 0, "ipat": [0, 3, 6], "is_templ": 0, "isol": 3, "item": 3, "itemnam": 3, "its": 5, "javascript": [4, 6], "jinja2": 2, "join": 3, "just": 4, "k": [0, 1], "kei": [0, 3, 5, 6], "know": 4, "kwarg": 4, "l": 4, "languag": 0, "last": 1, "lb": 6, "lfrequenc": [3, 6], "like": [0, 1, 3, 6], "line": [0, 3], "list": [0, 1, 3, 4, 5], "listen": 4, "lo": 1, "load": 2, "load_templ": 2, "loc": 3, "locat": 1, "loffset": [3, 6], "look": 3, "lookup": 0, "m": 0, "made": 1, "main": [4, 6], "main_make_mod": 1, "maintain": 4, "make": 1, "make_template_by_count": 0, "maltab": 3, "manag": 6, "match": [0, 3, 4, 6], "matlab": [3, 6], "matrix": [0, 6], "mb3": 6, "memori": 0, "messag": 4, "metadata": [0, 3], "might": [3, 4], "mismatch": [2, 5, 6], "miss": 3, "mm": 0, "mod": 1, "mod1": 1, "mod2": 1, "modif": 1, "modifi": [1, 4], "modul": [3, 4], "monitor_dir": 4, "more": [3, 4], "most": [0, 6], "most_rec": 0, "move": 3, "mr": [1, 4, 6], "mrqart_test": 4, "multipl": 4, "name": [0, 1, 3, 4, 5, 6], "need": [4, 6], "nest": 3, "new": [0, 4, 6], "new_data": 1, "new_id": 1, "newpnam": 1, "nibabel": 3, "non": [5, 6], "none": [0, 1, 3], "normal": 0, "notag": 3, "null": 3, "nullval": 3, "number": 6, "obj": 3, "object": [2, 3], "onli": [1, 4], "open": 0, "oper": 6, "option": 1, "order": 3, "orm": 0, "our": 3, "out": 3, "out_dir": 1, "output": [0, 2, 3, 5], "over": 4, "p2": 3, "page": 4, "pair": [0, 3], "param": [0, 3, 5], "param_id": 0, "param_rowid": 0, "paramet": [0, 1, 2, 3, 4, 5], "pars": [3, 4, 6], "part": 0, "pat": 1, "path": [1, 2, 3, 4, 5], "pathlik": [3, 4], "patient": [1, 6], "patientag": 1, "patientbirthd": 1, "patientsex": 1, "pe4": 6, "ped_major": [0, 6], "per": 3, "perpetu": 4, "phase": [0, 6], "phaseencodingdirectionposit": [3, 6], "pixel": 6, "pixelresol": [0, 6], "pn": 1, "pname": 0, "poorli": 0, "port": 4, "prioriti": 3, "privat": 3, "project": [0, 6], "prot": 0, "protocol": 0, "protocolnam": 1, "provid": [0, 6], "pull": 3, "put": 1, "py": 0, "pydicom": [1, 3], "qa": 1, "qualiti": 6, "qualliti": 0, "queri": [0, 5], "random": 1, "read": [0, 3, 4, 5], "read_csa": 3, "read_dicom_tag": [3, 6], "read_known_tag": [0, 3], "read_shim": 3, "read_tag": 3, "reader": 6, "real": 6, "receiv": 4, "recent": 0, "reciev": 6, "rel": 6, "repeat": [4, 6], "replac": 1, "report": [2, 5], "repres": 0, "request": 4, "result": 2, "retriev": 0, "return": [0, 1, 2, 3, 4, 5], "rewardedanti": [0, 6], "rewardedanti_good": 3, "row": [0, 5, 6], "rowid": [0, 6], "run": 4, "sadjdata": [3, 6], "safe": 3, "samba": 6, "same": [0, 3, 6], "save": 1, "scan": 0, "scanner": [4, 6], "schema": 0, "search_acq_param": 0, "see": [0, 1, 3, 4, 6], "seen": [0, 4], "send": 4, "sense1": 6, "sent": 6, "separ": [0, 3], "sepstr": 1, "seq": 0, "seqeuenc": 6, "seqnam": [0, 4], "sequenc": [0, 4, 6], "sequencenam": [0, 6], "sequencetyp": [0, 6], "seri": [0, 3, 4, 6], "seriesnumb": 6, "serv": 4, "server": [4, 6], "servic": 4, "session": [0, 4], "session_from_fnam": 4, "set": [0, 4, 6], "sex": 1, "sgradspec": [3, 6], "share": [0, 6], "shell": 1, "shim": [3, 6], "should": 0, "sideffect": 1, "siemen": 3, "simul": 1, "since_d": 0, "singl": [0, 5], "skip": [3, 4], "socket": [4, 6], "sourc": [0, 1, 2, 3, 4, 5], "space": 6, "spam": 4, "specif": 4, "specifi": [0, 1, 4], "split": 0, "sql": [0, 5], "sqlite": [0, 6], "sqlite3": 0, "sqname": 0, "state": 4, "static": [4, 6], "station": [4, 6], "statu": 5, "store": [4, 6], "str": [0, 1, 2, 3, 4, 5], "string": [0, 1, 2, 3], "structur": 3, "studi": [0, 6], "stxspec": [3, 6], "style": 6, "subid": 6, "t": [1, 4, 6], "ta": [0, 6], "tab": [0, 3], "tag": [0, 1, 3, 5], "tagfil": 3, "taglist": [0, 3], "tagnam": 3, "tagpair_to_hex": 3, "tagvalu": 3, "task": [0, 6], "te": [0, 6], "templat": [0, 2, 5], "template_by_count": 0, "template_path": 2, "templatecheck": 5, "text": 3, "than": [0, 3], "thi": [0, 4, 6], "thread": 4, "time": [0, 1, 6], "timestamp": 0, "tm": 1, "todo": 4, "tornado": 4, "tr": [0, 3, 6], "track": [0, 4], "track_w": 4, "true": [0, 3, 4], "try": 0, "tsv": [0, 3], "tsv_to_dict": 0, "tupl": [1, 3], "txt": [0, 3], "type": [0, 1, 2, 3, 4, 5], "uiadjshimmod": 3, "uiadjshimmodesgradspec": 6, "unalias": 6, "unimpl": 6, "uniqu": [0, 6], "unless": 1, "updat": 4, "update_isnew": 4, "url": 4, "us": [0, 1, 2, 3, 4], "v": 6, "valu": [0, 1, 3, 5, 6], "ve": 4, "via": [0, 4, 6], "vr": 1, "wai": 4, "wait": 4, "want": 3, "watcher": [4, 6], "we": [0, 1, 4, 5], "web": [4, 6], "webserv": 4, "websocket": [4, 6], "what": [0, 4], "when": [0, 3, 4], "where": 1, "wildcard": 0, "within": 0, "wpc": [0, 6], "write": 1, "ws_connect": 4, "ws_port": 4, "x": [0, 1, 3], "xt": 0, "xx": 1, "xyz": 6, "y": 3, "yesterdai": 0, "yield": 1, "yyyi": 0, "z": 3}, "titles": ["acq2sqlite", "change_header", "compliance_check_html", "dcmmeta2tsv", "mrqart", "template_checker", "mrrc-hdr-qa documentation"], "titleterms": {"acq2sqlit": 0, "change_head": 1, "code": 6, "compliance_check_html": 2, "dcmmeta2tsv": 3, "dicom": 6, "document": 6, "hdr": 6, "list": 6, "mrqart": [4, 6], "mrrc": 6, "overview": 6, "paramet": 6, "qa": 6, "tag": 6, "templat": 6, "template_check": 5}}) \ No newline at end of file diff --git a/taglist.csv b/taglist.csv new file mode 100644 index 00000000..3e2e37ea --- /dev/null +++ b/taglist.csv @@ -0,0 +1,24 @@ +name,tag,desc +Phase,PhaseEncodingDirectionPositive, csa header phase 0/1 +iPAT,ImaPATModeText,csa header grappa acceleration +AcqTime,00080032, Acquisition Time like 145446.685000 +AcqDate,00080022, like 20241004 +SeriesNumber,00200011, REL Series Number +SubID,00100010, patient name +Comments,00204000,REL Image Comments//Unaliased MB3/PE4/LB SENSE1 +Operator,00081070 +Station,00081010,unique scanner id +Project,00081030, ID Study Description//Brain^wpc-8620 +SequenceName,0008103e, series description +SequenceType,00180024, ACQ Sequence Name +PED_major,00181312, ACQ Phase Encoding Direction ROW or COL +TR,00180080 +TE,00180081 +Matrix,00181310, ACQ Acquisition Matrix +PixelResol,00280030, IMG Pixel Spacing//2.2978723049164\2.2978723049164 +BWP,00180095, ACQ Pixel Bandwidth (?) also unimplemented? need CSA value? +BWPPE,00191028, in matlab S.BandwidthPerPixelPhaseEncode; +FA,00181314 +TA,0051100a +FoV,0051100c, eg FoV 1617*1727; but actually cocaluated from matrix and spacing? +Shims,ASCCOV,sAdjData.uiAdjShimModesGRADSPEC.asGPAData[0].lOffset{XYZ}sGRADSPEC.alShimCurrent[0:4]sTXSPEC.asNucleusInfo[0].lFrequency