Loading ...
Sorry, an error occurred while loading the content.

Intermediate step?

Expand Messages
  • Drew Bernat
    If I m starting to sound like a broken record (Or a CS major in the shower) please let me know. It seems to me that doing a full-blown conversion of PCGen to
    Message 1 of 5 , Aug 13, 2002
    • 0 Attachment
      If I'm starting to sound like a broken record (Or a CS major in the
      shower) please let me know.

      It seems to me that doing a full-blown conversion of PCGen to XML would be
      Hard. However, intermediate steps would be very possible:

      1) Output to an XML character sheet
      2) Create a standardized parser for LST files
      3) Create a standardized parser for PC files

      If we do #2 or #3 right then we should be able to drop in an XML
      replacement at a later date, as the point of a parser is to separate the
      form of the data from the data itself.

      I'd like to start an effort towards doing the second, particularly aimed
      at removing as many string manipulations as possible within the PCGen
      backend. This should be relatively easy to do, given that it is working
      with a fairly small part of the code.

      I hope.

      Step 1: create a formalized grammar for PCGen tags. I looked around the
      files section, but I didn't find anything like this. Is there such?

      Drew

      (The CS joke goes like such: "Why does a CS major never get out of the
      shower?" "Because of the instructions on the shampoo: lather, rinse,
      repeat")

      --
      Drew Bernat __ ____
      abernat@... | | |
      http://www.zathras.net | |
    • cacharbe
      ... the ... Erm, no. I m working on that for the perl parser I m building for the prettylst rewrite. The hopes (as I mentioned on the main list) is that some
      Message 2 of 5 , Aug 13, 2002
      • 0 Attachment
        > Step 1: create a formalized grammar for PCGen tags. I looked around
        the
        > files section, but I didn't find anything like this. Is there such?
        >

        Erm, no.

        I'm working on that for the perl parser I'm building for the
        prettylst rewrite.

        The hopes (as I mentioned on the main list) is that some of the
        measures taken by Bryan and Mynex over the past couple days will help
        us move to a standardized set of tags, which will actually mean that
        I can write a grammar that isn't obsolete within a week because some
        Yahoo adds five tags to fix a small, narrow scoped problem, only to
        create a HUGE one in the code and for the other LST monkeys.

        Anyway...

        All input is welcome.

        My thought is that starting on files that have the fewest changes
        over time would be a good exercise, then we can get all the rest.

        Which means we should just start on "All the rest". *grin*

        Chuck.
      • Eric Beaudoin
        ... Count on it. Expect the next list right after the next release of PCGEN. There are too many changes hapening right now for a imediate release to be useful.
        Message 3 of 5 , Aug 13, 2002
        • 0 Attachment
          At 23:11 2002.08.13, Keith Davies wrote:
          >Eric was maintaining a list of tags used in the LST files, but he was
          >away for a time. I suspect he'll have a new version of that file for us
          >sometime (soon, I hope) that we can use to start gearing up the parsers
          >for conversion (which Chuck has been working on, with Eric).
          >
          >
          >Keith

          Count on it. Expect the next list right after the next release of PCGEN. There are too many changes hapening right now for a imediate release to be useful.

          Best


          -----------------------------------------------------------
          √Čric "Space Monkey" Beaudoin
          >> In space, no one can hear you sleep...
          >> Camels to can climb trees (and sometime eat them)
          <mailto:beaudoer@...>
        • Keith Davies
          ... Option A: Already have this -- the *sheet*.fo templates write XSL-FO, which is an XML file. I know it s a generic one (in that it focuses only on
          Message 4 of 5 , Aug 13, 2002
          • 0 Attachment
            On Tue, Aug 13, 2002 at 07:58:13PM -0500, Drew Bernat wrote:
            > If I'm starting to sound like a broken record (Or a CS major in the
            > shower) please let me know.
            >
            > It seems to me that doing a full-blown conversion of PCGen to XML would be
            > Hard. However, intermediate steps would be very possible:
            >
            > 1) Output to an XML character sheet

            Option A: Already have this -- the *sheet*.fo templates write XSL-FO,
            which is an XML file. I know it's a generic one (in that it focuses
            only on presentation and all context is lost), but technically it
            meets this requirement.

            Option B: Create an XML schema that describes -- with full, or at least
            significant, context -- and output the data to an XML file that
            contains this data.

            Which, weirdly enough, is part of what we're trying to do here. We
            could even use the existing template mechanism (slightly modified, so
            it picks up the new *.xml templates and doesn't try to convert them to
            PDF or the like. All we have to do is, well, come up with a schema to
            adequately describe the data being output.

            > 2) Create a standardized parser for LST files

            This would be very cool to have. My understanding of the current parser
            is that it is largely ad hoc and can use some redesign and rebuilding.
            OTOH, there is an existing parser that reads the stuff and stores it.
            In designing the XML schema, we'll be thinking a lot, and really hard,
            about how the data interacts with itself... which is what would be
            needed to redesign the internal data model. It's not such an exciting
            exercise that I would ask people to do it more than once.

            > 3) Create a standardized parser for PC files

            I think a reasonably-designed schema would be useable for both purposes.
            If we keep a high level of context in the data, then reducing it (for
            instance, collapsing all boni to attributes and saves and presenting
            only the end result) is reasonably easy.

            > If we do #2 or #3 right then we should be able to drop in an XML
            > replacement at a later date, as the point of a parser is to separate the
            > form of the data from the data itself.

            That would be a wonderful idea if we were merely converting the existing
            LST format to XML. However, it was decided months ago that the better
            thing to do is remodel the schema around the data (rather than the
            existing files), which may well make what you're proposing impossible,
            or at least improbably difficult.

            > I'd like to start an effort towards doing the second, particularly aimed
            > at removing as many string manipulations as possible within the PCGen
            > backend. This should be relatively easy to do, given that it is working
            > with a fairly small part of the code.
            >
            > I hope.
            >
            > Step 1: create a formalized grammar for PCGen tags. I looked around the
            > files section, but I didn't find anything like this. Is there such?

            Step 2: ???

            Step 3: Great Data!


            Eric was maintaining a list of tags used in the LST files, but he was
            away for a time. I suspect he'll have a new version of that file for us
            sometime (soon, I hope) that we can use to start gearing up the parsers
            for conversion (which Chuck has been working on, with Eric).


            Keith
            --
            Keith Davies
            keith.davies@...

            PCGen-XML Reaper, smartass
          • Stuart Updegrave
            ... XSL-FO, ... focuses ... This is rather ad-hoc, and I certainly have not created DTD / XSD for it, but attached is the XML character sheet I m using
            Message 5 of 5 , Aug 13, 2002
            • 0 Attachment
              > From: Keith Davies [mailto:keith.davies@...]
              >
              > >
              > > 1) Output to an XML character sheet
              >
              > Option A: Already have this -- the *sheet*.fo templates write
              XSL-FO,
              > which is an XML file. I know it's a generic one (in that it
              focuses
              > only on presentation and all context is lost), but technically it
              > meets this requirement.

              This is rather ad-hoc, and I certainly have not created DTD / XSD for
              it, but attached is the XML character sheet I'm using currently. Feel
              free to use it as you see fit. Or not.

              Hope it proves useful.



              begin 666 csheet-su.xml
              M/#]X;6P@=F5R<VEO;CTB,2XP(B!E;F-O9&EN9STB=71F+3@B(#\^( T*/#]X
              M;6PM<W1Y;&5S:&5E="!T>7!E/2)T97AT+WAS;"(@:')E9CTB<F5S+V-S:&5E
              M="US=2YX<VQT(C\^#0H-"CQC:&%R86-T97(@;F%M93TB?$Y!345\(B!R86-E
              M/2)\4D%#17PB('!L87EE<FYA;64](GQ03$%915).04U%?"(@86QI9VX](GQ!
              M3$E'3DU%3E1\(B!D96ET>3TB?$1%2519?"(^#0I\)41/34%)3C!\#0H\9&]M
              M86EN<SX-"GQ&3U(N,"Q#3U5.5%M$3TU!24Y372PQ+#QD;VUA:6X@;F%M93TB
              M7$1/34%)3B5<(B!P;W=E<CT](EQ$3TU!24XE+E!/5T527"(L? T*/"]D;VUA
              M:6YS/@T*?"5\#0H)/&QE=F5L<R!T;W1A;#TB?%1/5$%,3$5614Q3?"(^#0H)
              M"3QX<"!C=7)R96YT/2)\15A0+D-54E)%3E1\(B!N97AT/2)\15A0+DY%6%1\
              M(B O/@T*"0D\8VQA<W-E<R!A;&P](GQ#3$%34TQ)4U1\(CX-"@D)?$9/4BXP
              M+$-/54Y46T-,05-315-=+#$L/&-L87-S(&YA;64](EQ#3$%34R5<(B!A8F)R
              M/2)<0TQ!4U-!0D(E7"(@;&5V96P](EQ#3$%34R4N3$5614Q<(B O/BQ\#0H)
              M"3PO8VQA<W-E<SX-"@D\+VQE=F5L<SX-"@D\8FEO/@T*"0D\<W1A=',@9V5N
              M9&5R/2)\1T5.1$52?"(@<VEZ93TB?%-)6D5\(B!H96EG:'0](GQ(14E'2%0N
              M1D]/5%!!4E1\)WQ(14E'2%0N24Y#2%!!4E1\(B!W96EG:'0](GQ714E'2%1\
              M(B!V:7-I;VX](GQ625-)3TY\(B!A9V4](GQ!1T5\(B!E>64](GQ#3TQ/4BY%
              M645\(B!H86ER/2)\0T],3U(N2$%)4GPL('Q,14Y'5$@N2$%)4GPB(&UO=F4]
              M(GQ-3U9%345.5'PB("\^#0H)"3QP:&]B:6%S/GQ02$]"24%3?#PO<&AO8FEA
              M<SX-"@D)/'!E<G-O;F%L:71Y/GQ015)33TY!3$E463)\/"]P97)S;VYA;&ET
              M>3X-"@D)/&EN=&5R97-T<SY\24Y415)%4U13?#PO:6YT97)E<W1S/@T*"0D\
              M9&5S8W)I<'1I;VX^/"%;0T1!5$%;?$1%4T-\75T^/"]D97-C<FEP=&EO;CX-
              M"@D)/&QO8V%T:6]N/GQ,3T-!5$E/3GP\+VQO8V%T:6]N/@T*"0D\8FEO/GQ"
              M24]\/"]B:6\^#0H)/"]B:6\^#0H)/&%B:6QI=&EE<SX-"@D)/&%B:6QI='D@
              M;F%M93TB<W1R(B!S=&%T/2)\4U1!5#!\(B!M;V0](GQ35$%4,"Y-3T1\(B O
              M/@T*"0D\86)I;&ET>2!N86UE/2)D97@B('-T870](GQ35$%4,7PB(&UO9#TB
              M?%-4050Q+DU/1'PB("\^#0H)"3QA8FEL:71Y(&YA;64](F-O;B(@<W1A=#TB
              M?%-4050R?"(@;6]D/2)\4U1!5#(N34]$?"(@+SX-"@D)/&%B:6QI='D@;F%M
              M93TB:6YT(B!S=&%T/2)\4U1!5#-\(B!M;V0](GQ35$%4,RY-3T1\(B O/@T*
              M"0D\86)I;&ET>2!N86UE/2)W:7,B('-T870](GQ35$%4-'PB(&UO9#TB?%-4
              M050T+DU/1'PB("\^#0H)"3QA8FEL:71Y(&YA;64](F-H82(@<W1A=#TB?%-4
              M050U?"(@;6]D/2)\4U1!5#4N34]$?"(@+SX-"@D\+V%B:6QI=&EE<SX-"@D\
              M<V%V97,^#0H)"3QS879E(&YA;64](D9/4E1)5%5$12(@=&]T86P](GQ&3U)4
              M25151$4N5$]404Q\(B!B87-E/2)\1D]25$E4541%+D)!4T5\(B!M;V0](GQ3
              M5$%4,BY-3T1\(B!M86=I8STB?$9/4E1)5%5$12Y-04=)0WPB(')A8V4](GQ&
              M3U)425151$4N4D%#17PB("\^#0H)"3QS879E(&YA;64](E)%1DQ%6"(@=&]T
              M86P](GQ2149,15@N5$]404Q\(B!B87-E/2)\4D5&3$58+D)!4T5\(B!M;V0]
              M(GQ35$%4,2Y-3T1\(B!M86=I8STB?%)%1DQ%6"Y-04=)0WPB(')A8V4](GQ2
              M149,15@N4D%#17PB("\^#0H)"3QS879E(&YA;64](E=)3$PB('1O=&%L/2)\
              M5TE,3"Y43U1!3'PB(&)A<V4](GQ724Q,+D)!4T5\(B!M;V0](GQ35$%4-"Y-
              M3T1\(B!M86=I8STB?%=)3$PN34%'24-\(B!R86-E/2)\5TE,3"Y204-%?"(@
              M+SX-"@D\+W-A=F5S/@T*"3QA8R!T;W1A;#TB?$%#+E1/5$%,?"(@8F%S93TB
              M?$%#+D)!4T5\(B!E<75I<#TB?$%#+D5154E0?"(@86)I;&ET>3TB?$%#+D%"
              M24Q)5%E\(B!S:7IE/2)\04,N4TE:17PB("\^#0H)/&AP('1O=&%L/2)\2%!\
              M(B O/@T*"3QM;W9E;65N="!V86QU93TB?$U/5D5-14Y4?"(@+SX-"@D\:6YI
              M=&EA=&EV92!M;V0](GQ)3DE424%4259%34]$?"(@+SX-"@D\871T86-K/@T*
              M"0D\;65L964@=&]T86P](GQ!5%1!0TLN345,144N5$]404Q\(B!A='1A8VL]
              M(GQ!5%1!0TLN345,145\(B!B87-E/2)\051404-++DU%3$5%+D)!4T5\(B\^
              M#0H)"3QR86YG960@=&]T86P](GQ!5%1!0TLN4D%.1T5$+E1/5$%,?"(@871T
              M86-K/2)\051404-++E)!3D=%1'PB(&)A<V4](GQ!5%1!0TLN4D%.1T5$+D)!
              M4T5\(B\^#0H)"3QU;F%R;65D('1O=&%L/2)\051404-++E5.05)-140N5$]4
              M04Q\(B!A='1A8VL](GQ!5%1!0TLN54Y!4DU%1'PB(&)A<V4](GQ!5%1!0TLN
              M54Y!4DU%1"Y"05-%?"(@9&%M86=E/2)\1$%-04=%+E5.05)-141\(B\^#0H)
              M/"]A='1A8VL^#0H)/&5Q=6EP('=E:6=H=#TB?%1/5$%,+E=%24=(5'PB('9A
              M;'5E/2)\5$]404PN5D%,545\(CX-"@D)/'=E87!O;G,^#0H)"7Q&3U(N,"Q#
              M3U5.5%M%45194$4N5T5!4$].72PQ+" \=V5A<&]N(&YA;64](EQ714%03TXE
              M+DY!345<(B!T;W1A;&AI=#TB7%=%05!/3B4N5$]404Q(251<(B!D86UA9V4]
              M(EQ714%03TXE+D1!34%'15PB(&UU;'0](EQ714%03TXE+DU53%1<(B!H86YD
              M/2)<5T5!4$].)2Y(04Y$7"(@<F%N9V4](EQ714%03TXE+E)!3D=%7"(@='EP
              M93TB7%=%05!/3B4N5%E015PB('-I>F4](EQ714%03TXE+E-)6D5<(B!S<')O
              M<#TB7%=%05!/3B4N4U!23U!<(B O/GP-"@D)/"]W96%P;VYS/@T*"0D\87)M
              M;W(^#0H)"7Q&3U(N,"Q#3U5.5%M%45194$4N05)-3U)=+#$L(#QI=&5M(&YA
              M;64](EQ!4DU/4B4N3D%-15PB(&%C8F]N=7,](EQ!4DU/4B4N04-"3TY54UPB
              M(&%C8VAE8VL](EQ!4DU/4B4N04-#2$5#2UPB(&)A<V5A8STB7$%234]2)2Y"
              M05-%04-<(B!F;&%T86,](EQ!4DU/4B4N1DQ!5$%#7"(@;6%X9&5X/2)<05)-
              M3U(E+DU!6$1%6%PB(&UO=F4](EQ!4DU/4B4N34]615PB('-P96QL9F%I;#TB
              M7$%234]2)2Y34$5,3$9!24Q<(B!S<')O<#TB7$%234]2)2Y34%)/4%PB('1O
              M=&%L86,](EQ!4DU/4B4N5$]404Q!0UPB('1Y<&4](EQ!4DU/4B4N5%E015PB
              M('=T/2)<05)-3U(E+E=47"(@+SY\#0H)"3PO87)M;W(^#0H)"3QC;VEN/@T*
              M"0E\1D]2+C L0T]53E1;15%465!%+D-O:6Y=+#$L/&ET96T@;F%M93TB7$51
              M5%E012Y#;VEN+B4N3D%-15PB(&-O<W0](EQ%45194$4N0V]I;BXE+D-/4U1<
              M(B!Q='D](EQ%45194$4N0V]I;BXE+E%465PB(&5Q=6EP<&5D/2)<15%465!%
              M+D-O:6XN)2Y%455)4%!%1%PB(&-O;G1E;G1S/2)<15%465!%+D-O:6XN)2Y#
              M3TY414Y44UPB(&QO8V%T:6]N/2)<15%465!%+D-O:6XN)2Y,3T-!5$E/3EPB
              M('=T/2)<15%465!%+D-O:6XN)2Y75%PB("\^? T*"0D\+V-O:6X^#0H)"3QG
              M96US/@T*"0E\1D]2+C L0T]53E1;15%465!%+D=E;5TL,2P\:71E;2!N86UE
              M/2)<15%465!%+D=E;2XE+DY!345<(B!C;W-T/2)<15%465!%+D=E;2XE+D-/
              M4U1<(B!Q='D](EQ%45194$4N1V5M+B4N45197"(@97%U:7!P960](EQ%4519
              M4$4N1V5M+B4N15%525!0141<(B!C;VYT96YT<STB7$515%E012Y'96TN)2Y#
              M3TY414Y44UPB(&QO8V%T:6]N/2)<15%465!%+D=E;2XE+DQ/0T%424].7"(@
              M=W0](EQ%45194$4N1V5M+B4N5U1<(B O/GP-"@D)/"]G96US/@T*"0D\<V-R
              M;VQL<SX-"@D)?$9/4BXP+$-/54Y46T515%E012Y38W)O;&Q=+#$L/&ET96T@
              M;F%M93TB7$515%E012Y38W)O;&PN)2Y.04U%7"(@8V]S=#TB7$515%E012Y3
              M8W)O;&PN)2Y#3U-47"(@<71Y/2)<15%465!%+E-C<F]L;"XE+E%465PB(&5Q
              M=6EP<&5D/2)<15%465!%+E-C<F]L;"XE+D5154E04$5$7"(@8V]N=&5N=',]
              M(EQ%45194$4N4V-R;VQL+B4N0T].5$5.5%-<(B!L;V-A=&EO;CTB7$515%E0
              M12Y38W)O;&PN)2Y,3T-!5$E/3EPB('=T/2)<15%465!%+E-C<F]L;"XE+E=4
              M7"(@+SY\#0H)"3PO<V-R;VQL<SX-"@D)/'=A;F1S/@T*"0E\1D]2+C L0T]5
              M3E1;15%465!%+E=A;F1=+#$L/&ET96T@;F%M93TB7$515%E012Y786YD+B4N
              M3D%-15PB(&-O<W0](EQ%45194$4N5V%N9"XE+D-/4U1<(B!Q='D](EQ%4519
              M4$4N5V%N9"XE+E%465PB(&5Q=6EP<&5D/2)<15%465!%+E=A;F0N)2Y%455)
              M4%!%1%PB(&-O;G1E;G1S/2)<15%465!%+E=A;F0N)2Y#3TY414Y44UPB(&QO
              M8V%T:6]N/2)<15%465!%+E=A;F0N)2Y,3T-!5$E/3EPB('=T/2)<15%465!%
              M+E=A;F0N)2Y75%PB("\^? T*"0D\+W=A;F1S/@T*"0D\<&]T:6]N<SX-"@D)
              M?$9/4BXP+$-/54Y46T515%E012Y0;W1I;VY=+#$L/&ET96T@;F%M93TB7$51
              M5%E012Y0;W1I;VXN)2Y.04U%7"(@8V]S=#TB7$515%E012Y0;W1I;VXN)2Y#
              M3U-47"(@<71Y/2)<15%465!%+E!O=&EO;BXE+E%465PB(&5Q=6EP<&5D/2)<
              M15%465!%+E!O=&EO;BXE+D5154E04$5$7"(@8V]N=&5N=',](EQ%45194$4N
              M4&]T:6]N+B4N0T].5$5.5%-<(B!L;V-A=&EO;CTB7$515%E012Y0;W1I;VXN
              M)2Y,3T-!5$E/3EPB('=T/2)<15%465!%+E!O=&EO;BXE+E=47"(@+SY\#0H)
              M"3PO<&]T:6]N<SX)"0T*"0D\9V5A<CX-"@D)"7Q&3U(N,"Q#3U5.5%M%455)
              M4$U%3E0N3D]4+E=%05!/3BY.3U0N36%G:6,N3D]4+D%234]2+DY/5"Y38W)O
              M;&PN3D]4+E=A;F0N3D]4+E!O=&EO;BY.3U0N0V]I;BY.3U0N1V5M72PQ+#QI
              M=&5M(&YA;64](EQ%455)4$U%3E0N3D]4+E-C<F]L;"Y.3U0N5V%N9"Y.3U0N
              M4&]T:6]N+DY/5"Y#;VEN+DY/5"Y'96TN)2Y.04U%7"(@8V]S=#TB7$5154E0
              M345.5"Y.3U0N5T5!4$].+DY/5"Y-86=I8RY.3U0N05)-3U(N3D]4+E-C<F]L
              M;"Y.3U0N5V%N9"Y.3U0N4&]T:6]N+DY/5"Y#;VEN+DY/5"Y'96TN)2Y#3U-4
              M7"(@<71Y/2)<15%525!-14Y4+DY/5"Y714%03TXN3D]4+DUA9VEC+DY/5"Y!
              M4DU/4BY.3U0N4V-R;VQL+DY/5"Y786YD+DY/5"Y0;W1I;VXN3D]4+D-O:6XN
              M3D]4+D=E;2XE+E%465PB(&5Q=6EP<&5D/2)<15%525!-14Y4+DY/5"Y714%0
              M3TXN3D]4+DUA9VEC+DY/5"Y!4DU/4BY.3U0N4V-R;VQL+DY/5"Y786YD+DY/
              M5"Y0;W1I;VXN3D]4+D-O:6XN3D]4+D=E;2XE+D5154E04$5$7"(@8V]N=&5N
              M=',](EQ%455)4$U%3E0N3D]4+E=%05!/3BY.3U0N36%G:6,N3D]4+D%234]2
              M+DY/5"Y38W)O;&PN3D]4+E=A;F0N3D]4+E!O=&EO;BY.3U0N0V]I;BY.3U0N
              M1V5M+B4N0T].5$5.5%-<(B!L;V-A=&EO;CTB7$5154E0345.5"Y.3U0N5T5!
              M4$].+DY/5"Y-86=I8RY.3U0N05)-3U(N3D]4+E-C<F]L;"Y.3U0N5V%N9"Y.
              M3U0N4&]T:6]N+DY/5"Y#;VEN+DY/5"Y'96TN)2Y,3T-!5$E/3EPB('=T/2)<
              M15%525!-14Y4+DY/5"Y714%03TXN3D]4+DUA9VEC+DY/5"Y!4DU/4BY.3U0N
              M4V-R;VQL+DY/5"Y786YD+DY/5"Y0;W1I;VXN3D]4+D-O:6XN3D]4+D=E;2XE
              M+E=47"(@+SY\#0H)"3PO9V5A<CX-"@D)/&UA9VEC/@T*"0E\1D]2+C L0T]5
              M3E1;15%465!%+DUA9VEC+DY/5"Y0;W1I;VY=+#$L/&ET96T@;F%M93TB7$51
              M5%E012Y-86=I8RY.3U0N4&]T:6]N+B4N3D%-15PB(&-O<W0](EQ%45194$4N
              M36%G:6,N3D]4+E!O=&EO;BXE+D-/4U1<(B!Q='D](EQ%45194$4N36%G:6,N
              M3D]4+E!O=&EO;BXE+E%465PB(&5Q=6EP<&5D/2)<15%465!%+DUA9VEC+DY/
              M5"Y0;W1I;VXN)2Y%455)4%!%1%PB(&-O;G1E;G1S/2)<15%465!%+DUA9VEC
              M+DY/5"Y0;W1I;VXN)2Y#3TY414Y44UPB(&QO8V%T:6]N/2)<15%465!%+DUA
              M9VEC+DY/5"Y0;W1I;VXN)2Y,3T-!5$E/3EPB('=T/2)<15%465!%+DUA9VEC
              M+DY/5"Y0;W1I;VXN)2Y75%PB("\^? T*"0D\+VUA9VEC/@T*"3PO97%U:7 ^
              M#0H)/'-K:6QL<SX-"@E\1D]2+C L0T]53E1;4TM)3$Q372PQ+#QS:VEL;"!N
              M86UE/2)<4TM)3$PE7"(@86)I;&ET>3TB7%-+24Q,)2Y!0DE,25197"(@=&]T
              M86P](EQ32TE,3"4N5$]404Q<(B!M;V0](EQ32TE,3"4N04)-3T1<(B!R86YK
              M/2)<4TM)3$PE+E)!3DM<(B!M:7-C/2)<4TM)3$PE+DU)4T-<(B O/BQ\#0H)
              M/"]S:VEL;',^#0H)/&9E871S/@T*"7Q&3U(N,"PQ,"PQ+" \9F5A="!N86UE
              M/2)<1D5!5$%,3"5<(B!D97-C/2)<1D5!5$%,3"4N1$530UPB("\^+'P-"@D\
              M+V9E871S/@T*"3QS<&5C:6%L/@T*"7Q&3U(N,"Q#3U5.5%M305TL,2P@/'-P
              M96-I86P@;F%M93TB7%-014-)04Q!0DE,2519)5PB("\^+'P-"@D\+W-P96-I
              M86P^#0H)/&5N8W5M8G)A;F-E(&QI9VAT/2)\5T5)1TA4+DQ)1TA4?"(@;65D
              M:75M/2)\5T5)1TA4+DU%1$E537PB(&AE879Y/2)\5T5)1TA4+DA%0599?"(@
              M+SX-"@D\<W!E;&QS/@T*?$9/4BPE8VQA<W,L,"Q#3U5.5%M#3$%34T5372PQ
              M+#%\#0I\)5-014Q,3$E35$-,05-3)6-L87-S? T*/'-P96QL8VQA<W,@;F%M
              M93TB?%-014Q,3$E35$-,05-3)6-L87-S?"(^#0I\1D]2+"5L979E;"PP+#DL
              M,2PQ? T*/'-P96QL;&5V96P@;&5V96P](B5L979E;"(@8V]U;G0](GQ34$5,
              M3$Q)4U1#05-4)6-L87-S+B5L979E;'PB($1#/2)\4U!%3$Q,25-41$,E8VQA
              M<W,N)6QE=F5L?"(^#0I\1D]2+C L,3 P+#$L;F%M93TB7%-014Q,345-)6-L
              M87-S+BTQ+B5L979E;"XE+DY!345<(B!T:6UE<STB7%-014Q,345-)6-L87-S
              M+BTQ+B5L979E;"XE+E1)34537"(@<F%N9V4](EQ34$5,3$U%325C;&%S<RXM
              M,2XE;&5V96PN)2Y204Y'15PB(&-O;7!O;F5N=',](EQ34$5,3$U%325C;&%S
              M<RXM,2XE;&5V96PN)2Y#3TU03TY%3E137"(@8V%S=&EN9W1I;64](EQ34$5,
              M3$U%325C;&%S<RXM,2XE;&5V96PN)2Y#05-424Y'5$E-15PB(&1U<F%T:6]N
              M/2)<4U!%3$Q-14TE8VQA<W,N+3$N)6QE=F5L+B4N1%52051)3TY<(B!E9F9E
              M8W0](EQ34$5,3$U%325C;&%S<RXM,2XE;&5V96PN)2Y%1D9%0U1<(B!E9F9E
              M8W1T>7!E/2)<4U!%3$Q-14TE8VQA<W,N+3$N)6QE=F5L+B4N149&14-45%E0
              M15PB('-A=F5I;F9O/2)<4U!%3$Q-14TE8VQA<W,N+3$N)6QE=F5L+B4N4T%6
              M14E.1D]<(B!S8VAO;VP](EQ34$5,3$U%325C;&%S<RXM,2XE;&5V96PN)2Y3
              M0TA/3TQ<(B!S;W5R8V4](EQ34$5,3$U%325C;&%S<RXM,2XE;&5V96PN)2Y3
              M3U520T5<(B!S;W5R8V5P86=E/2)<4U!%3$Q-14TE8VQA<W,N+3$N)6QE=F5L
              M+B4N4T]54D-%4$%'15PB('-O=7)C97-H;W)T/2)<4U!%3$Q-14TE8VQA<W,N
              M+3$N)6QE=F5L+B4N4T]54D-%4TA/4E1<(B!S=6)S8VAO;VP](EQ34$5,3$U%
              M325C;&%S<RXM,2XE;&5V96PN)2Y354)30TA/3TQ<(B!S<CTB7%-014Q,345-
              M)6-L87-S+BTQ+B5L979E;"XE+E-27"(L/'-P96QL("P@+SXL,7P-"CPO<W!E
              M;&QL979E;#X-"GQ%3D1&3U)\#0H\+W-P96QL8VQA<W,^#0I\)7P-"GQ%3D1&
              =3U)\#0H)/"]S<&5L;',^#0H\+V-H87)A8W1E<CX`
              `
              end
            Your message has been successfully submitted and would be delivered to recipients shortly.