From 3ab0e0fb984434f4006bd36af7a4e2a5aa79d5db Mon Sep 17 00:00:00 2001 From: Ivan Hernanez Date: Mon, 28 May 2012 16:54:55 -0500 Subject: [PATCH] added yaml library to source control --- Animation.cpp | 2 +- Level.cpp | 24 +- game.vcxproj | 4 +- libyaml-cppmdd.pdb | Bin 897024 -> 0 bytes libyaml-cppmdd_Windows.pdb | Bin 897024 -> 0 bytes yaml-cpp/{ => include/yaml-cpp}/aliasmanager.h | 0 yaml-cpp/{ => include/yaml-cpp}/anchor.h | 0 yaml-cpp/{ => include/yaml-cpp}/binary.h | 0 .../{ => include/yaml-cpp}/contrib/anchordict.h | 0 .../{ => include/yaml-cpp}/contrib/graphbuilder.h | 0 yaml-cpp/{ => include/yaml-cpp}/conversion.h | 0 yaml-cpp/{ => include/yaml-cpp}/dll.h | 0 yaml-cpp/{ => include/yaml-cpp}/emitfromevents.h | 0 yaml-cpp/{ => include/yaml-cpp}/emitter.h | 0 yaml-cpp/{ => include/yaml-cpp}/emittermanip.h | 0 yaml-cpp/{ => include/yaml-cpp}/eventhandler.h | 0 yaml-cpp/{ => include/yaml-cpp}/exceptions.h | 0 yaml-cpp/{ => include/yaml-cpp}/iterator.h | 0 yaml-cpp/{ => include/yaml-cpp}/ltnode.h | 0 yaml-cpp/{ => include/yaml-cpp}/mark.h | 0 yaml-cpp/{ => include/yaml-cpp}/node.h | 0 yaml-cpp/{ => include/yaml-cpp}/nodeimpl.h | 0 yaml-cpp/{ => include/yaml-cpp}/nodereadimpl.h | 0 yaml-cpp/{ => include/yaml-cpp}/nodeutil.h | 0 yaml-cpp/{ => include/yaml-cpp}/noncopyable.h | 0 yaml-cpp/{ => include/yaml-cpp}/null.h | 0 yaml-cpp/{ => include/yaml-cpp}/ostream.h | 0 yaml-cpp/{ => include/yaml-cpp}/parser.h | 0 yaml-cpp/{ => include/yaml-cpp}/stlemitter.h | 0 yaml-cpp/{ => include/yaml-cpp}/stlnode.h | 0 yaml-cpp/{ => include/yaml-cpp}/traits.h | 0 yaml-cpp/{ => include/yaml-cpp}/yaml.h | 0 yaml-cpp/install.txt | 24 + yaml-cpp/license.txt | 19 + yaml-cpp/src/aliasmanager.cpp | 29 + yaml-cpp/src/binary.cpp | 102 +++ yaml-cpp/src/collectionstack.h | 35 + yaml-cpp/src/contrib/graphbuilder.cpp | 16 + yaml-cpp/src/contrib/graphbuilderadapter.cpp | 96 +++ yaml-cpp/src/contrib/graphbuilderadapter.h | 73 ++ yaml-cpp/src/conversion.cpp | 89 +++ yaml-cpp/src/directives.cpp | 24 + yaml-cpp/src/directives.h | 29 + yaml-cpp/src/emitfromevents.cpp | 105 +++ yaml-cpp/src/emitter.cpp | 882 +++++++++++++++++++++ yaml-cpp/src/emitterstate.cpp | 284 +++++++ yaml-cpp/src/emitterstate.h | 217 +++++ yaml-cpp/src/emitterutils.cpp | 378 +++++++++ yaml-cpp/src/emitterutils.h | 32 + yaml-cpp/src/exp.cpp | 113 +++ yaml-cpp/src/exp.h | 196 +++++ yaml-cpp/src/indentation.h | 38 + yaml-cpp/src/iterator.cpp | 103 +++ yaml-cpp/src/iterpriv.h | 33 + yaml-cpp/src/node.cpp | 269 +++++++ yaml-cpp/src/nodebuilder.cpp | 145 ++++ yaml-cpp/src/nodebuilder.h | 61 ++ yaml-cpp/src/nodeownership.cpp | 31 + yaml-cpp/src/nodeownership.h | 39 + yaml-cpp/src/null.cpp | 12 + yaml-cpp/src/ostream.cpp | 63 ++ yaml-cpp/src/parser.cpp | 152 ++++ yaml-cpp/src/ptr_stack.h | 46 ++ yaml-cpp/src/ptr_vector.h | 47 ++ yaml-cpp/src/regex.cpp | 60 ++ yaml-cpp/src/regex.h | 67 ++ yaml-cpp/src/regeximpl.h | 186 +++++ yaml-cpp/src/scanner.cpp | 387 +++++++++ yaml-cpp/src/scanner.h | 132 +++ yaml-cpp/src/scanscalar.cpp | 214 +++++ yaml-cpp/src/scanscalar.h | 45 ++ yaml-cpp/src/scantag.cpp | 84 ++ yaml-cpp/src/scantag.h | 20 + yaml-cpp/src/scantoken.cpp | 439 ++++++++++ yaml-cpp/src/setting.h | 105 +++ yaml-cpp/src/simplekey.cpp | 139 ++++ yaml-cpp/src/singledocparser.cpp | 381 +++++++++ yaml-cpp/src/singledocparser.h | 65 ++ yaml-cpp/src/stream.cpp | 448 +++++++++++ yaml-cpp/src/stream.h | 79 ++ yaml-cpp/src/streamcharsource.h | 48 ++ yaml-cpp/src/stringsource.h | 47 ++ yaml-cpp/src/tag.cpp | 52 ++ yaml-cpp/src/tag.h | 28 + yaml-cpp/src/token.h | 85 ++ yaml-cpp/util/api.cpp | 129 +++ yaml-cpp/util/parse.cpp | 65 ++ yaml-cpp/yaml-cpp.pc.cmake | 11 + 88 files changed, 7109 insertions(+), 19 deletions(-) delete mode 100644 libyaml-cppmdd.pdb delete mode 100644 libyaml-cppmdd_Windows.pdb rename yaml-cpp/{ => include/yaml-cpp}/aliasmanager.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/anchor.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/binary.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/contrib/anchordict.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/contrib/graphbuilder.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/conversion.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/dll.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/emitfromevents.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/emitter.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/emittermanip.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/eventhandler.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/exceptions.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/iterator.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/ltnode.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/mark.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/node.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/nodeimpl.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/nodereadimpl.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/nodeutil.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/noncopyable.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/null.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/ostream.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/parser.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/stlemitter.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/stlnode.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/traits.h (100%) rename yaml-cpp/{ => include/yaml-cpp}/yaml.h (100%) create mode 100644 yaml-cpp/install.txt create mode 100644 yaml-cpp/license.txt create mode 100644 yaml-cpp/src/aliasmanager.cpp create mode 100644 yaml-cpp/src/binary.cpp create mode 100644 yaml-cpp/src/collectionstack.h create mode 100644 yaml-cpp/src/contrib/graphbuilder.cpp create mode 100644 yaml-cpp/src/contrib/graphbuilderadapter.cpp create mode 100644 yaml-cpp/src/contrib/graphbuilderadapter.h create mode 100644 yaml-cpp/src/conversion.cpp create mode 100644 yaml-cpp/src/directives.cpp create mode 100644 yaml-cpp/src/directives.h create mode 100644 yaml-cpp/src/emitfromevents.cpp create mode 100644 yaml-cpp/src/emitter.cpp create mode 100644 yaml-cpp/src/emitterstate.cpp create mode 100644 yaml-cpp/src/emitterstate.h create mode 100644 yaml-cpp/src/emitterutils.cpp create mode 100644 yaml-cpp/src/emitterutils.h create mode 100644 yaml-cpp/src/exp.cpp create mode 100644 yaml-cpp/src/exp.h create mode 100644 yaml-cpp/src/indentation.h create mode 100644 yaml-cpp/src/iterator.cpp create mode 100644 yaml-cpp/src/iterpriv.h create mode 100644 yaml-cpp/src/node.cpp create mode 100644 yaml-cpp/src/nodebuilder.cpp create mode 100644 yaml-cpp/src/nodebuilder.h create mode 100644 yaml-cpp/src/nodeownership.cpp create mode 100644 yaml-cpp/src/nodeownership.h create mode 100644 yaml-cpp/src/null.cpp create mode 100644 yaml-cpp/src/ostream.cpp create mode 100644 yaml-cpp/src/parser.cpp create mode 100644 yaml-cpp/src/ptr_stack.h create mode 100644 yaml-cpp/src/ptr_vector.h create mode 100644 yaml-cpp/src/regex.cpp create mode 100644 yaml-cpp/src/regex.h create mode 100644 yaml-cpp/src/regeximpl.h create mode 100644 yaml-cpp/src/scanner.cpp create mode 100644 yaml-cpp/src/scanner.h create mode 100644 yaml-cpp/src/scanscalar.cpp create mode 100644 yaml-cpp/src/scanscalar.h create mode 100644 yaml-cpp/src/scantag.cpp create mode 100644 yaml-cpp/src/scantag.h create mode 100644 yaml-cpp/src/scantoken.cpp create mode 100644 yaml-cpp/src/setting.h create mode 100644 yaml-cpp/src/simplekey.cpp create mode 100644 yaml-cpp/src/singledocparser.cpp create mode 100644 yaml-cpp/src/singledocparser.h create mode 100644 yaml-cpp/src/stream.cpp create mode 100644 yaml-cpp/src/stream.h create mode 100644 yaml-cpp/src/streamcharsource.h create mode 100644 yaml-cpp/src/stringsource.h create mode 100644 yaml-cpp/src/tag.cpp create mode 100644 yaml-cpp/src/tag.h create mode 100644 yaml-cpp/src/token.h create mode 100644 yaml-cpp/util/api.cpp create mode 100644 yaml-cpp/util/parse.cpp create mode 100644 yaml-cpp/yaml-cpp.pc.cmake diff --git a/Animation.cpp b/Animation.cpp index 902cbe9..0ea926e 100644 --- a/Animation.cpp +++ b/Animation.cpp @@ -10,7 +10,7 @@ #include "Animation.h" #include "fns.h" #include -#include "yaml-cpp/yaml.h" +#include using namespace std; Animation::Animation():mName() diff --git a/Level.cpp b/Level.cpp index 2a01403..588439b 100644 --- a/Level.cpp +++ b/Level.cpp @@ -46,15 +46,7 @@ void Level::DrawIMG(SDL_Surface *img, int x, int y, int w, int h, int x2, int y2 SDL_BlitSurface(img, &src, mScreen, &dest); } -int round(double x) -{ - return (int)(x + 0.5); -} - -void SDL_GL_RenderText(string s, - TTF_Font *font, - SDL_Color color, - SDL_Rect *location) +void SDL_GL_RenderText(string s, TTF_Font *font, SDL_Color color, SDL_Rect *location, bool unicode=false) { const char* text = s.c_str(); SDL_Surface *initial; @@ -63,8 +55,10 @@ void SDL_GL_RenderText(string s, int w,h; Texture texture; + Uint16 t[] = {'日','本','語'}; + /* Use SDL_TTF to render our text */ - initial = TTF_RenderText_Blended(font, text, color); + initial = unicode?TTF_RenderUNICODE_Blended(font, t, color):TTF_RenderText_Blended(font, text, color); /* Convert the rendered text to a known format */ w = initial->w; @@ -78,8 +72,7 @@ void SDL_GL_RenderText(string s, /* Tell GL about our new texture */ glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); - glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_BGRA, - GL_UNSIGNED_BYTE, intermediary->pixels ); + glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, intermediary->pixels ); /* GL_NEAREST looks horrible, if scaled... */ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -143,9 +136,8 @@ void Level::drawScene() TTF_CloseFont(font); - // Load a font - TTF_Font *font; - font = TTF_OpenFont("FreeSans.ttf", 24); + // Load another font + font = TTF_OpenFont("Japanese.ttf", 24); if(font){ // Write text to surface @@ -153,7 +145,7 @@ void Level::drawScene() SDL_Color text_color = {0xFF, 0xFF, 0xFF}; string txt="日本語"; SDL_Rect rect = {0,100,100,100}; - SDL_GL_RenderText(txt, font, text_color, &rect); + SDL_GL_RenderText(txt, font, text_color, &rect, true); } else cerr << "TTF_OpenFont() Failed: " << TTF_GetError() << endl; diff --git a/game.vcxproj b/game.vcxproj index 6cc0485..e66f718 100644 --- a/game.vcxproj +++ b/game.vcxproj @@ -50,12 +50,12 @@ Level3 Disabled WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - C:\SDL;%(AdditionalIncludeDirectories) + C:\SDL;$(SolutionDir)\game\yaml-cpp\include;%(AdditionalIncludeDirectories) Console true - C:\SDL\lib;%(AdditionalLibraryDirectories) + C:\SDL\lib;$(SolutionDir)game\yaml-cpp\build\Debug;%(AdditionalLibraryDirectories) SDL_ttf.lib;libyaml-cppmdd.lib;SDL.lib;SDL_image.lib;SDLmain.lib;SDL_draw.lib;glu32.lib;opengl32.lib;%(AdditionalDependencies) false diff --git a/libyaml-cppmdd.pdb b/libyaml-cppmdd.pdb deleted file mode 100644 index 9a407a2604374dbd43284476d7e369324a1a74fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897024 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%0DaUh=%p&FwyCx~zs*CsC*qep7l~~V;bLXw z+K&Le_WjckXWyrMrz7t3cz;3M67UFdDid+kF>!iny@(?`!sUEj(m1aV;%MtpJ}?e> zs?EFd{PP9oQ#oyaKrMAWnK;fp$Ww9Z5BWX}-~T$q*1@eA()O^XSMIAhA4UJqv4dj( z#(ypVsF=HvxBLd(W!6``V7$ReUITf&Q-S0_AhwBENNONsa z%ORg9hkWq8og~b?zdXwrX}oV! z;h4tvjBOfayF5}6_&MUbNV_=;moqDfTUqMSdU5T7Z3`%0B&NK%m840mU2yJl1lBHA zSz6c9v2iakcVXY4{nD1zf1QQ&!T7Q5n_$5HO#q>G&g=K|xfmMn)Kn7Aiv(B}j2QJ!2*CS5fpyypRA>#(X zI9H5(B;vk)ZRUL7d8yrdobT8A9B3nGS=Xl^wDgFF^b5rwYWeI(sq$la+ROz~zLv3B z%GiRCx}@J>ozzcXh;&%C)j!6wrvlC^3#a{8=YXCn{$Dg1|BhhNLId!Nmw&t*DzPtD>tmHR5g z4ZBv(`Q|3jsDJ3FmUnVqL-^JZ?%qoS&v}MCc#SycU}>KQnEDF#yC(2h@7YxD9Y&s< zc}Bp?`Jfr52v~6qXC|N%iP%T2jK!Yb0W3J+i1uRlKyA3`&QlSb^$BCXyZS8f=9TR0 zoUhF_i}NMH_hVnbtW!Ei)7j~&(PFL?-Y1@o`#`om`wV>nza_zYc=i*N%r!#8K8ia(!P_VvvQ;FHWG9k zn?rs|w?pW(A2*Ta-kO~VRi3OmIsN3#Zpp9yiO-hV-mHWAf5yGu+RU>hPbd$v;PN=O z3(KV)X&b3Od9LttGWfb$e()2%{k)&}oXj(vZ{^rI)eL}-doGB(2^miZ0h76fJJ3Vm zwE&LChUgO-zG9b$+x~tT(~^<-p2PI|()KcXnU;OI!uVWG#{LM_9PTHS zc_Y{^M@RoMg1lI-wcdlf8`S4uz1G6)tKf2v%=Y0rZK*L>8s5$|&7A$#CZ6>@l?OH9 zR@uTnfVMoyoqB@%JU4eJu0omI)nfIMGovV1eWl({Q?FU~)AVHy2OeX-Yd<%41$gjE z`YYZa9sqy!Ji*gn$$3kbX}Pmgr-tq^VaEMoXm@Hu+7D=J)Ftgs>8J<$ED$|ovy8`~ z-@~{Uo#_+Wp6`SCcJ^_#<>h!m*u`^p&a8gm+C;h2k=FUL-WRD%A#O3~cu{utH7$pA z3+v(Y6wL9GhxMqSPJBMW^IXW|`hdq9Q1@&e{@yY4x71Hs#)3Ik%1h(?{cIZN?~5rH z<=49L{wtI#{HCh5QJSCk*_4_6fU}mxkeU2{Cv{a{#yQ@lplBfcPn7NRw3#nW3`Gx3X-ESDhGN-Miqm?d*^8 z9(bwVsNmMZrSmxXk1u2shY_e|H>-el6W$4LGt=|b!P~&ku8xG|jrYl>kT#MnXJu1+ zeh2tcH#%0m6KQP|*5O9{xNh<;guJqF;XIS?HQfYS-Y2{pA$7qr^!{N9;N<%r{E}lg z>)8rNevv$g>;10k+O_YD_V@Nr(<|$Wpct2zIG))6TvQzW{rdq=jt?xq)%f6W zUdi!+eXAY!uD1#P{eC_htMS$_CH9-LKlpoX$1%=Z5l+zwr92b#1YN5YWLNRR)w)`1 z?=e3N`Lv(hjyP?Y_C_0UeFo1#;72sh=M9V>2|qIpG#^DC;`#d+;`&VD4#Zgx@?jYt z!EctCW?-6VJ}MMo0gq?^h39pEktw%H4SC;Mef*k*$(_^Z@@s z8saX;= z^cRp;|HtPPGnmhQ`?_HM3-Q*Sm40lN`8sI)`oUCl7t-o0GkQ4k;M{5EiPr1pT3KPz z^o0=F`A5nOlOv3xTYpR04{|WAf`zjVhdH=Zg*>L3Zvu||8NPX{x!d7lewp)n?tkE3 zk{!0pLhfGBCH*n$*vcO}+<5+YZth#)!7J&HXQF3L$9Ym)wmfLhtU4UN`97ijHp2GU z%p*g?*ddkeL-XzQc{4{{->2`;IQ@^t>B|_;>RW2x>?5@8Y&!1`v@ek^oHrjW^X8uj z57PY>dMBOwMfKH`r)k_=l755tygx@i@;e1M&cm+*Kh39pJuBb+EDvRIZW@-Q{yQtr zZ$PWO)lX;9Js>g-K_1G)XZ)Kmwwml`+S;w6C$hu+wR+=(%%Sk?Xe5MR;9AIo;HqQc zLx}5GxB%_AXted1M?8OjKpwU){RVmc9zTwGe?-WOI{GPeo8(0pe}4v@>LMKHLSBCn zUg>iDc$S3=$1T>4GU$BxA4pR+mJ^O!Oh1et$E|-NqX+K_p1mS#C4qd8{+EZId1(O=~m-Z0d*g@L)kg`EYk+saJ-s=bTnSI z?2Q~x@@6XY2ICfGM|X&gTdV_IS!~>5U9!e4)+uY;nuc;(ja$+m4LG{cdF!;?kFCu0p!~cM1K0SYh-<5TCOyJ z{UvS<0`Z~#l8tv5?8>PR*m#?<+YxR2z+7LwG}Le7c|6J8i6=8$zqmIyR7bzG@phc{ zU+s4BbBx=5=+-})LwJSX(u|s2jw$-e2CR3?lJ$;*Azz{<zT9l)N$)j@TBij z-+ma<+IG~(LHN<1AC8b$7Eb*b*W$U>aRg{NM|d2<6g}YTk7)-igXNR%NW`NuVN0@?cD{ZH_++h9VCfC(3|KjaUb#-u0XlC8oZC(_3jiAlfLseW z3b14!CS9vO>~Q1t;d!~E!Gl+_57UNcq7Oe_@WHdKK(e$Ar*-Ye(=pz+vON9!RyG;! z>*qY@SjeIFavb99Bl_$}=ZE{DeONxzq+f*JELg$u2zlxKE8AcQKhiEi=xOujM4`2I z1l$Qo(~cG+)bf~L%gicoNuoT?k4T@U&6}k{OB`kLvgFK(JPZ?;%JKw}<&;1cm4juZ z`4`No!e4njDd3_0EaHK(viY=`(}j=fkh1cZmOF2roG7zX%3Ow!{f+Gx_V?uiXWhfO z9MfI+vG1RWkQd8idw87p>DoTrf4>AY%}n}&SrzeezG4N^>e9tz(8=>)42Q zjN0ZOi?L^u&~8R}P%!IgJx=7?e~r3uPDdNwf_xgc@9#9{RPL3^jxlBE&^S; z&wBr%a|bQs{-A970K(Jxy}#0aM!IlKTL-^Pn$PYq1CZ$5NZ1D8bYln^J|&pku2}hM0s2zB2AhWr$7rW zag@o+;=hHhvNS}NW+01>t1N>&nD#shX6G3ElVkrb;lCT9j@w$#A;_lVcD%mW6C!1( zepwIFQyzw1p1iqSXthqykupaR(pK5Fi$)oD&kjZfP9EX7&Ghr|BVXmo($nB~%b9KHV%dge5W9^F-CgU&5Wg8b)*J9)EOB`JUBOTitbkUg1 zGOlxU5sc3xlH;^Kqrg6+=o!V!kS{rIQ!lOV6CG~6`^34qmxBkdrtaKkcZg1JL z5pxHQCC6jzzFz2Gfv_VSyQ7xjN)JaDJl>VDB;^OtFV&9IIPX8SpCrf8(_|cdEo5-G z++6H8vg3=6mHXLR<;@MCN%~ceSxQI0N{{e5&~c1qAL0HN=3|<^h92rZ(7E?;Mp;yF z`Bf9F3&^`ycBMZUR?ikqxV8N^fVYmTZ$vyCS9J|a$5p0D|0eu6uD%%|FZKJZ=K}nw z$0Z0oZQi_9Xw~n(1!>mjMug$Gs%4T#vb?t^%HvuZY0|WL^G>1FaYW@}=;g|pn}kl~ zdKc1^>)i-dE*)c89?N3d^C+122oK_t{F7tsEyDl32-Oy}&O<0y$Jlt?+syl<4AnKu zAwA1v=;g_q4+yQ+>HSjXZ3t<{Z0B%{{gA-PBOGIyz8yb~u^&dri{(*29_RZ=8W;90 zcOU!_@L~RsO87B^%*Qd7Jl&NZW25pwkQ`$@EqDTIA*xCA7gI?J{)5|h;*wl_733O7@KrX z93y9$j{_f$wVyy*#@b{C(C5u3Ngs^4pF%nub6KCPF_-Xm=q5Sle%j^N>e?~)GYSjF zT()^~%>AsRi;cN#|KynaIY+nGW9}D_FFEE?Kdr`GhZ}#){UUhqN{+c4UpU5oN${yL zHrXQ4Q0vE+lt0KAYiYyQ$6%b(eLdP=IG(BxrtjtWNIwydg?A$V7~gxd=7s|h_=;8H zmR_LI3a~p5^XuS8AISA!#&vA`2I8U5{3g;`KhoWWAN}Or2zjM(m~U|btOafn4btMA zpS%Zr=qK-$@LLE|Jb_nVNS#p*^)cT;Jdz8wh{*+AhB);xJLDO|vB=ByH2b|9#50tL z{x{Wp8#vcL;~M6(gzo|ux7WG3?^(WSTVwl8!&!>o7yM>~;aW_byBb=${nGl$8?RS4 zZuxrq_88;cZo4_R7`^PcHJ*;vC-5yC$n5N9CceRo?KGIDvQ2(M_^7id(x^TC4DryO zevY)tPr4uDM|=7OLSAW{Z+njOInewPw6vM~5vJ$?4{e3z>sZhE49olte#w2g+_xR! z@Q&&(H<=x4{wX@DReNymNv&#BX$pwupOo=;C^L)y7|(H(KfYfZvF_1x8rW|i1W(oT zLx@w)I&bcWyAmc0XSadLAjL2pAtNn|IdJB@%W4I;9LP)Tg@MlX4hu? zuZVNLk*Qiai*<3K%$sEpdW`g?Z<26ox7hRAJ@PsFFwiB)ctxK$A1M} z+?aX4JJ0+Ya9$$`!{jB_eEe*kOd^SC+6jl1RE5;jY_BdYOH zIW-8D|2NQ-FKt#Jmwlgw^N+s+7WoW$UpIv5_l85*GJAiGeK=uW3oGPUm+{w&=j9#- z9k1jVNWZ|n%H}|aXJ3|g;S$yd*mX-@%p>CtoC7%6A{4Atx|CID> z;)D0=NwW`NJuUhZ@%sYr`(VNBhqU&k4s6QkNU5{4bCHxcH=tc0u>Av=e)~IwX2AG@tGN6dGN#gwd;5D#b3ba-`maB{CvRmlJ{Bz^=ZGtTQ@km`#=ZMVIMdW>97wRMSP+U91U1#giu<_$ij$R2HR~1EuE&#E1H;1&gGU{xa?cr?StuxYBvAx(A*sfeJJQ3yT7(*Os zLi|a<(*~^%1mAt9yZ6+3O{u2`FE|YsdrO0rf!%m}sZkupjW4zeg7_;Zq5O!I*YK5C z_Z}4S3p`%F59K~)sAcYJzd|iC!}l=H3=8Y6;1kg}3a`6f8RAR74%csSYC#UxVYbz4 z+sio9u42y$CXY+7yVJ^v*=w=1&DCD&*%!k}wV;ZjdaaMDQ`xqMbolZsRAs-POa23K z+%Qf$va-)L-Srx@-&5XE=`KSj)$LYKgYf*rjY<{A1yUesqdKQg{G6=K+YTC=3+E3& zj#{%04%?c;JSUZ99*6yVI3EzoaLuacnGiSKly{Z8n{MksZ>>I9k~y2?-OpHkmUp3% z_&kGo4s|fwWN5|64i;KCZ?}DOlKxoJ%l&|?K-{WCuT|4ug9$XNFchp=@l;D&P7QB| zV1iibt&~}@L42$y(&Hji85qDRiUYV6#LFndPzc^_D_fl%j9tE^A+!p%B*KjpD>WJ) zzTiAibS{H;CQ^2r+f7_=4$(4Q{SE*O{wVy6rIqLK2tHgc-1cDK33R@ zC7jCI|{ZTb>r*Wk-ZNExX|S=UoOD02H0aeSZR2BeqI9a zOLg^oae&`hYr_xy?1LeVcd}%=Hb**XO^*AT8 zb+-b)#*h#d0x9)!AXd@&T5i=Rnrp@1gi3I1ROEFilw+?8{ z?#@pB$G68B=oiNy+{1HZoDDi1Q8%Z82d1Q!$0^Fgxk<2*2slYhnT_=hQ-5i=f0@d{ zV|H*?V4rIe(G|_0^j1NpP>_Y|Ij2GfUC((E=Rdd)ueUyr3N{4G(IG2Y>Iu=}H}0&K zn=NM^9j8wVvsR>mZr!~j=U&n5NA%8nO0I9i+PQ3Ep_CCPZ00*5vtDvuW4z4AP)6R@ zP!8(sH2iq}tKR$a`}W-Hak`bq?L%i>is$0QcIcXO{bj)Ey!_bX+hP%A^f27>u}v?=JlkZy_m<`_6YLDbiA}w=y=XgKkXvnM1>&@wkw<1bQpUs$C?=Fz z5%jEf#QTAX*b(KW9j#8c!B}?mn8~X)MP07Mk2a>{WE$T0goMro>=)U$qu8(MD)HjH~UOi}<2Z3%Bd_=OL|Y2&7ww zAJ_cXBjlyezUYU!4#0K#G=0IG--4cJlxERCMd ze#{1>xmL1K!c7uhAmLVo)ED)lYazT>r7oU|Uve#kydpgzuInVKbLy7$eH!w5I zWeZp<&^DtEPX#Xb8S$FA%ildb%pv?%+G_t~h2`Y*N@)6cF`a9+gmEEnd}D^?cT*O%q@VO@vzPct*~R|2P( z%niLQjHCZvX$`FYL@i;-xm z6zfxS?bjvBc^Ka%!yRs_oR?*mV@Wxpq9Bc@O0xHHFHe+H;OWZc?WuBJky#E&u@1yy zB$_Hk>hsD(IbE(kT--2xS6TJ;>a23&FXdi%N-Ui!anF~qw~zOJF9NT?fb6q-wqMl5 zXh**1^v@`Pq6=aP(4O~Cyxp$Wjjs}fdHQQR`Jn>NQ8XWR2k&%W*-65N zBVGe#9NrV;saN{?dG@vPaAz^NXMGC8F?mt`8lK%MyuZ9FiVt^J+|n-mgW`KDyX+dQ zra|93P;<`=6}An}gxy=}UItioPX&EPX-YkpG>02lH6G}R%46Lf#OJfj9nij0O*>Xw z*E+uxu)bQYXB$rZCV!^OwO%G|c}#OS4Ds7amOR4a%TjfmN?M^$VO!IVBU2Y$UJn@0 zreGP2bL~ju?1fQ$Xef%~$vE7rs}J)OH`KbZPG!$|QhLDZ<)Hx_T^w5@FLu2z7{yW^!pN#*EHC}mGF&Y z`0ieOiYId2Ohld=Ho07UDxW%{d5c)}vfmnU>rs`#ZP@h^!t$885AE(9#1jrn*@?c4 zCm?p6>fa%=_3ss#g<`$S5@ErMVRG>29D`#I=UaNO_By2h13%ugh5Hm=4;bnHlOgEo zo0(VVo^M2)e02PO6Ve>x$%}MX;m3RCHzVXlUd$8CJ22jp?yZ(CKJQop`c^oOJRyIb z2kP7-#OdBIo%gbiJ0yG;LgpinY}s%RnUU|^iF{WfO}(gW z`kekfQV!`ud0AdquFIb{?*$z%&3~)pCm+&t|5m7rLony(72=Y*S6=TIULO!%JSR1( zbK<$Z;;dZQZ>ML+hBCX7eH+sjxV4n_L%Q2hPAIGDhIBliUg1I2H;g+aXZPI zJAmWG^3=W@Bxn3tz3v@8+A!(jJaXof0gpH?UN_c7`ixyS`AmYJmiyUO{BX~v{U#+x zFh{rTh4%P7`0&M=FCbiJ*ZIb|KcFwe``z~IiW*Hi3-~JcoyPHat>NBq%SvKNPMil> zJVv-U710CR`%8#xdw&h_R(3%;r{jG4mnCj_i(j$!2;S-+u4{Aaz*mEII{f~O z{V{f-lW<(HeOhOzsJFu4R_$z3)3{%(4$3-;!uV8`Gc=~z=iC#8T5m7PAnXQ|=U^BJ z1V%lmk0%Z7)~4|UZD3$qsT8C4$Fv`J)fE*8*m-mi( z%gZ$Ht-|}Kw;&BZ^%9=2>o-eo3}78QYL%XjMfOaAw*~M8D3klFZvrgb4@19I?{T6k z9?ya!*?A8~KAe|OMonX05|v@68vzb;61-bjFgGJ#c~^JYKA^=MlKU}l0nFV}xHAjh zhcwFTRo?X5c7bF0_#1KSDg7h4UFa^M4HKp&dxemim{G9rd4OK7lkIh;YzR31Dzed_uy=a{i~?m+~&)fuM)Nj%IK}yXM6kx#hsQ8A5?`yaP5$D{Dbe`vai{7 zMrRq({yUr>f0k`x$f|qtaDKeKStKvQ*uU^z=SDQ6J&&I04t(DbJ1%Vczfk_M&;m-g z^j}B%1Sh4Hkvwid9r2yVjci2!J-2EPrumr1x^wG`o6!(fuQQC*D}1C~<#Q+av#oP% zhl%Xfy$f`_lIsXuQ(R|uU+wR!s0RIj9*gAwX$FeC{Yx#kc zMQ(Dwr)mc48E70GfHayMflwCfbM5}V-n0$YTj#-)jegj|L2Jj9EB$!I^iS}cl`ohd zBjm+z-?HvMMLO&stULLPS9g|&KDx0N_fQ;b+fdh^32)|}9k&P6RXgDpjU{Uu`_AS$ zXm3BKci-{R@i(duX1Q7)>WJ;DwqfmH)Y$^-u5ij7+6>qA`157u%>$$XKc023`Pg3< zfuGvigP`Fr%=eJwn-}Dx9AUmcBF$fz?@yBN*9=8wwn3QhuSoM3=KCAzA?J@6N4$ge8G+!*WA742K9Y#7ziCI6@30T*70M z-6TskyUQMdAchqIF)ChvkV6mfeEG0v z7UQ0m!e$_UDE@e+I6`3TPdo0lKZnWvQs|s2ac8(1@E`{49X>PSUOd|sI%m=(|2k$* z3x3$wzmC@Af|42Z=IMB#z#!@yYNECL+8fQj4j?vAj|Z&m!L|?7x^16PuRY&oxS|Hz zYFeRg+nC$Nbn>l+1RY|(u8vMc^jl`pJQg}hOr8;YP7Z! zTH6aPo{Ljj(Yd%AZKg1cpT2WX9u!usot>neou!>De)!H@o>pi_$9=^>keA(r9>>G- zwmZss=^Sv5NIS-xD0oFM9Y@vs9A}=v^SI??FG~k|faOKyY`MH!zQDc5IAFr5!(dz|(yFeXO8TT^_Eh&I5yw-Ti&0-GT-T)R+pcbV?Kcql;Y#HBZNV z0g2i?re~y5BiFv}xsz~j_uRK4PyOfY5o6yozd!y)4=*K?k@8YJt0&(EnCdNCr&;Q# zj$0eLVe{K29w6y-q{^S}p9i5VsTkpBj_HAa$b3uw-fk&?MI!w6#5Rm;L8NpmJ1wtjzS;1;b<5zD-p896Cq(?>R(UPAl=`oTXC+YE$o*?NvBt22miliq? z+A8THNjs1h@u@bl>Q_F)MjI=Si)X4pgI69F)|t{F4cc^h+;Y+*bW~Po=jHM6{;=Tb zxuO?&j$uDi;5~{aq;x^GCU+{w%}BE#bL!+O-e5bx?9K2I5*fSL|LGls;w< z+qwG^e+Engv3vJpekQhS*4yKY2sIPzk<4ocHg zKhu_8Rr{KCk3gGthfta`$(z^N&PF{F`L6B-rxQ*abr$oz*?i?l7I2K#PnI}*v92cj z*gz-BIEt*_jr-GjV1EIh`BRZ!(19OVb@lO`N8}lwp-+?W(~$3L>*(Z1XU z5p+Fq)aOCH!~EI!qyOmLNO@5YWnn=VlE!k<7znh_MLu7rl$@8+^ZujvAW#3%IY>$W zy+!p<9{Z0{9!2K?CEs3w|7eA@^M0h-ca8~p{UFLLUG2M$*O|f_Q;YW@b_L3L=^Sv5a&iT{D+R9zrsJr4 zHph7)Xy$Rt$)_wG?5%d3)Mi{!;6Eas-B+o9kWc+bTp#p6sQ;)v@*i=mV*k2VLp|e18jQAdzN8PJp7kX$AN!InAdc}ReGGZ^C0&I3 z;MZwLK90QgC0&ZV^(9?~y!9o00(t98`Xut!mvj~K!RBa4u4X>+C0&Cu>r0~S#J(i1 z^VpZf`D~7SN$hK6_mnucgYhL@3p`#$dpvzf*9pAPmo%6eOLzIf?Qbip@9|=@%` zV*WGuqo3(!q`VZ*>eJ5wruxm+`MlK0!}5NmP%r33^(%cAbf~MpAn7fVei5niqxKXya*oGzfk;j@&21+~w`CYOr`-bq_9@bL(e{>sdcj3{yW-5zRS9 z7UFv9TPmt&{Yh~>>raYdY8w>MwEm>Hp8AuD>RBIBTu*&SMfI$2i1re-4DBPX%LkYa z@ZPVbA0l5w<3U%?`-a#yX>fg!#*dg98b3z9h{jJ`z2F=AI`Y&R-;ng4DE+47@0Ijh zlHMoj{gQrL((g$6T}i(u>Gvi5fus*f`ctGue5(Dc_94H!tG=P^xR;ZML4#MGPIhg? z_0$)Xub21#{6hGBO!%e$CtYU+{+|?vIa2@681etmF17w2;#xaZ>{e|0-v1NZsn-+V z_SnP?EA8+wlaM|ccI-PU(ns; z&-jAAioEp&eT{kJ3u4~-f_~=kv%a98qfC84kKo?=f*wWQ`htFmy!8eB3VG`b`Ze;r zVmpyO8Tx`A7dUYWeL;g6-PBf8k5IkMZ?z;9&7No~XH3j9XIv->gilJy&LeOSK{e?P!J zcf_%Z{YHO){qkD+js6B6g5M~s>;|I@=|g%3G>i{v=tOWn;`2k#fsXYlF(3Pso+pm+ zDZPTc`jq~Kd+SsBH}ck}RKh%3pHdll>r-k#-uje=BX505BasjG3%<|EeB@IajWX*~ zqFlv3CF+3Kr^LB#j(ke&Yh*)}IM##lDXjxOc*V8?_eA=X))jc6Pig2gm|6{k*%L2v zXW_ys=GJdSDi2QH5Ktv(A3cP@~i{u;41#7n%0J~fl7_kHM+;IkGZyc z{8;3ue--^02)BDbx%4RsByJf(~{5#*%I# z>841PAKjlfM_Eb>JyyQSLkv^?)c>@F(B0C}^=D?*$?*@mO(^G;hj}}M{wMz&+#vi< zMN(wlP+9m;y-_uVgubXj`^mC=3}QQ&G^vhfsxEIFU+%+UPV;tNHCQ~~y2lsEg7r(q z^{ihihFQN<44Z@X!>g!0>z9h_9b2QG^-IO|)b=Q9&-$g}de*j!VJFq##rmbx)Xgol*)Q-qg zm+U0z&QUr+^1Dd7tE9V0y1S%rl60b^dq}#cqIC@miIkP6`rOcWjpjerE95_ZHLbur7-GM@J<~!L3~fNZLRN#xYpJc z+c)(+#kTHx;KBNy8ksk~r_GShocxErrMl;lwgR2VhDx?ZS+L_qB-X&*O?yX;{8F}lM zIskd=mzs{e^-CRyJg?Z+q+f`Bse=SgoI=0U&__G9H`Pm3dt-TaW&LM`ybq<$BW`KC z_S(b|Dsi0C_9_l=wkJs8wuL~M5P-~?KSHW@xA@_WK z0g2i?nz-p9kQKFC55qm}Jl!`AN1l5Danzqe-Ol_>{LyYb0x2)WTQLyo&jO5kFRt@; zsZ#_S1--{B4-4-jsoi=c=#choNsp5BXr#&y`$JlDQI_(J9xLBPFy&9})?&?u}25Z2ghw9#>mc< zwSzLU1U&1LjOTc~*hnhRcgZuuG2T3xGs?_V(6noyRpvRa(`M>4M|Bofsk6w`**2h-6_>Ojw%q~gs%8lDZw7aU%?oR7?+ILi;-IL;#-M78%`1Dnw-JjO+wE0eY z5#Ogpcu!)16yYsP@ydsz`QWsFB z-otbt=*4r8FQRd-s~2qP7UU`K^CevnrR|dMkhD|MQzh+{bg87LOL~T+?~-&t(sxUG zwxs7FCI4fvjyQH|SD%maZt#`w1AfaMFkZUmh?~bNCGU^$R#ut!4+@@s8-l-aO`E>B zeSBX}@Re7^&+|}DJ|eh;@mcqvbAn#kQ{Kf`0bI_-2PC~f(hp1eQAt0B)a@I0gR68wbhL$e&{_lD>TcDe-xZNqH?e$D}Z< z0iI*$9Ihd=o>D-yJ@b@R_iT-1Gj!k~zqWzkN^! zC;j5bp-y~;IRRz%4D$};)dxQ)!q{V9?K>4GqRpc7%1PwSoL4Huo57bV{5uZJx0`n? zPG(-tFMOxsy~t~Sr%d5DnuaI;hcb>L$KyhOkDmr?+qEQp*O=>~8}D7v*5G>=7c<}A=RUB-{3Xcuclvo_{xakj&hP5S2N@kc>+_pT ztWTaUXCCwxN*}L4o@XTH_4`Elp34D?QX1n*p9BuC_}s*^%KkVvT`6$l9GjS!@t|xU zzBQYXv^qwY{}u=3-|r3OM$RMGE7vaPTGuZ14)fRGkMZEx#!O+rQ+r5h$e!oushxj4 z=t#Ny7TgWUb6tNLX`od~ZbY6JVf0T}nEJwc693(uYk?cfCg<@wlrPT!I6n;ubsB15 zrDOHDIV>eNp-kmazJpe}nRKJ?KGS|)E7`sL8ApS3(%)9iOu+xre#U<1=1<4?bKuR6 z@#m3u;|N|k&!55{=kg0kdFg(|ahZsG9=Du)QE<7xKn1L+f4J^ubTuUTF{d=31L8sPkvoE@g}^$nC;`MQUAm|O0b zDg$hX`FjDQtbG$HFP&Qpi_hHwX6JqQSUxB6Ezn_lpQQIACC&4Zru868Roeqh?Y|r^ zpsRAGHXm)5e)%Il?T@sbQbY26w9Cul)1K3JNn`v6QhfiO?GKRWSpAUv!)MOEu@2kJ zw^vRclKK|6xUF*XAtio1&N?P}TG?;?a<2~a>TPhamOQXl!&rW6_3NNdTa-9zd-Iz( z-$uDthTfuur?mDK>U45B`3~x-KKDAgoO~B$YA>^`ZnW>6nakX7rLycf91QHUHT?Z| z_MMm5)`Ml_RoT|GCm%$+-Tm`uQu2eb&c^&{DB}lXogMl!EpuPY_qOcMeVKpsMeN&0 zPzGx@{XXfV$m19L+^-9&4g3qCMYEQ+67#+D`j>ReH&0z2MEv(J8Lc1UO5j|lc$hh2jj&bg~V?LoaX!B%drH|9zHWH-}fgzWd+ML;qNQ( zS06pUW1W0Zo%W-fo{*DJ z=iaodlu__mM!BaghB<&*;Fx-T_GX!!%UJdo;O&bteGZH^9324e_uHMc$oHWjR5+g< zyr8|OmuGeN%_x-Nd!w^#8FeVWM>|6h9UjZ@J=z(9nAXMjXbtMBKdU8!G)IGcEe)%lsmVexn zC?C}6{wgQW2w&<8RJ`sC9xU1vPtLsq(EsRL&F^FCnS4mk*lQT#RXt-bL^5&2L2^-0 z_0_+Vi5(&P%4I<-Sp*wZ6wVRu%mxhar*!(4N-JFh&CdDZjEOSre^m6wsH z9ZMXwV``u@fj!7%fFNPPtYMh|B)1p zxqJz!^27ePc2JhmLXVa2BAD{$e8fSaE=1Zev1QVlL$7?%47s< zs{vb71GcyZY)K7RcMVui4Oo8-n8xsm)R+X(qSl#^`%2*&ep=F?y&2jLH1hPz>G#p{ zuzWmkUm2tQkP@H1uCyKON!DLNUqTAQTB4tq`wZW|;WyFv&Z~Vck+|wp;2EEAdikrp z6Z-=3O*}9DmdlHTn|NLsJZBxYgE75)%xF03X8jZm$w-u`pMvk!tc`pW*BeX&&i_Dp zTGeL}N1@$Jm<0PJ$8R+GGqJsOh-YGZ%-h)By3Cu{-qy%#pEb6(JIY`*y4c>E{CyhR z+k^E@Y>(^7#`gAOL&)k!kH?h69B401I zHyJp*;xiJ@5sdBaFL2@%#`Xp?%jr2u43&DeFwV7VEBbv0-?{}KT>C8NoU0z7PGf#5 z{^+ZZZM_r*JYAnkgL?ww1H@5#`#{`Fxr-GYggn>!bfke+DLEK|_W{_?a&3V+ZJ{zj>x ztFMkmUgvwLvA(&cuFA?WD6_G?W08+#hvy8&`i=ukufka0Al7`(U-r*d`@`eWs+f;{UJM`eLB!h8#0l(~~-43q~8i_gOW zX6N6>I_7~6V;%D)ZAD6&v@6qk;IwLcfT^vS;{|lBywM&>X`1*R>&37*me&q`I0mN( ze_8wxyUWwc$LczS))Jw0F2*(G3!||M%6X9%V{j=fiq&!6bbb`?RFoCP>QWk@YsZAP zU^N)+j%qO4mjRaLIa@FL?ZUX;!{|FN_La6gX}Uh3%<`F$Kg_wttn9gg_4!9yS^S3N zon}n69Vg3CJIY_ogX-4mZIqLX(R+{3 zTZEMO@i^P}!Lt3&$MM44g*e`$Q5=srYI8G=*M@fEINl&sor~ivKwZ_>8p~UVGPRLu zlk&_L$MWLuD>6>R{`1Pk@&?0<*uNaRRk5jQM=nPDaZIl>l%+AfE-f=Ly>4HYiRtyA z40bbI_&yfci+mi@>l0cU)9Xjx#`IhsL^R&ElyKxVrsv>{Lr5E^5gx_#IIcFP=jxc4 zp4QPeP8S*)(_?*zbtb0AvN)!<3}rT^$GnZ{F>hmfE^lIbuD*%sox%DhrpI+>V|otX z#Pr?;xQ*#aK8?LeJ`>Yh?(1Y?dTiIm^xo~;O=EhFj*00x8c|H|9MUy0y>pQ-is`YO z=i@l0M_Jhb<#9}pb4S%0$Mjep$Mh&GO~AD=J#~OpkI;`_sns zD8GBN%*6E0L)pG4s~6Lw&W&SwEQ@1$)TePwk7aR8k9Fgi9?RmG9_uz?c5FR(hm?hOI2lzbq?lk@HX{i=hE?Y)Zk6xBSh_nu;nZ(|6FOq_3(I4U6YYQK$v z9i#9C-GZhH@oWSz+oxP0kl)5AAX~c!5(V^UJ-7^b5E$3|2D=&phJExk@QkYFGH&Qus>|) za+IaC&|~Gh2&ViwA9X27t`NGPbaZ{+NH51f=w5|#UU`_e#koxDej7ukbm-DCq^Mx+ zr&B7tYbx-bfdE@v}@7Xzx)H5V472gU7-r*xG0esXW7u1SPx@L2 zqh{iI;#$6q=|Ipew=a3FNbJ zzN~^D#0KEvTUUZk)}MjjCP10`GZ^#x6!KBbZ|IG^N`D2%@EY)uiBt&9Yss&P0bWNu z69Z)4#sELfyomwciM)=1#sKd_8H`9bM)&*sGzR!>);BRgt}Pn_{Ep;p43O*2#sI&| zyomvR4|y8{`~mVd2KWH-dgi3><{{=y4Dd(D*NXxE7&yG*GZoJpi~;^c;KV760SQ?;#Pi3f7+_n^3(~xKpJS3l3yXui!jFiEllG+8V`H~xUsx49{4EAi{gRQSE!MB=kM1j zQ`yuQ&*P*U#RF;2G9LIFM}u_e!zy@3bI5b}+S;=mch0Gf`|ogX$NdT9-PnSE;{6IYbZ17LGw|eX;VlnV}s8CrdMHXa24c8`WF8d>EKiYbbWrT!(4N|t}=1L+oL!kZ9kQ{=g~JSb1xvz z`ovMWpu8~u5@3|S7iBz@2MdeO%K>I(!N*cw1|7yyUXk=4NJ*3SWm*rMR&5V3wK;RV zfUcE2+A}H5f;gdt#c{%9Grwj^NZC%7Rz6M`XyxOC4MJ;}(Bd~}Q+$kuwR0K&OJPx* zkn^VVqj)1hvnWoO(ul@{wq!LJZR~0=+NS}QpD@-V}2Vr0q|dt`8BP8TrGU z$8kc|)xW$PG$dm&F1!fScAPAu%*u%J7xSQcwt5@oWW2ONJxiG$hdk4bkZPQ84Avq4 z7$>y%d7g(Sn?&?B6?*@XH4={rp8??IXvtXmK89G}3sEeP<8Cm5U7yow--_>>X{*GUg$U6Rs7?(m3I8 zEi-Y#5xy)FCtMq4u&vWL;V9(eIN@larE$V_khgI{mj@Az;jK$J@){>}a1$pSLwFP? zSW|d?rq~p|6vP6S7?!C*0V#o5l$p9TO*XG@>}+W~6K4 zgdF3dI3dgFr;X!;l$D}5A?FTDI~ONpc^oICtTX}F#tAvM+qtq3C*kY%q& zoRI5iFmb{yFs8g>JC@J5F;2Lpz-z<_hpti6Q*DSE)^?VA+m$jxUGJ|DBXoOo29}Kr z@{BNQAW6m}rh{oq_Y-N>iAK3hs$eyZ=0#F_HXN>9aJFg&_+YD586<_@6BMIu&02V zz#iS#!OD#+=bZ4|Fo|WjSDS{ghwwKVcH0+_@*)j?>*+I3{%K{iJ?8zGhrAzi&HL|e zD9^-icJ<52RH^UB(&u$7`8)u}lD{*?i}iFYr@ML$8}1Dld4V2I&seq(KTqp6Y{>XE zaR+3awJ!ENH|`35Sn?`|Z;JBhYesJNjPelq41CKdzg3jqEy_=f@_R)2-J|@ND8GG_ z-#N-d95VcE5anU!XW$c}JjdF{AP34APIDQb4b)3}=R&V!YJF+KJ9}F?`0{jLSC2!L z*Hu&7HYHT;)nzEPltT0L<~^HDj2iD9Q^wC3+;5z_FA>+`*S|?C?rZ&G^7QDJw5I#^ zg$w$PD&RrS@F(Mb!T{Hwj|I1oKdeRK=oyjc1?K1Dk8$#ONO>vVih)qS4KQ85w$1{n zQv}oRr*6s^OeslPfy*`*O1cQCwnbh^;}n#o^wAsTsR*WRyLb)gFBZBTj;`-F>E(C> z-AJWEceRd_kSv4AfMx1rZxR1Y6NE&*s;yH)) zoF^0b%(E`?c+JV@aJCL-mxKR2aj2yt0ScFIr03n1og7# zx`w0+WqPh-jHDZRjgg2%*CEdDP>d^`ih8_a`-R`!+W_`UkHCp@GEOV4lO_$R3#qAs zH_Qg}h43rTF0^|+omA)3H-l72pfXf#L_I)Vqf-Zp z&wjlRf7Z`l)c!NrTzL^jyDO~+9jLx55W}T@ zqYk4lzDU2Zp4D%}MILLh&3!9su=?u-^e5eBD}DUflhco@s@I%O^t|-W6Wz)&18-RG z{7%!bWI5noX}ns4!t2AcK`+*al#$BR-d@B-D?Lm7_o2>1nbnc+MLzhmQiG(Ho~))w z_(ag7$#zsHaNp*yl>y?wMq@L>APa;pB5%x4_k_UH{0xj~u za`HgD>u{g)ik>O2jz094g=sADQu(Inj_8ZV5EJ;x&_=liWy?b$zQxp#bfC^U z$&!|y#fi&PcWj(2>Gj_YUOTxKb>{WAceGYcTh!veHC*~M%ChT!Tqe;Z_G-=zLL=f^WUW~YH~$`Qx!GVH~?*E;M258FI{>t14g9HStY(`v}ytd^eM zww^FhbE5()i=RioR2F%!vUm&bIj1U%UqoK{BiOL$yb|`{J4a1)U`%gnO$T4XScx>&R}&5m5`BxDgY}F zUkC3h54=}-xCi%E9=?gZ@=CmK;E(cfFH&B4Sm=k!!?%D-dAJX04j<)K9@vJ;!*_6> zwh0b1Z9*O_Oy%M10(rO}bgB%AlZ$TyzPuWO$j5hq6U)cjs zxm5rB&197}lioRQ4jXx|GVoj6TN(Hr^2!_W zeuF>Cz!OM$4puT+aKGNOSloxAV?6bl(4j`?O7Pm}wL9Zecp_`V7<8QCH{v z54g{c1>Xf7QTijwmq!53`=3#so%aTZJDAwdQ?A{-d~n`IKtBE=a4R1X3svXspc-rc zz$NW{eHjBGF3HaS)8IqrpZ7Zd&*0w9|4QU_&WQIn{Bi!DMaruPruL1_|8v0Q{Qn(k z4j<)q{@I4k|BJX!+a!m`^KvvW{}!h6zqDXacpmlQ(eU4M9Z`A#u;n=*ZPSL*OMqqN zU|i{C;UV4!I5%AXuL#`EZ;t%jxFpO?etd$xIH|_`cXoC1C%<_iQOy~J{%rno|!%)|B7khj;Sqo*$ZK2!OOUZDQXXmqA8iBHSE;-I?VJ=4krdKKP z=L1W&XqaFUC2ZiO~EX5;W@pCPO@ zW>Y)bTY8UZ>1&{CP(2Knvq zXUEy~0g}8u%6X~1Sd3Rnb`(6fZvcM>+zhcQnw37FwL`+?*Z|2L% zQEjL8JKM+Q8MIXN1>&PkJCHTSnA$L#IWX3iDMLx0() zT~IHb7tm1|AdG9Q8jQZ26lQ$IwR}x{<%Tg+nDBC!<>gJ57ekZ0^w;1e%V#Os&jN+AH{LAB(lj)|7cwTg0oHrz$l&aPO<&?ri_(V%#t?@agD)G3b zZS-Ipt=BXmc9)0M*EB&M2=KL;T$|x&W^C*t2<#Zvam(WV(b$3rN2C?U`Qt zDz<}R-1Bl8_EaY?ShH5{R3^@Iv80l-qx_kuA=v`5ME<=U+>mUE{Bl>|Y+si@prZ|b z1fOpL{D6)w{FA)Yd9=c1PL4ZGA`3xeFUR znTY(nwuSBbj4bnQovjYG2kv{@&q(R*>FbKp_k6qsWe2r)w$61r+?Tx-WoqZ0aH9Y2 z&t#Mx-LlZpor3!Vx|VdexEM<*c^mV1S+1|m4FGKaQZf}~?vYTj9XUQ^dTORWrDPh) zk811lJWX%uYjOQ7B?q8+`Wr)*VeCS}5CCQRX zce?cG|1LRy_%M_^k2v^Yne!*3tPg#1&o-cLC+4%#+jc6)pJg+&43fz*)}tPq$a*qQ zN^5VF^*YCq>x9ES1h_}DyzNw1NLaS{%1MYK&%(_EJ|3suPBUr6Kx|s8}VM-oP&Gr zS-O|ZMc%D7bbxqAba3TnvS0S5B)lb`>0SR`>BEkE`_jc9wD;3q-=i4$^}EFU$jf7t-QTxi{<_^yLvm- zOa~IJy1|oXjqlB+kE;3g7oX8;8XTPHw0^UWUt!O}xod3dd#W7K-_h4j{`M)2fHmxW zN?q8qR>$pV(jgp(W$+i&IiU;&m=m(oOjO6nHcMU7v|T^8*Fb2Q`>vIJRds+ zXFvKhXdf>IoeCTQ{&4HdcphBbwk$pG60ZYget_I5*wv*B5l=^uc%3Lqm4$gOwj1S{ zm4x>B-u5z-uV#Ybd;@2IuZ%!|Up{BYJ`YRSW9K6&y%YK6t6K-$xu~J^F7OtgN0y^3 zK9A7mSP$osvjEdez7?{%_3U-AIcAm^pRA(OaIUJXzIH7>`ZJRrO9W7nIHe{GzkWup zdzSd!kTpHOo{f9i&l=ltulw9Nq1?sC&t)C#bHuUx9P{tRANRTQkn-Z5$+fDq-iLd( zp)rFM$WvG8J{M?|llP;Xmp+SeKJwh>K2U^@a@Em2)ou4wCF=QSjSw3j;n3F+n^z+t zO3&>o54taY7;}`)C1zjcLH9)q(|vKd?2FtpbziKuj}`5CMSCObSEhEr+2r@seo&@g z-tMzp1AcjW9IgYGmv2UJKYdSHhKJPLo{9G(SVo7=YOHu@?=x0$0eHp!xSBKT_jZmy zzSnTXvPEqzjJiSA4O2Uy_t{V4alY4Q8H@($d+8%6i}&A; zqAcEj>3bTB{r6*l>9v8Lj#l%La~rbo`1)-r{#gyKL%*k#8hNj}|Dv?K?8^OKQ*LCr zzb`c|GWeHX$ie~*eXihBz-61)Al)*Y&1WOXD9?pdrgh-w*(tk+;+$TVbNY3_ zmvcI28Pcsg*lOjB;%Bfc=*+whoY?(MYV3gL*H1Ea4mm%Zr9z{3`G&d-!V1tbdN-T8`_q{$<#j-7^pz z|4*~bD+kylqmvt$KcK4v5yX(6(c9UMXXFUKiSWbPT%3^ko0&hnZ9yOQ|1^&mnGj9H zvk?NH-M(;3!DaTTb`mIXdxqJia04^v?qx+X-J_o#@-Jv=f?O zC)@&7zV5$a~QdhdPyS*jxb{ZI?{uiLoG zX|1!~*sr;xuAHw{<9&7Y@$P9`ipRy#6E9mF?APIbRnzU+_Rte9Hw@%~?t1&aSQ1c^&OKudAyg1jy4J zTl=v(%|~UXte`{7Meh!U=K%f`@(am&g5g6qDWhB{wG zp8m&sB)w14ZzI()Q2*0+QI_@r9BUuQQw-DbQ9tMRgzoo|=K26yim!e667bZ&`eoZL zzU}ivE0gUJ|wt#nDx`*S$5Qa5V%Z#Bt|46_qdcmt*?~{_MMwY%|;cKttPn6m`h=FOU-dHl)>P-6}9A$L4)IrS(gp z^(&#(54tHW+^Y|q?QqPi!6?%y%(TOLjMY_x@%fG-n9enQjn(G*_ki)z_uPm_eE#Lf zu_5_G75rkkYe@bi_{t0CteAE=c}j5kOcssOKO)cc&qz5}e?dwa7{_!V$nw+3^N;)z zk7MEH3bp@+dtO@4>Y0^NN9W7efmV?^mS^&vACGeK_msZ>_GvL*DS1KgREIo+Jb8Ui z(&r_85h>dtoiL|?r#ueFVecBMmt{-n3wxdPuuwy;OxV{ zk?L4k+2OsNiv%Cy=EZii^Az+VX>-m?z-3xSs%314Wo);I#`P%YMOe1&z`KRT0E%mu4nBt^_NFD`zzQFmch|3%J zF9{a{g!?=Z{IeyG18(1SWqwJ^=@nb{82}ZIkj8J3$Ir`D(zPeFeur{>mR0$C z0%c)6yXQTVCs9^8TxQPAc|-D7md)^!Nm+dfd3=okUzGKHaxUk~d%+x+e;~gA@3Cq- z|0KMtAJHT)Lxgv9oz~V>o6jAw ztzpa`c&bNmhdu%sWUs&Auq0-Iia1=Z0E?H?nNz~{O$*0X=Nw(m808R$v@_+v<`8iI2fNXKOS+g zbpg}M#=%zC6{DUIe?$%I`G5JI8*RD@OY8fjsBN5qLX9bhj6}J0c~2Q}B%wKOf~r&W*~%&bVivCLraz z)M^tef4iWZJdw|QyJ3zT40fFzAAOEwf;>k;TTbmd;#s>+?7Z}w-9`2p?I^6U?zYzO zYzNEa$&5bx9Oh7Lxz*KfE3(h3*>bPOZi{W%_3+iN%`o2>>(~389{2|Rp0^eFu{Id@ zp6yH-zi+{^olvGW7xTL!uir-A4fo4ek50LLaCh(%?}PkK!M4~3-vpRmvJb8voMXcS zBmcGSO&s@b51~#NHQ@CZ&v{nA?uqfC&f%GZcz5G(G=2kWFB!K>tH<=*5u`#*qecav zrO<5{?eSKWlOF5SkH>bD_GG~J$Di(HmfjShr?}*!8g6rh zOS&!@N94lJyXZ{$e*JngXm?kP6XB;aztew(CIB|SjWgC#u# zX^tN1sZU48p8OH-FyNP{jVIoY>(5iw=vJYBflr}eD8p886kWR3Ezf7ZXFpN zIbW6z#n>!=Lk*5U8y=2+*?pep#Um&O(Rq>jy%GE5Ou+PNOnfZ#jU+ONxQAH|+I%(F z?;`)L;Ai#o8f401b$2~yLezG5=XFb+i zmHpv((0qeDpykdkE$ELuyR;&2bz!}|gSxT}b(X(D28I1ufd0g~pU>-!gYI7lm|mj$ z-yl6-Bc8L$*z;V&qXxY0;#rONr&RwQPT14xc^KS7X8}Dvcrkn$p4KT_&vrNMZ37vQR+ZM|-(r?_md8g5U7OS zd%F*uR#+duYbf>ew1b}3GeReDsmo85v{%x8Nta1_2GUy+Z^M%(tE1_ki*0z0V{F5} zll6i@WtG z*g9u}H_FO;Bt1vcb0s}b()S|G(Zi^yKSsyEj?IcHb>5G1UTTNDPulo^;Ikfej2l1G z2HTHeI<`vd0-^OGq~C>X^LYcxw%R5l=c#Sto-Z)Z9}HIR&j(Gn8P%0|@8A3&@a^9J zVdUezzt+0oH`Lb0p7;^h7xstmy}R?!;MmYDr;42Ow*)yB37(;&Y;iux&!_=^Pn%Bf zd4ARVi=_OH>hDDOcbxk1!Oph%i{abPKB};0_~ZO1U@J4^6*K3s*ke!kt&Q5<3rD)w z(?K^U=Daz5gc?4JGivx!wZ{|p*wfF{y!O`i9(?^Azs`mrww_b@eP%yKRiv@W&3fiT zrBilIzq~tyN}iB@Zhhz#cc?a%+zw1{o99&TsW(b=Ma5s$+q3zQS<~k1wP*8G_iyd7 zpIhCAs@{H5mp826QsX69o4RjZhI^}lj+B?`{QwL5h|{~+ zM?MK${to+uU6Q z`Ts|q=9%>x^x5v+EW4I-ANeq;SJ%OweH~zWshw&x%^O@yULU!tEA{fQpa=DPoHqlP_V?!` z{X9~(M}Czr>Kf9&1%L7Hw^J`wgRwm23$auEooVg2>fl=~9(Yk*tv2Vr2@S~?$dCJ!)*I6RhVDzgh(4-5oPZb?%f4jFcAMg#-MHP9?XpY0Y`5L~ z^O|2Vc>C|4FWXwm?f@R<+I=>JaWu{+z6CZ5k0rXj=}y4q8z^tg!FSJwHk9tN|V-D?p_6_8z z*NLP126Z;`-vo^N**!Avs*3|Gzh?!Q)#3hkUG4=P(*BmD_aVLY|G)G9#5MK!KQWyC z-E&x+Yb#6N#(YvnzJoNC14!O?k>^D@qx`9y5ubS9M;gDMNZTcap|08%q|fq{zOhg8 zZHIblll%~EQ3fAGN_^TRp`9AC9`O+OF|$TscclCoyJL*l9keyn?jWAEJH!r2{fw`- z9dbW-^-6wCbid&-QF*q8vR0Xs`V!rT&1r9ZkL9!5#K-7uh96{bec1yjv$hJKA$`b{ zsa;~r)Gqmv!Be}$mWf?b`Z4gt?pQ+y+dr%G6Wd?0D}IWy*skFBxi*1a@iV~m%Geca z=qRLyLze&5!(5QSDC`3FErH1xd+KH9n>R60<{tr!`~Sl-Kh&4hodK5L{{t-OUOlru z3OcO+3rQbCdiLP=e|6KX8J>Tro>UHk0jYgh&1AvPzun7!g}LE;{~BpJr`XFLN1hjD z=B>Eby`1>O`z_LVFTWV&DGYV(UVdQ>80+xQ$zin5XZZ>=b)SC{d{EZ@fHWt!5f52f zk-TFsPkAtV`Jcs?%>7&Ua^l&&T=w?=$zFaT+O~dXj(OJ4jCU$A7Je^RFsg z{awNz{!>zXoZZ1oNbkTiCyWo0C+s2VcP%)UgL$5+3>sm63Lc&- zoK*jw0o$ncTovK9o~xpq@wuu7@SvB*t7fIIY2+VxDP(B~az>xKl_loa0uQuVuXa3# zISjD8oLQL4na;0;#d2j~Dp&b>kz63wJsdnzE=EW?Qqr|09VO{#q+By>hwDjYb6u3@ z+JPjGK{+qQqYY4m*C=>uE3Jn-`B`7+vR>LZLzlE-n2xj38Yi?iK>7e=n$J;DrqxCg z`A%&jwzDeoz7FUQ;UNz9y@au-W1pqk5P7u+xc_ne)mjVuy+}SwH6Hc!s{JfgH3=u@ zwRPz8<~O@JH_X3+Kfa6oPxt&nk{nt?zfaX)^6~FT&0o~gxK<(VIRc%_PkW)wgN84s0k_83vrb$%bDMXbfFh^M4P;HT?ANIr%HEQp}QSY-FL`K ze^GsWd1(jW@lssk?SX#TJ~%#ryOZGNVIfYbeC#ZIOhC&1agOZ%N}hHFEY~NrvzxS| zJQ0`UUxfQ6!PRzmN1o$1v5iG8Sm-o;osea*DS$XCf=NQ`HA zJ`3sXfilNaPyc-XO_qjaPgl3MucvDnzO~Yj?1jAjUJiNQ8)a|XPDeRe$=@p95c~L> zQLdM)^_V>v&}mVsL(;W3;N|o!pfd{hd07kVkae6MkUEp9)(JAD?f5;>ulEVAzPH_` zfCisS-QV@2l)O#yW8B&=CHo;AlQe9&H|BDi1iw|8BrAVbLzm8wr#I7Q8S#ak)-L>( z{QUWt!tAq*RD$mLMBaGyk7o`|X7JAuR&T}Y?CE%1aQf6~(`!5^`0UCW&k0tipUkNa z3;x5#12C>?KOcyDI|m0L&v_z_)y2#of*FaWr(3uBqARpIuW&Ay4@xj$KpC&jE~U>S!4g-R~(^&9HxT%>>+X za*W{SVPQR~?|v?DX$u@H>2XMv7hP*7pe&`2UL1wCc@d9&QJ%>Y@lGT@;JS9n2j#vR zjO8i)$RC_-JJ3{H=47-*{#%f;oh*KM#*Hv-$MF}n!*w0_3*)Wrv`IUy(oVKN*>)yY zp=Ia8k5OpH!rYuk;}`c!<-yg1zDvgs^P~Fi74c{+k*}3L ztgrVPlHOTEW@4`AFQPL;mu9>MdF-6H~S zIq4Hz)jI(ebgb?Xy})H#{gN(4s=VkPaXQPC7xY5Uki=tOlxOlpyfaW1?-4w&RfDlS zr61|;Y}j+rM?;n?J$2Q{^$d}8!4}uHGC6O)otNFGs3-BYENcZ@#(vIbq<6VUNX~ETYuS1^Wbv;s@EA}^E z7w^?bUBWmXVSd6m&U12F$JeWple&AgfDvZ#MM6@oe=!wY=%Cr+oB5dI$J_F}w?5xk zuBrRkFY8}<9AjktE5xBp7WsTRp0C#DdntIdKHn>t*R?x29Rp`qUkO<3_x)7BPyN0( zpe*+L-sI}ym?nPTn~{(GzMnyv8S7-4_)UW%YJiAM)}| zLtFWG?M8Y#3(M>6Z%MoNMeVMOe2#C>{Xi&qRzfFbcVBi z^$%9!okD%45?@1Be^ma_m&^w({86R@v800McBaIBtf4cy>qPu+F5cCfiQh?gdQ7(2 zIj#g-ZOXfU3@&gUe^m>^O*W%qujw-TLhX6kyLr2bQ{}f9edWx4U%RrO)JbxVz0JwG zw*z=@?SNR{a*yYlv35ZGoGfvu?~3dIuGLp-2iy%FtsQU=^Qj#$^tsjF6}cC5Vw>Uq zKs&V=zK^olW_ZBW4K~9Mk&kVL2T_*V3^gan`-dOO;IBS{#_?JKduKf2+&==3dgbh$ zRhWt)tN<^>;3coWgN{!3;ejMMuexo6hbCHjmQ@zuEdzdCr$C47TA+Z^9{`T3M{66O zeZtSCrl0g%IXm&sDei@};Gauu=~>vnq^(mv+RXJsn0)Uo3q*ejpNK)n!w>x(QipwO zfF1Pn{Cq^r{dfDO`!c`B$3Kq$`I*% zxK}^UPCF+Ux3%D@A69-$>QL@P=Bg=vZirR2tv+k(_#5!N@;A_|&CO?s-8;PCRlhC4 zKJjKeb+{4CdB)049_0NM2abA%0MWk%6Uud!o{+i%H)o220ebJfrct+U35peTL9@#h2|0nKKo`IL? z560fYG(LHUocXVHym%c#S;2I-^>l{cd|_GJ>De;Q6~4;UCm&^U=j&&{Lwl!>iSfRx zzt24*wG#LJoxO|N7x?_M$al1LF6>*BtQ-RkwKm#sZ)MD_A$bX~DguZ$Mkg-=UOBj} z508p~_VDBtZ#1{=<4n7Y2%obJglQ@K0eyEbU|Os zybk>0p+$mD2XCc+g9fkI56tzu5&Xda5%{ARLwQ!C%4lF0t+IZ{U_hv=^!#%vXa#?3 zDJgFi)}ZybZXs=}zn1HqYrY@+QYM)X_zlTgpu!`frs|<}fv@e8FSaoTWj02pZLA}0 ztS4=-4@LNFpXDhG@hs(+eP)|hH;pT#hu{1{IWKL0Eb{E*hDdenR1a)~GPdW&4*k{k z$je03NqMOQi`(2p+T0Xreq4jjngX3dTZHZ4%;4U)U@Uz!>MiK*>YeQN693#)Bg&i( zk+}Ez%(t~I2Ab0w%c{{*p%%eaUWa87!Tu896zPYSPRr(?14RNzG$j7?KbM9SFyA~|4Wr)Kc#C{Nm^3=%D@SPY*15)Hv)yvf6M=%2SqO733Q;SN&HK6HaO;_Zk( zyABCs>@Kn6S?Fq=!9!7o@yYf2r=8h_XC>L$X_he-$bh$9 zZxZ}Gtzb8}-(?2>y8@TS*zQQVwkJxu2U6B&JLKJ8dHW&l7Z7wTRL_#nLLSlLn}w#% ziRzKJpghnFW99k+y>4M@Pb?MR!IqE?je&EXa02EdM()K2>V|GWeLQVhH-F#L+5lXi zJE3iupzTYrH#(n!=m(bfE$Zs;#bd&~mEN{)Dc>383wyfyyU_~QAZf5{K}$z(TW8A> z{S8r;_4V}oBBw`&C3~VwMO1_q^+zXrq1@UTdn3O*LZp4M5AlqBK^`$Yv=6dfaD0t* zeH-cF*{%qjJg(#6X_siDu)NWihi;iVm}0h>c5i*?9rCQd14=za`G#IPSci&boQrjm z%5;vU=GRRshhcPEdRkzRNIC05haHp-DcV+=8}RLC8CL4HebKJ!O|^v_FI8+I536qr z?FYKNVq1v%Xe-!4lLY?6c-n4GXGSwtT^}8acVBe>=UQXlU-`90*krU7>m;t*0JFAw zsgdQXZhs5tBy$PLqAQE{^Vi#Gl{LI>ru}n2Y?QFn=a{ru04PDoB_W0cRBWJ zp4;w1N?kx6bvy_s{XeTD1(%$Sk_3o(B-qCgH@pn**_?%m(-ji6fMfHxYQ*U{d_Kuf&$IE-T zGmxiT9TufWNd8Dk-!ADU|liaiI?c|>A?r;=>FY?a^}6BigXFu zw=mTgc+=SV+wA_$eIAypGwQgva{so^t#Pm1pEzl#V!@Wnz>E(9V z1Z^!#=JhW~U-L0gZycCsj++o@q3vEy-p00Mzg-vk3o+@~(+*gQb36S92Lb-tG#C6K z)>dKvDHnV?N`L=$J&eIS&@Q@&_s&KqC*mG^F|**gl$=bSF+S}JI^_4tOUXPbTVTps zS$0U<>8q5}r74NO1uoBiu=D6!R?6bRI zpIs!l?MUT!fL@y+_uDfEu6a7{3xuTF!)VQrs%D9NB^Olp>FYynKA70v+1=ll3ZVOD zKIeK@IcxgY%j7My9bAM@>o?EI*Y!M1uN*pS>h!5o&HI!G)!-+`K~j}6bfZ68cVOI= zk-@w(#WQMa`+@~+J#Fb%)G5clJpXNV>MI+|i{Inq_zp*0VTs5A-8IXQ9n)5*^Fh+VIT5ufP^#L7>rxc;r^X=;vNEevTi-H>>1o6;lN4D=yT}-9|dc? z_C_FQzJAnIJ;-N2UQ*$(hJw|CsO3iKT>eDzo5p0-Wa= ze2@nhpNz)dBxM}yVbI`R(C2za!Y)4-M4e7{Gz-o)XG33(OU9Sqg*NmOAMMb)y(;<; z{HraYGHK&Wlr#41EbvEJbH0}W@B5|Cgp$8I=2U4=cKO#22+xD`5p!Ni<2^!y?Ti`- zK3>Wz|A@hdF5gG^O>!u_LiQ{J_XAs57xjoli-fX>zu?7NwDk-_`c1C9G?x6iy&5UkA;*Gwl?V3V z)4=Do1J3Gf-^!EvJGq|pFCNdNG%~qCXsDl*ZLn^&Hg6JqJ^$D?S(k0)+gU65Ow6(V-$mjx@1FwUEulLYZ zJYRhPZB;v8eGo8rzJeudHqNfFH>W0~?`41)rxmi=lI`QX1qe214#ERv=J=I*aXI{p?dYvcC^;`8huIr>ErX z>iDT3I~hi#9=v4_Z%ez{TX)U=6P?-$YWaqb#U(7PtnvM)g8Ipvf`Fbe-GzD5 z4#a0R>T&!0I_+qd6`k39dH&4i_JS_=>D9e*^V-&N~$Mytr4y zu=t#J59$!-n@E+e>h^D;ETsz^JwK6d78af-(DU2zc zcTr~T)Uk3#y94DKLnGd6c}5!zda|A~=dpXyX2Ci)ilkuUa5}OfVSiQs>3QtircBRc z-$U7gmi7*)QFoT&IG}e2`J!+J!+9$`gYg_S2Ir{nqpn_Zjv6|<&}#*iYU?ueQEea2 zfBp>BkUW5Ll_Q>ic<<&L_x3z99OoIn7nBq~dxx#n$ItC+L0Z_Hz7^zS=s#wgkSF>n zc&~EyQz@ss@|`Wheuh6QXN1v@o5HXVt(@NsC?pt192Xee&vt{DsoIAhbisR%zN88yTvyXkVJR4m0Se6Eofw$ghJnb5!Ee{8}&6~)Whhels7bWiFK#&cF2FDKvi;^mwZ8!u;mOhLSy zI-)3E&hj{3{(H2mx>IdO$4h}vi9US~t8Y6#3A(&u+mZT*@$x?iyeM9t&YHIaol=VR z55M!~^-sC+PoSlG??w86WS`^uW8Po+^+(uKs2l4huD<}w`f6CNy6$hNYjx2x$g56C z>q8foduujX0MA#cw~`ghl!j}N{8zW5i%(#fNa2jQguBFY#`e*q~k zJuAmFG?pIMd$~?Mjitx+{!ypiDd3G`6xaJ#oq8HekL&%XPCbpK$Ms509F^+hqOtV2 zUPF_sR&_izmLAtzt4_TqA?rosGNMjBjitx!tu6I5mi`jPiE{Nyl>Srl|CW@_AL5lI z9VY2;Nk>XL3aQ4@Nt-&B{xZ^6KNRoP55;!SMTf(-)DOk>XjZc>+f+Xk+r|H`oNaF> z_iTSBxhD@AOK1Q6o*824>jKU{`jNJUMa1#ty{-?&(#HVKOVvLYS}1d|uVtw5 z@p|99;26=@vZ>4~XSdMT@;ZzWbsN{1+9TXcnBN?{^2|0uz6nG97{kuvMu1Cw9a}W{ zy=Y6MJcE*s+GR~FJICvEjyYjlqb#=bSe~{Y#mcGYQy6II`Apm27I5;o9a8p-ZCYD! z2jtn0iNFc%;~U8+=auUt%CwCh@xyG=L`?6iCJpO{DbinjUOtYMFUPnAe|(6QKM#7c z5>r16b>P-$F^-jQ1wIN^ZB`$f)vEwLIK?>lHmI+{*NDx~34igNNA z*O}hL8pU+XkSbb`GskhqiiAox^L?;hHU~GgInl zT>Jp!DK7^`>A{kpA?aa~9wF(GNHs1_8ZevP*@1LMn)`L+p7gL(91dyfd4zN^t*)H3 z^*loQ_}}$`X9S&lavR6Mt?X#Lm}^J>;&EUM{3sH~MOaM#Cb#AZ^Jg1N-^RP`yeByO z&uwxf(H9@fCtUSRo`;6y*aCdzzX<<$!M8H6_*^&nI>VB86tqEHj!hoFAvsC#sRudc z)DOfv8RhBPh6ceqVNi-J%0_*FbJy#;MmJ2UMISQ;PC>=*@60NphG>85x$b^B>K z*^h13I5RZ^&NCAOv9D3HRnJV6o9vlsWHJlwqiq*2e>?7NynHr!H}UeLU7pzV=a!N= z%$s=mF)knA$1y)E#LG{RyvEB?k7IdD=CFMo}uNzPgrE`Qc4kh4LawYa7@x4NfM?=s(pKG0VG3hsGvy~VKDR$tKM z_4Y!fN>|rvJIYeJpr1JX1c;{lFdy1o5a{Q{ju!Lpjc>cJ*u#HZX*)zcSf_NwK zUQ0XsouDVPklNXNUUU(7DVUw?dM(xh&ZcIcRfg53?l5I)Q+J`PUd)qrw2gVv7G}(| z8+G-n5%bK*ZWWdxm<7G9CyOTbNm zpNT$GK3Mk%xmQ_cei`T%#r0EI5@c0rOmOX#96go8cY%(SyKjIjN1pARi8RnEC1)Ye z%kh9c%EHt(?ZGn)JWrj`1Q|UFpXb3Bg4_q4U2F-@8>1ZG1vUW2wDDdF`s1XUQy_YF z0JthYssrDRvRHS06tb{ZvU~Y#!1Nl16D8gWN7L=|D>ALM1NHb&nPqFP&EYd)8A^4+ z;pi*R`Bw^~&qK4@&N?4y4j*vUQ=EIY zuezoY=K{9*ew0~VLp+v~PtyA!;3;qDNrpGfzlG`iUnI}4P&VinpdNW2=-@?Th=PCS zdX0pxX_n{cpia#L5C*45Qffi&R9r6x_H{xE0fBl$c!_u>moU6qj!p)8h> z^B^N5lg{#o0n}-jfUH=U%8KfWi<^pd#U&^&(iL9@Ke4X30=OzeDhHoLSu6*aimtd4Fue+O#UOT! zA!&>{?qfbDNu9xY)Um!AJle7T6!JQ!#JdQ2>WpiU@+yMqe5=m5w#n;^>yYN~LBq-b z+qXJ{ZQg*gSZA=De3ITxfTz5nCmG%#2NtGspgMyxqB`T#pksB$^~hVDaU=3N-$T_I zH=DXDE1yAGEGrj?&iE`~dKK!7LCH!T%`pi1$j?`>aj65gqaAS${&2so+-n`?Z$UpO zFHN}Tm4l(o&Ohs@4&c4Y<*iL=xzho+Ax~OgMw+$*?Awv&<=VmATbRzh>VPjc73+X6 zp}a^3Z0`C1E7;fzUjeSlgwE?7q#OPA3ZD(8y>KUBdKKybeA%jfVP{)wQ}3d#p1%C4 zHw*V4J3Y#nHnnYtgQIxT!9G&s|5bg!In{B$8~j>*@Kxk>4vF^#uQci{*xU2W^P&0H#-=KFG?&pyZ~GcBm^W`MC@0ociD; zIaerNWivcGhd(=a%hA82__<4OBekm`JqU%z&_cFW-IEmgd;nwXby&&WtL#6Bax41} zA+LR5ogdol_DS)Xux=Bui2t|%V3 zHCnXsJ<{g)((p;I)IY(palpf8#nLi<-{4{Jm=(K0xhvc`{lf~P+Jts%R=hYa=uPF|S* zgOf?tXh{Ct#MIZNtdbYfp?pYKgUOKh`hTrmrTo=QFZ&9D^ey+*uq8B86QPP)?DnAnj zd^@k8ENurpR=&wY3{(D8C;da{{u61AXV6l7?KkNa;r$2Yyc}Jm|8Da9GoYWx54Oi# z_!P=m+oeQ*o&s-2;Jn1LGJoN(lkfZVCCtM|II|0%PHCkMLmuBgncCgm)~R_sb3C<= zS=7HZ838+RWVsK#G=K-=F@oCxkDB8Z_gek{zp;m}sMD|LjKInLo&2m?>u!B53#TN< z?48M{K7+K4YThL5peb>D9x(kizWi8~l4sUOCvb7zDaR_We20PaJ{%87mtG!F~32%~;Z>y_}n2lN83Jgl7jSYW!wHRi^)iJw_x;BH;;#%rv| zK@)bB88eTXar}Xao5PaK;d;PZqvjC0EFCjQx7xptN}O*D_D}B1-0O&E_g?1H9gOQqO*ii0>)9+@$+sDt@aV;{NwP{{>p{e#tdmncB;9Q>ACA$18DOPHT~O zK}RHIplA<9$qGjFlTIMfiAOk$GY!vYNJ6i?OmyISJd`^R(LnY2SlK0^*G zI~VM4Bl2;7=?5iGjPYuJ-FG-3Uz6#DZ(F>mec__?TdU1ZLillN|Be}DX*zYQ%GFSHEA{93SZkvO zigZ!fgHt^VJl>B-f3yzu*mJ3k0_#HboqlhWzs<})>bi*;+;XysjEnuA{S^7;2fuZ; z4e)nDeoNRG!*S2H7<1B;_q@V0RKt@kK-1DY3H9|^4C3owKkD%>#IDv#nxeY++_d}t z2%i-vFFSx1`+xlwzW=;GV9PKT)aA?{fD64nCeM|@!av5DzM+8d;^SsQ9XW(XJ!=`&o=+40<*Sc%u9UEvVHgvY}*U*SH#PS zkhzoaXJH(p1EVpz1mkjrjM3#XM#MXN^DzEAcTpBu{)D-|4EQWpImBmE6aLv}==P-? zquwx-D~(AkL%n^l|1wthF&?~<$~1fc$i?pX3=i_N_>8`RPwi-L>7{<`NruxB8$KCy zdZM~%()lWu6P%=^=(o!+-BIl96GmXoRHUb|0g=;xE0VE{BYdzmDk_aL@^PLlLge+FF*XnbuShuF4iEyFVzVb*JZ zJY<9W(_68Z*yqQ|3x8{FhKwJ_P@eUUT6pbv;arf92?Ktg zRc1-&VEpl{c??osd04Q;wT)we%QlWfs_UJ6QNQQv;}ms*p{@M8b^)`$DVl`^U99b% zDD9qvROeyEK$eG-0W0F6MR>6Ma!!hH=L@d3I}dsGw-u?*2YJocEhP)2E@2#xFjrw5 zXNqs^5QppSN8ZD>=E8CQuvpe9|7_EK8;~+#zcWD`%8~mmtpCT}dB9m!Tz~v-p-2Zo zihxTIk=~n>r5EW{0ex(Fz`{1R0E>bc6AQ*@jJ?H{Xw+yl#+F25PmH~5G`3h`G?u7| z{r~;lJM-?myKfs2C7;j#eLlPQPCIkX@0^)AGk5OX;Pmde_B$wEvIg;C3B^~!V|l?g z^C^+gmyMo(p=a&Opy7V!Yo)@;-}#DmBohN4Hp5#@-srcyVqy8jx4h!S`F!fpeBd*B z>-@5~UFQ3r>j}Hx@=`z8o^M|j5O05`AE=YPq}H{ILhmksu;OOF~Wl^%?l>0Y^${xp2*&mE5| zOzfYAY#WR5F*F#{kzuUyzjd zXNAb7ONcG~F1{BTxR>F#b@fd%*WZy|{Zp70`Y*P=i^;3 z%+&jHu2v_zb|&+1C26U6_=VxYE8AIqU~OOnlN#FKiNd+$pv&|N2z>2$@ky-eiuN)_5ChY*p3CZfB7F7 z2DC5qa`=z>qgRA7CH&D}5*PJHul37@{^)gtU4OJJE$~NwMZEph;E(>V^w1GEdG8xD z)#mga&kd#xs;9lw+}pOEfv>8y7uSdWH9ArsBA?m%cE3^F&LCd-ZT!tn{9kF4HjjK@ zo98ws&kH7x_4!MorFt$U-uKf9t4H}gWh{@%lboLJ-QlM<_4^c^xHSkz(>>RWKFR;) zZuES-f%vrgx%G=zOJDx1>c7XSUvV~Fyr{nWNEf~ZS?;?kY2H5#ec`9GyDc7ipTge1 zWA1JL8m^0`d&5c7&!&azu<70ulP21FE^qOD7+x&xR{I6_w!EH4wSg!3%l*K}r5&#S zCVw|pd&x!5(s189uzTXeIaAP&izmHPVENGAQkRCiAKC7aRT=Fqwq>;c%q`>YU$pz^ zR7QIdmCxG82gqgD_ca!U&jQlD7r{n9oA+h%zQ~`IEu8zLdoP*1HtjdGmFN7m-w+?W zj<4?n>-)HBUs}(v^y{!^iZ}9JHTEHXG`Bc`KX=ZeIy7EsTzkc=)mtCO)}Khj2dOzN z97p{zInDFlfNloYH@Tk2I-%BxHC8gB&W-cUQyb>l{lXl+!Jst-8^`ne#XP(6&z@DB zzOByrV)LqSy0vbhxKb!_X4uq{LO#dk#C70FT6r;#?{8ddXYF`O^#P zoR9Cm5Boy@PMrOj?_?!r9(EWF=N@~Lo9^vJQ>9>@t?%C3_N0E_ZBOo;JL=OW(j0$R zZO!+|cS48z_s~<&?lL;qXJfO?{9ezBY`uCmWbgGX$mO9qebF-C-qXDmT=lc|9zHKf z^ER0@)my^7t=B#WJDqynb%v#p@M1q4t^;XZNqv^C>c2lnmc$r9U#j*iyB04RkHS7A z!~4?Mr_HbNLisf=D8IsCKa$~nZSuSP&2jiqf2BWn%uQ!eNwR9KqTkN2zse+DI(73l zB2Hn&YfNt=d?-7@=*QwI{a5g(`O{`UZ-{kb4nx}Q5j`Z*umziD`%lTOzC`s0eM-95 z!tmb0=-tgLY?N15;ojQhRsU&iq^;t1DqltitKS($pVrQLo3Kq^9tk5tl0D3ggddND zA0TY|ay^IApY6w|K`g|(k=MoWta$NR%X!ReOUkz7l;tNK1MMwK6>AfTF(pwt+ z2qoheS3ixXmT&O{Jf)jm{&cSqP4vNqm?9f!dr@xwL4z)Cq(WN;&LUV*eQ+}%c zYN9#H&{UUc{n;_Zx%9_I=#MjHl&=|hSxmHVRev?rHNlj7g*>*dNyNEzWfOKWpKQt~ zpXze^sDAVz!)kusoST!+$?D}5-g0|q>_qEc)1hbAy=HLl@-WlXsXXG-_U8)E=1*%< zv$*P)Ds2h!>1Wqy=8#u@=%HMzBck&UjaSVtshCm1ro6z94>s}#o5h@c zDDD9P{-)mOV!9vcpAX5ROO&)8PPl{{xCJd+3}}fvi_oCGx@oq( zZZPfj5A21~Sg$r$2pvZ(_DwcPDU$ngm(?+znO(tFK zZHyP#i%YsDOr;x(X*u^UrWJ$}`g8hBmD$XnFs^0vxr+O!p?_0tNbl8bgZ_>^Re@O( z(Av`&Z)3d5*wxY08MT$|zRcBaMSV*XY-NW@m#rLTY-LZey(jw?_1)6FmloKXwW*Et zug97-rZV3@4f^>K{~r7C$AjSg7OgjlP7jlI9P~s-^RV!_c$zodp)<_nJ(;WPyYzPE zKhbaT$?sP^vVWaB@%q87h|tIrSZM`5)a<^3metDMpX$nPfY6!5axzD%2b#q9C?n`z%RP5s@S zChZ=RCYrBuAIKEE7jYip^G&{soP2kgd@6H+xwo|4Hg4O$@~M5hwB7#L_V>!CzRlvH zvBND>i0noDX-;3tRX>#}7A8AG*>3@xCFophj@b!&2-ZVhB0PaV%deaFGV0T>S{fUX zZCYp>Y2HKNZu80>4&<*nJ!kZr8Pe;?ep>Z27o~sy8y!wL$+Qt3U6~Xv;!iS#Z6#de z(X))uPSU+=kj45mN=u~s60)Z2r&~J@_NiG}MpDmMQ&)&z(>B6Qc6N-@E`_J+9c9vf zEuF#tQ(z+=xQe+c)gU;c>ZkQzJPK46ejk2`M)^_$_{K|Rl>+}|3E+p!r1#rZSJN{aOOYjVYG zUccD-jf_+5hVZm4HU<6v(&6hpWOBB3)qJ1tPU-9WA)X4~#b0x5UVg8B+whaL_8s`c zrHg}aX=iwMlb(vlZwv#*QsK{=De3nZUc^tP84LGl-QNQK)`k<9)3z<(zo~LeL0mCe8{h&%sgb6&8Nr~ zmKAIc_J*6Z>}59ESdp35V@ts}{Sft7x!n36HuYCe3;jv|y?6BcAbBxZf?VIulZkUvp3s9D*Sruak}YgO($hsota`gSehDZ|gxT!pvvVDZ+xQFNar&OPTq zb*kOel%{?;!4JGzzxY1doZc~i40?iGAB79n4>G*RiQAEg^ye+!lf=3HrTpk;oH%>_ z-E&Ty&biXwhv%KRffIvsvy^Xb0k5=~JPMb`+4*3;6(&71BE?Fl1gRVHk|2@#gtJKHq{^HJfVKHQFDvUB~Zj~?Pv;<+W^gf5)Cn#0?9yv_S6 zd9D40eu_K)3C@1C&mH7Hy5qs?PI-5Xw7!9*ok*h(wP~WGu~MyAW2DU+`avNd)zYA2 z=V()E8ISZTa;%`Jv~c`TfBZ;@L*Q=$`XW2B%gY+qWUAiAb zSNi|RjQ5s~!vE&a^_QxpfvfeUM5B_nD0|cW84f+IW4X_`p29EDPxR!IglU=HUrd_y zd+dC`K6h6*%%9uL*)zP$SWx-jKw{9hAZi<@QBmA{A=Vii^& z=OKTN{|azGFP(6FQ+QwKf0wqocM4cAyoKUYUi|cg9`Om06?ZauGN4;rQW1-n z=v~_8-rvxP?)40-1AA~YjUIpitMSZce&u&n*eN_N@G_J+~v>wdXA6*VdkOZ|%7U_o?jJ z#3w|Stp+rb?OFL;dwvVu$)4vMd)^m5>@S5qC-#Q>r3)S8F4sgk2j^IBFwmV+p{% z0UMc2{jQCi##ratNaIMKw;yu2Hqwc(Ya`0<+DK>8T^s2_ebz>FZ*AmX%+piZNM?#Y z?*sBi`@Bxja&6=z@RyCq2T`Bb#o!Nosro#@T+K43nF+(hlzxogZ^q_xR=f1UgN?X$ z896~y`a|A7YD7!k$pGN~!tzd8-6qP-!LQa?E#A(r^W()OWvVGZj)PrPP^?1={4{m~ z`$;*uIx5YNOS5sMWpO_eJDI|nE>QB%bmTO4fNPN81;PEIQ*kL5~Weec-j zCoaA(EtPaYcL`FHpK=i%Rk<3rmvo1?MlTtCkvw8Q*@bp;iib*4OFc<2x-hvKvcJ;+x* zKEAcIq*%sn3JS7seX&Qi(BEJ*w<}b_1FVJ_~)JA#Kn%)~3?9YrPext6bjq2NB z+Jn>0FBj^zA^NMYuA+Jo4wirQQBB~#PYwLn)kifm?{;)Ga>%DB1&G+vD&L1}#(V~B z!~2}AiF=NF@!PP*Z{>@ZmKPM3gn0v-h?kYIEMW7PPDdnt-&W<^wqx_T?Z(E{(q@wE zIkdIVK5DWtH+~N50IeA_`c}u1Pjke}I61wrpa_!=j$`n69+ez#4_&~nQsL^)Z49n0 z99;c-gRAacTorb4RXB>P;-a`JE{dz-qPQwd@L3Wx=+43Y#6` z*la6gvNr4A8*Fv&Vym!=t-?`k6&J-;aZzj)7sXa_wP0Ikzx?0WaU1M-K%IE!a-_V! zb{etc*!;xUp8{*TpG5!A1{p2Z{=LCk_b%27yI3n6#aeMutQ8lb5-9@jp`Fo8{o!4!JD8{=LCh_b$E)yZ9;`#aD4rd=(ePS8-8% z758o7JETs06H~jI5T0I}{US=je%lkU`1v~Me$W!6ko+f@m1WO z#@CK-!|KG>%$TcN?u^=SWh$1ybwA{>xcc`7SKYg~D(vE_a1>X?MR8SJ6j#MXaaG)& z#?|%X;;V2JU&Tf7Ra_Kb#YOQ| z+@8kQ+U=-1@x|LsHJr_=y}#93kHxhM@>pE`dxNX)U0fA*aaA~qtKy=#DlUqv;-a`J zZcpQC?RHF^xF+nj27qT9fK&UuJPt|V+ZDMizW%+zSNATy3cL6!9K~00QG68_#aD4r zd=nz@L(ruF}8q2XHU zf3p^9*XyJw%q)Fsb^ZJ6jiFl1Q-v@hp{M0WPg8sv!Sljwr#GsR7Z-7>PT__ zOFEK&rgk*DP94cD%c@yX3ruU``A;yuMc}upJtOB-VmgTLlN~*k$99E`9MkevK*zmQ(3-(wqAk0&u zWHFFm`>%VFlBqA5Pc^4A=L^?z|4fsGlxym3Ss&*)qRrdh%c)gr;GJ%8QmyoZM zR~k`<_kr}M=eH3C1t&O-@f|(0W0rR zcB~b$D_}wH241|MTaxE*zfBly%H%*E+3exeE1TVHWRu=ZFH=$J=qFQOlqzR8z0r;G zHTClH7X-1szGM$AYOn|CvP}wIN;c_o73ucJnKjlrcU!i#DKYD92`3u)h4ICP(%S2n4;20OIuG81y}ub9j^tk0wBVhMeg@N+FI$dkTCg@zbJ!a7{9OE| zfx{XHhn8Ob_-F{fsrw5K4NdBtk^mVtTou%s0VJ>sy|bcc#*&|B>4|f9hw4F*SGs)0 z(i}$O;4FOYCFk3c{$5M9^*rR}8-jctDCpBNz#`wl;sCIym4$lpxI6NXtc&)@>hiNi zsX_9uOCkSyNB$ml$lnkir62wAsuwnzs&C=Ej=57~vl(aX9TNKb-3U)A+ncgG{IVye z6LfwR>opGhZ~MpbYV>JD|4Y^3*I6*NfrWXTxxgNkk}?kTUsiKkc4~646WCjk;b)DH zcPd$8G3u%)D2m7Owf%ota#(U{Y%76|+VFkMsbr5@WA}7QWgfe5*q@|0tq*5<;+%J= zN^{o5O~0=Ara^pRAwtFSO8s$R12kJGem$p^VECd@NL+8l73BM8rHlWXr4Q;YCeJLN zzCp~?D;}@(;|mKmns%kQYrLY|SYBmWj0uwMuPbP8zano*@n&rfDvTvW3&vWd-)Pbq zwZml7-z)tVlU`K9H;gPYCjDRS`IdE%?#rqCfAI1u(Dl$Tb5NJ|&)#FwEPvXs`$wbTukH(?8dk=a%dgn&d8ww zUhcR%oVx6J_w^Zfk3qiZxVzJl`HqAE zU%UME=5d&5=dwXo6Y??6pr0g!{U(K*dYk>Q=6@O3;PDPWobi}6|NAfe+);wpbO6cy zMUwkBbQCE2W54xnY3d2z_9UOT`uVoI968#8Yklf&2#>pu#hCh4GbXe*i$zlhi&Gka z#g7~;_Nf;Z4dZb)+S^Ef;!}&0J#ttme<^m`lfMxSY;QkC?r48=x`V~|+S^;bdE5>8 zhmEMCzZo{7y8QB?8`9sNnL_@v9Qm_qm%rXT?tWYFQK-9VI#}4YfPazb7tZx%s$aiw zo+E#wdbNdy@whv-P*+T68aw}4E8 z@VUvsXPl|?W~WZhOi%W1=pd3K0v+v!{zulO|B)&5KdgcB-R8(A9y7r7w~l<{YS(|g zdE5>8hxwC|-XQ(noN8A26{=$DYQGE@pKJ&Mr%c;j$q1KT!R;X{Z&rk06WvtyVuw%s^ z9XvXKM}6w9-{fzY&tom)X41mY zt>+|ydX}Vq`9bn$dIqyd4#|*C-|>)xRf_PH?$ z?x>ITn1e;P+S^gRdDNPZ{O-)1Y2MeZ=a;De3&L#(&&#RG4c_6--07u#-TH7AH9us% zIebt133y6!q{odT)BKX4yy)Q3r*=H*&ExLKUst;vo}yiH zbVGyWe>sKxuQ>7_REPZa<#9LUA5oWoGa`k5GpK>`|1E|5uRHROs$KpD@o2{r29SD< zCvU<>P2$%6M6wf`T zH_+DJ1&`<$_)iC;d9~YGy?Ly~UrO3+SKZebUeD(f!>c`?=nWRucl^MY$@oEuryQyG z-hAlDe<1SL?K?J%$6Bzc-cXWfPyXpeuu&Are*@q)_=CfGXzC!D>_30}bA$whYMPmmatxMLU?`ja=sn663 z_JQk!R-FdyMGpXGE_5XRfS39#t{ii2u(m5zJ6D*q5Z&}T&lcVX`89{v*|YZC-3)9+ z;pU|2oa1H&Bb%?^PL&DHCT>ZZ&KiuCY2}n@%DvVHY?(GSlxb_q*fWb;5Ek9m=GxAb zQ=JL^m^oVh#78vE@?p;#Zf|IHFtn2RrY`sVWASZd_3^QLqB;|AvFgOVcHal+8uK38MI^ zIs7)Cr!N6^ev|Y{It#SylL^mY37_~z026f8`rjQ5&Tfw_P5sT$eglHuKnLDu*+5}MF~R6( zi+ol~a|-Nn;z5xt{~drNDigCNa^8KG|1y!!LN;=^3}i2yyj-Qt3C4tm4$EE^)S5j^ zxf35A&!$UJo!N_06bW8<3I6-%;KO2ews{SvdmXsM_y+7=fQ{JLJMqB=_6B@l<2%9U zGums7?dscZOy0NJg1lPB|7smTa?{sw$bNfG)x=H94EFZ6#lhCNoLjT6QLV02olT;~ zntKRuSjswro-gQjJlp*!GF$uRkFQz(iQXw_AN680=nfMl>)o$;?b4bs0yXvbmXv^5 z@Rs_w-krP4J~an$-m1Gsnn!hwY4FDj4qmE_kbJeWWE zm4mqIXZ^y130q&%%{SEKtDffiTaDZ48|6dDt9pi+>u}NZ$D!!^AK#f48Ez_h_re_D zzC0=T?J5yJsv4$XXMI?!Kj~HZMuTNSFKFKC&!>@@oM!#f=gqtS6M08M-=dRG+6OwZ z<$QOyLc8mOxPyq}%WerDRr&f77og*3^vlXdl+VJaeEo<^G;4ECzT*26pVUOCOTO<2 z;$3IR{Q|sozyjCG^sL{AH^wKr;b|mwCutm>^c+-jW%?&v>zvVyv{8h2d4_HH~}KVZWs?U19!gpBK_d_ht~UpTADPI5L&6#*vw+@)K|S$oVzTaS~mU_2Ksx zv+$>d3GTA@4kIz1snxX|a}EXngr3l>)wLaS+%!ApOi2&Uy4F}_$DEqRh*aZAs&Pl< zW0MOj^zBjg8(QudCi@QBU64mM?uX5qh00A##Ibtkk4Nd=EXCOdYK`UFp5Ndd zYu#lwyfE&3=ca0(rwT*%L(Z#OuPxxgSSjpzzi3{S6ky`!kdOBSCl}K1+OpDFTg5Tp z+BKuO#6`!pdBjD>HmzN>V{DsGn*H%kUPV4#>t2A4KNzq=?A zALI%8`Sdo55AM_2^y1#;Ulzvueg1NlhraT-eZInn@uxn21y}uSUmm7a@5>J-uln+p zT&v|L-uC5o9l%M-J#~$3+QXS&uy!qH;S}eYQBP$TQb%bCZ|d_A4}}*K_Sd6hHZ~Xwg)<{w zP~426YG*;-Fhw+?t|~cxp)@pSB3Yv&)MM3WIQ5>4)-Zb^qB)b8oG}bK`4+Z&jM`LOz1SOX~W* zg`d8-VBLE2Ex2{cKd%Zr0($HHaB!}J@&{qQqT$oeNZUYqbR6EOGO^@mHX4Vs7>5f< zv%jQq_`B6WVjPBz@1)0ES@ZlOXf8nmr^ZXyuLNeofmoAF^^~03k+VdY~IWtXbOnVXX1A-6n*e8vN zQP8rwmtdXvED-aG^cwe5{V(9Xcbfx)`QB~{+TUWj!4JCE-xiX)kiDq|Iu^0lGMUOQ zl9}C0Its@+%(IG~%r|!J^q(pC>k*ZNwdSCBcTGy+E&ORsYBN{;^c+I*c73agd$aE4 z)7nPZu0y%yk8;Xu?r+O)H|6bje>KO}pPpyz;IBHZOz#-t^>d$nq|Te}9c%J(#%nvR zS#2e(>(S=A(_FvD)nZ`RKE6*}LIyatGKi;Wn#ISik^R8XJ)Ubd8K7nJTN#SUXV>OR z+R|*hOAp@k4Vxg{xgBlzgf9K9zX=temHr zvL~j@AFdq=TiJ@WFUc!xf5KmLo=MqtO4XSxf0$pN#VQNa#GxJnwR@YkRs!7*BB~3s3{cGh@ ze*IO)F~hs0hWx4RF2lRb*ZXftDkd~4eV$3Wm%e6 z60bk;t9-)3*A=CI!M%RAoZHV_ZOT}E1!dB_YfKqSUp(utIv(lXwI;8%`PBK+ykD7o zwhy_Auz3BYxn5_k*K<`pq7&*gxGGZ>PmChzWXS=Jb8~$eV(tTS_fC(65TVTK7~2Cvk@!ct8XGc+;gOU zEAhD8*V2_c;20IhedaKrh)yGHID{Pv^hJa4B9DZ4ipRt8( z0WZk)*Z9?Lf^dN!RvYufd3j#z4w>F@3hN=M^_RbcXW4pYZ~}Zp)|fqw!LiBZ`aDIf zY_sR@2m29m1;ynY*s5^4_hZ84TY|HE^-TP9!ohm~cPJ2g6mMt2OKyA}3+Z7vUYrl^ z>E5}dl?91@UO%kFV9nh-gY-O;F1h@$lYX|+4FRPGVPy#3>o|{e|B<_)r?9?l{emrQ#|}ImFkAyOp^3 zrb;@cGLDvt`}uxP9M4rswJ$_ExLx7tn}Q5JPU+qqew@#spXV-x=jOseKF?Cpy}SKz z5hsvKW|MzzSxE)QXb0GsJd49TewoE3CBgF3+JJcGHPH2ZU(!F-3U!md08^T@ED`BvU0fVC*|xf#;3PPvp+LFeQVq?5K-5j7 z6wC3?(M>#8jd7agfGzq8eXL>tyLRk-mhb=b`l(4X;Xc6|s4+`DraoinFn_r}5lNNV z%WAGJ;6Juv*1{>V6_fc}mMCe+@xrMQ(%=8p=56$7$FqNM?~Z5h5LUmcJhop|pQ-Ra z`P2CNE?50*9~!2GeW>5(vIg}YdG+4V`&_H#hlZUC+dA#|_Al}$=)!GMotepLwr{?{ zybCkgc^76Hhi}=rTH;GH_+sjBH&K7!4~KKnn&y{5e0fDqVs}Q}}bz)aE`j_}Dcg*9r%3QzZYI(73G3`LUzhikpif5=>Kjo7wmS^##d>Q1Ap4Fgs zQB#`Y6ZF&4ysduw4P;BMJLKQ`bd9M?{5Rn$d6V-e)3WvW{6*?f`wsaF@wW9eH}y0# z^(4!aT+fgiXu0|bFbeB&(|nyn!}g7-`gDIe$ zLw?_``eVzA^VY}nHd-HB>m})`b8+0n2Wudiic91T;u;ZW`!9ROhVt1sov|T*t*H~& zzkl_(fdd12`?&cg1aYz@ORs;hKH$0e29i&8v~cnbH2GROaq=Z4TPr7Sf~mue>yaXE zyrJjjo0uYQe2TIYOuvoC4(*TM^YyKmkEwQQ1-YBuiKq~4A}6A}1k6iKY%Dbn%TPOrr;om{A+ z5IKOw_w@qTw7zfaYrsn`U;lUZ_w$1DaH8`q@ycm3>H9f2rx~1+>-zS1)i|}?8K)L= z-;cje@ThfyBmDkR<5_U#(h|bzR~JU|bulv8F`+YIjXnEwwPkluM)irl9T$~H;qI!B zvAmn1WBdFtE$s7c9S4{?vbfr@UwrA=NVW1j-RkMkw*33`lGYbrSU*>`AT1m-Y`wir zy$5oYJks;7oyj~LL|Q5y`WhZwewR`{Ro;FkudVlB!osURSBt6Ss9rYB8)(WZO?ZSl z4RL(iZ#ya9BTh8823g{`ab@vb7P}i%NZYr9V)bcZZcji#HRn1H2hzI34K=?r{Y}Uk z?8)XOh(Ppj|K<6tiRQg)e|~K7+$&ze=FP4I#Pv}z15dX99fUz- z+Q(|{sy1QY08&_emOJlMocg)Iud+D<`f7{zd8B<~Nck(_pgzxA<&$)U$DI89vUqv9 z|D2|W!gefbSljS@mtK_5j~fbn!&G(j32FMzX%shrIG=ZYOxE}*gZ#3%uq9Rg`$K~X zyU)!e+YsU!&<1_qcxY0Yy~55so!PUW*Die+yxE@_Uw0G!B*&xP-Ay|){;SU|so)dt z=t6yMn%60P#5cv;UfkDO`R6$DtN)e!qxOva|KIZt2edwnn5?hWAOXD%DT@1k;OkG~UTIUgYK}IUtA2J)FoCfA{t4u9^G!GT?0jMxVa+FI za22nr!{uX^i5Cr9xAH4IhcwOCW^>ig&OySoaGqi7JCwXCKbNbW|As8)K!Sxedf8%IG=Xlqw3!Efun6&KAkYJo~<9IOwjTeI zIN1l@o5pP4&t3qJQ9pZe$alieK8(1ipMAJrHuSSs5_bJ;z0cbo-*gr6_Ltf>-J4)Z z_J8*ZFWh9)ayR)N#-NX3$X~!C=YoI$AW(5jB-EC+50WLQ=L)14&JPdID1SIMxy5cnsaX; zpM6d-!OXcg5*IzEJYs=%m)JMYEyQOSPcHrIdY{_Z|XiWx{B}j z###Nc{Of?qVr{XG=V!6Wgoj?W&y;H|nrdxwihFqZY~u!|T;fWZGjI(*u=1bk$p5&R zBX8N0^4D{CF|Z_I89Y}kWLe8;5dr2|{i;26^yi5UQj~ve{BAB|CS%P~jo8dym=qo8 zDtSz^OUOwXtyV{5SM%%}s^|xHdyTzT!%Vhm9xxVH}okhRrrT*?oYCv`YYQBTOY^Gcbv)R`xfl2`5s}>`hKeX#M|*+^=m(H;1dPBh)30NB4rbG zAcf_{uRk+6&F=enIK`RJ;+e$`|Gg27=|507)LMfSuDu4wQ+~(p5SyP$gbX5qZ5wFPB*U&O}wXJi)U5EYz} zseJw!ndbc-&rg86d)8A+eRlFTT&m`U*L(d{?$3wUL*-m-& zjkf%`ro25fpps5aee`)L>12548#;D<(&n#TXS#Qx$y+@woF`ihQrDN}U0frLaLgWO z-rYKbyc*-rG1m*s^&)fqskvTau9tFk<@? zt3SKeafRXGO0L!G4E3EV&Av;OD(wYi(9hO$wW;SCu2#oC;=V?`f#9{I>u0f1e%XZT zJB9m%%$!B?E0fpOcO7Br;CilBx56S7ufL9zz0s7tDrNpq->GO>e@i-2o3QOja*E$u zh>NZVNv=d1KBDyjtIHXtSvhZ`tmOQy>N0C*qUVtt{9?}^t>X{T{tQ=O-pG{4O| z{Mb70AYFC-fveSxy+m6 ziQQZ5l_on$lylN75BD1${%Ckmn+x+N^B})2tS3yfv>q_D{%mL^*B$1s&U2V%X+30U zJ#1(R=dkXuFSEEy*HL{3dQ0~nBTYZmo7`SPTd?&$Zt8u))N6GT#n#p!}b-bOSEkMWSwMqe{t%x{G@7Y$!Y1H%WFoai*?9r zV{?{<=3I6^mUP05AaRz4(%ffLvfJQ6a%zJviqdAal#d=_xvnWnB zmh1ura;dL~dUCdm`k0_hwH&M=H}NhbeY3y5&=Bt_*w_9u%4+$CCr@npiuq?8YYzJh z;v;h_PyKlE`4j2hFNrIyEMLzS>Aa0*{aRxa=O`5BaM-pVjqIX%1M%)z6~7^D-_O*% z_a?$Sc0&-ARUgQPxp>*;;2WH`63)vh&B-fZT5jt99dYjY6AEjJsq(jTADfr6F*wFG z*duo*aqgKEe%Lv4LSu$|CWRk%($&AaXHo=VWeCoCki6yVc|~JmtfC~gwm|b=;dGDc zjr%84`0MhO;#3F>*0uzSXZkn;vXU*pXY)O;IL_B7$d?_Y`*y)QDS=^_a;iT(HzM7;&XnO0 z6&gTL-wTRcwzi>V*8ZW_ z94yQ;n+WNozRh33jbx~?ZuyYsLf`t38v8Vkyw0C{mVq5h-xyl^$AytyZEavUz+zH zQ&wrhK(YtA3$goNeV&sfS#RPINK&lx#4fU;?moGRB$;P&xn^znRiEEryw|_7t#7cq`_2CjkM3TZcNI?TwMm9Y{rh{QNB6mW7?w%wbNM%M zK5x!`@=yJ;;Xaqo2)kpM@c5j##D4N*s69Q)=)gXhFUVtm)t>PtvrGq>kfz2y!akdl zZQ19^vMD{A`l{Y_ee*VD`MQ~RNiAPNpV^5`{1ySN|M<^K6M`mQ=1j0;-{N#EoLAvo zZ0zfD8cXZdo-D~k9X=2L?bE~r8y5dqdC<6}=MQ>^SuHtUlZqn?z3&)q zQSd{KhNmSdcv?6f@2F3InN0f|QLbe{_1F2_cMsMtY^y&L}L;bXlNTEywc?}mgeLZ@*a-t zN^@oGrj)PK`0w|&K-W#Z;+!JV#UtZrdP_(D{k=L^s3(tWYmmP@7Mq$=0q}4rEGCzg zE={nis5%zR^=@Zu4cO*yvqmN7rx{J;?wx|c3r*$@$S0*euS;B zqcZLJlb_g;tA5s}`Z4{1>-U9u)4k3nZ*@AMUu4gs=tN%mWL?a4f3D(Jd|97WYe%Br zjlbyHs(7d=O+2Pb+nf?ZzZ)_0oWxEmwe;v-h@?cb8N$qTrYDW*(}Ql!bZ&tjdLV;~ zcTd9AaAMT#MZA7WOO`*>MfGwazEAd9e_tIIFzt#s$?&jVGSV<7bkyFIhOjnkP0E$M}Y6<%1( z(o&ps+Mc+|VxNO)S`tva?4VN^zeHcLr0%pn(AZ&^SGccRw?9YDNIRIg=v-LsthLuC zy`Rs6`0%{0Ufu0XJU81J*zf>zzoTY*v(L=+gfYpk>SJ_H;q2NhZ%)nihkjX7?UAq9 z8bg-7#I^=A}{_iuKoLyfM&7+H2D=A`RYalSLn3XK(`ujEYcr8F`%AIcrePY0>{O|(ecn)W`?O|cm+PzVOK1>R_1jfb3$KZ>?Do2O z4oqT?aGp#$x_hEN{J&Z=|IvpT$(Vm*^6dUDnL6b&TKebi%9spqviuDmss8)jF!hyJ z{l3QET|2|EWg1}{?~X^xH-kToN7K3Lr?E}(c5Iu)eK2kW@2t!wY{x0L{2Zse`Y2m| zt|@Pyamq(gUpbGz>U1)^`NZpIeQcY*dfs$zp~+i4EnGjf<7?{r(!3=#(g?>=yXR#l zc{TPPYOV{+brIJdIi7b{f6x2NYW68?_q@j^vqn7J^A@%Dyfe!^f1UKG(R_opspp+l z$oDHcd0zGg_7imWydkBmH;nYWr;0r9Vk%fa!1F#E!}~L92+#JsCs>fkpT~H#ujgH} zoHH+uV$TqK+&`1^Vs`L6mwIO|^SnP$PIHyP8$Is^@(wIv4FkG!TcHmo4RcrWo$D^1 zcP@GFXzY0p_w&3%I2-4C$FOEg*|$e|-Z8U~f%4_h{`n+iTEaO$@KHLHwee>%hSjt7@_!C@cd zF3+XRLdGd%EMej}lKLK?-WlNYR10uk<#}IkVNDr1-X**P?4Fo{AHI+0y}{bdXzE|I z7F#(IJfZtN@Vxg3&s&w}d1pi8r7Gxw?WyBD@6`g%`YS_!)OAiz&$|iPFNNO^58yi~ z130f4jMu~Wr^FX5rG9X}eY)rE2T%8-i?a{&ybirR?*g8Q&u#->V6nU<{4+)`2IJn) z)HBG=$lW~){ef4HCZ2aAv=2=~S>w^cX6SbEyo&~61LP?pZU^!{$o+fNv*BRRI}-c( z2wC+m)A!Ng1o*fBeV<8vPb@}eaJzXwa3`)U^8OLp`-3xVcyn`@%Y)kVL8M%hYud$B#f1$DH6hBpdbZ1%i`$k}#(&%1R2x*F?w3&89b;JIlP zHU^G6!LbW#oq3zE#|b=Z!B(&4?;mrqr5Jb?d*0pH!vo-aSRptL!&cDI3T)_}71&QX zXO*u9d+h5Nc=Q&LpK>o#_pgxkZm>8HdLNVL2MCly-GA!Cb9wZ8@ixyp93D$`_Sl`?RiTZd)}|Hi?2FRKlN-O&+H;h0=x!}W<4F*4K*Y}4{FusR6TB6_H@E4=Zb-A43P1+66 zZ${p`xxbBTt8~x10=^%?zMeY>y&?0Cu{@84mvh14bolxk`QF`v92;q4=;HLbd;<)- zYnBBT@ZJ>}?xam0I~X~zhi>FOAKUyJ^}YfR7ac}>?gr1x&?nblHKPAR##^bcGjgqm z?^Dr9UzE6}9hjld70BIZJNAVQ^*WR`giZV;&+{JZgPy=qI{y7aY>W6Yvpw$&%3lwi z-kI=4oeTP6xA5O*EA0&4R-o%g)?z0hfn?>Ce$#xDPkO>Bk#BGL~+mWiZ&1&vRU z`vl~^=%}DAEucNkLC=lI(-i!L?Z+|nIF0h?^jUcM&mpuQ_$`O0UeG)Te4aq|bt~b0 zANuGeU=A*u$AkX_`cioL<1Etn>t4=&A=0`Ggm19_EBcv@j$efSNnAgjJU;;aC*f@uy8a<~D&cuO zm~WiodCx4Ty>vvrzVHH{KZVXt=)a2`m!bEk!TwV8)ta_<5jty%P7WvSp&qmoF!>p{ z-AI}9;bY=l`VHtdp+2>rJ9>dT?V>Ndk8g+G;I}FR-HrrfbTE*({m{)xU_EoP=S>6G zf#f+Jc?MDLcj&jwM3<5FIW;7ww^)-WvNt zrkgj>KcI(oOR;D2U6@Th+i0uE@HKcm$NkmNUkYzeBWpM8acUEMjnUW-^sc7NAL0N0 zIrQzs=ka&)R@wu6ZGfNA$i4$!KktT&*w*vNQMD2q;(86TzEAnzpqDE6o3%f<(SEwZ z=3^D%mY8}A1$RHIFi1ljQ$Yazc3Jg0{;3E-yM5= z=oqkqW=G_?oT_&0>v;!*{eO*?2_J@P>88C{+S-oJ&Hdr4FK9}YH8Qg%rz z&%3rUb_Cv=(ZN%zu@~z6E3|&M06l{7576JVS=b%vi;?9nvQW?2b7>REk~0&#rLMP;;{ z0h|5E3x>Zfz@B5&1HUJO-P|I^(M;OtV)OwoH-Tw6`Z=BWH;I1+-rj9aTco~6spHK> zjHzHhdM$Q43{2qnbnt4Cg$&et1m!P6)+@1(<_FL=CSqUk^+Rxe0DUe;$Le3bL+N9{ z;$`@l3*A$we*pFUyAORsTgC+97j{4=$onSvZ6`ddDK>;&4~|nGSe-wPv3nGFpr7vO z;Eq+uP2JCLz_)_u_29i4dw7rgVd&`rF!?oge+Ew)*IuS3Nf}p{v2S<8046 z4cy+D2hY9WCj*;;kEI>y`?_GaIn;#>yn-ATQ~zs}|9S~}JOUk2e-=25Z^oDoABQZX ze;{qZAmoMKfi3AX;AbB9FGKr%bkTnbY0&#MI{(d)_}cmK%ijuQxEGywrp(>c{pbGh z&<~xHb}dD|2L@+Qb{=(=QFa!(SORXtJAoTIdTBbcL2m_mxD#x&*XyjF*gWB(&|5>9 zOmw>K+9yTd>m} zD`?x$+6>Q`LjtUF%dk;oT20=}Y})r^<`HYKHTWw)o?Fr5He|aH-ulKE3$|iE*yuhF#l-(ab+m1zNK{S*+3>e)F)|^;_B{B2x1rQqNZh#j$jEg#w1&(I+Sd<|d)P|+X>k7}js6BX z$AIxF^rF7~IPfTer$N}ulS|R@bowuF>qpzalDrwnb0)a8=KgKU|Eo2&z5^bidk*%K z1Lh|o>(v{WXJEt9m&U(CO5v*!^IdpZk1S(m;OlHb*Mk`cx+22}^w)}h7X6$>xmDCX z0DgXj3@@USzb(h!vE%uJD36@KfYwLI@Gdxh4IdwKe?Bty2Hy=uj7!wB8J@?rMUFDY zLfXLw=yj)!-O2qw`TOGl{G(0GqrvMM^8ey+y3j? z_89vRPs-p^YzHXKHKDnOrL z@MCEIxI2D6^fq*0%s_@assAG4cY*Qh#q{I+eGFzRz*_V4so2ZY3Z`@Ms zg}?pD{{gZtM#jd_`UD+(zKuENJZu-)uY~5s;5ZbV*Ao99uo=>vc{SLdJD0XYo9=)d zH|5gzfahf+;14-U4}fpN9l-=L-g4v~2yW}#dG znNPomJ}$t1x@@3LlRgRz4u{uWeaM3z{#**q*g+9G{&AfCrVHa&KkRNbvcs$PJ#A}( zZlU#)LulW`e^iNW5gxw`J8eok2bVGMIvSbg>;qmC7~j^wBRXu^HyAU{M0aOW_A_Yg zM?EK!elwVFAHvwNfc_HO*tCg$89t_>$D-c!^_!6qdg^=n7U7d}ErGXpGd*uCyiI7t z*be3^DfbKLu5C+yHWpn#Z~h{5MV;Ni`fBW_|18=t*kmE^*8PHhq9-)hLuUjyems=A zMqwl9s%R~9fazcc53dn-DmLw!eCDj!M*(%l+ENybvcT_bbU$(=7|ozBhmVgY zGv4$BOK=}VJsE>&=h#vOxR#T)5L>?-oBuK8OTh9IF!R9VJnEkZ?N`ZP1)sMR&_{Hp zy+Y^JX|z9N?ujj2R)vj%LEl!?2X9Y-wdOxn=waJ*Y+*gkYhUiM@0Bf(e>-%SGXKH$ z&qhxdqmy#VodrIZg4dt0pYG(p4-5{a@97G?NnL5H4kB;S(afcwqqUin&}(z#*Eds^BVxY;>8Idt3^sfcdFG;zf6t=t zMYnGqiSDR-A^PnMwzA)M$$R@S{MF60`3n4#F|-eO&jE*G^8OUee?-}1!0cK6F6RCk z___fs?--Arf!T{-+k&#I!1<@x(hJ!B+34XC>K_2Er=y2skp25$ruD%xWPKl{UbN|X1+5mce5RC6aH+O=| zP_UXv{_~;n5=Q-25q$=L zdam2f{HBV2a1#2*{-%=WfC~Br_?-ry&ke(duobOoJ_qlAoC$xG*avlJKS@CsY!Lje zMlWU9>z`LMZWDJJHrblGjzj-9f$@zqz#l&5Eu+6!PCPW4BE!Hn*fe}^Lf$LD>MLyO z-&_ZgCkuMJD7S<*G3@}xBWTVCs}ta96t=lPZ9;1a_qAtiCGWG?#M4LPcNK!^7W(IW z+5+)Mb^{06#odJ4QU49pc{k+_LoTiNR>c_?M#2~TtA^*lX@YxQ0 zv6qYIfjPY0Pd(Qj1|Hx$9lJSd95x1ymtZH4Vqd4Vzz*U2GH4Hn=c%*M!wT#YJ$5DE z*<2@4&)MKV6I*BjkCz>ZjbJ-xlJB-b^s&(Tq9-;${U3Av96OxD{eWC_0pDed;C%{h z3E56X@Bdl}?L25gcN66w!M-MYCiGguOjaVc>5#a z3&G+E>OO8NZJ{srM|>&uH8}=)y%^)bxC8k!k@-iB!GyYh&fhN5o<)y`q|?7pUx!Wf zZ3m+N4)lHKtu;0}6FTjS;J*pu5AqJ2i$66Q-NV~y@N@$*eL>z^;s5$Z^k0r6sLsel9ouv1Z}?lypT^SZVEPq!UA7KA!q>^z z@r&fY4gLNM`#KF7^-SYW{Ee6#_!iHD|HWW`TP1a`#7@!S^OWrY_SYdxr#|?T(EL+x z+SdX2Smjzzct)$=4rS&I8B36TlgLyp4?WXVT8lBbx%fJn$ZJG=0>8 z^sD<~@9@pbh29S0#=_rIl)oNKGr{av=;S`y=!fWM1Le;jOuL5m+0c6{i+Kz2J@!Xt zu1_NC0pPj=KAI!ri^%lbHT0E~e}4q!;JfoY`WNz_+ZI02#pef;PTr!Uu+!PJ8*DSa z03OKKlk3mGH4|CChyI^LuOqo2%9m{!;;d=w%mtjBAXaN7^4t7_Ww7 zN0hr0-DzF0*?8h;f2Z|itOw)gyI@}<@Yk@zHO1%x8OnQ57v*x0e0kt=9(4}FUfYtt2lB^;G2V>9H{$PPWE|fKIl-X=y1suB z`X~Py!tbEh!@%jart}S9b~Q5nLUHZzdppt&ursYO6v5kT3((ynbTOU&1fA{NfGr_I zag2VBx<96lAEH04&EGi=`bFpyy2G%CVldKr?AzoYz7!jRC(UbnBS#nLA4D78IDkHF zBRbrUePA0Mv6H)zH)}Ecz|-A>iN{86o`zq!mA(%idm;bJb6D3PZ2|QiPW}>bYDV}P z>bVL$PF+o3iyk&Z<4SB`W(Br_TxYKW7ceYAwr9cc573+l=8gK%*Fxv+q4bY4;T3!P zVM}m8zB%x>9G*82_ak&R3Jjhj?rHRR4fTJxoW2$MFE*lGV+$*gc~=K;n1{`x`_g=T zGO+szb^IE+t|qORdd5=UL+C|g;g{ry6#q1-6xkF#o_#N?WlGJPf@c;_o}H(?HvL7zeRV{mQS6`vkiUjk+)XXif1AII;5*1OG+ z0ll2rKk$dHB)k@kPAA{d)GPn{pV)sf*uROcHO6fpiT_+mn*`%Sk>lDS*e^Ql01jU) z!Iviez~g@gWs2sN8cXSv&hHFupi`pmv-^fL%|4LTma33;rR(@9iI!%l)VgHeThym zaqnJq{tvLz-1CK&q;tPN*gu4h&x6lvsc(BD<}K)`5j2XxdA3sKIBY}vKxR*(J(2#|H1v<%JPVC>2zE?g`iTkj zE!cjBZH*=03B~jqOR-_f zeQ^L7FUO|fqY3i$r_5l=ya5k?m#0(s$KBzS)ay_pN>&-2g~xc;3w=YYX@Z0lI$ zzpx8!1|9VW%e%4d#_)a4BIG>?yWYY0){pjB4#s_ucRn&?AQQBIK;8F&&%e?6iz|>7 zTC1pM3iO^s?gxomgYF8jgKbmL5BROWM_X_#8YQ z+ofGS0`9l;qWoBJM$Z?*a}{{?jnkikbvise5F;%e+rf@CcD_Qtvk^JJ*BDvAp-&b1 z7!LoL%rmi%Df7?~G~P#!JCO0T?#O`7^U2$ddbjeolYD2QqdfR(G@U-gV=OrwA7)>8 zLbjKw?;Q01W(V{DHoxKiLFm3s9hz$&3$MI@?tQQtS<(L(c+oROVRyn*#@sc`3y|fk zSqx)yp$&E&rqDjKkRvY`Z@vb{3kOjTn4Hp^@vR5+Dfb1kT}7UMgUwHn{VsH}8h%bA z-{4%vz5b+ar*Fb;O2Fxyv9$FWjBV6CbUE#90Br+a-zR+?yyns_K7!Au3Xqff`;+hJ zP1qLrF2GKXLPvUL&>1~X1B-6Rwgf)D0{hpN;TKT0cT2|Vk?720{8>xeLY|6Aw4ZVG z75vSkPCiTItxv;Nu%}k!-GyvFpxgmqc0xA_9*EC0gz*ktt%T>l!po#=%3~{c%%=V9 zz>cB)YDesZy3fZxa*105e@8;+bNCuf`PcfuH*p8U?}fC7!lRHI?0#}I;{|1AV3W5{ z?o{eOw>^C?GWCYP-=d3w$axW0J#V`PzHSAdhtc^=FrP)eqsQRCU^_z=!#_M}eJ=+Z zzrcR>>q@%lbe3Mq(52SuD*?KtbWGc2q9lM~>p6e~> z@9&bQf;!Mo9DFYX$MkLZE9i6`b)K+_KD8JepmifQwGa3V?ZB80u4AyppHt6G3(+a} zU8%oaJ~jr87qG9_C|`O#|p`VKp^aSHqRx(!259r@X+C5-+-l6m*g|r#+ z{DbmS!R>D7&(34)Sjsp_o=htGCG~WeL0?Usr&9KHcv%7eU%-1#DOiq258!a=#-NX! zL0wIdVIS~16l})qhu_hbKjb`>zXz&lTixLq+c+M6`;qtWqtWYd`V9W&988-B!yoad z{gmbKx$ZFHh9FZn)}g4YStt74eMp~1^uNyyI_R_%57Pwq>bM3$GkFn+>AFZ9$FzOT*$ zGx)xVdj5{?pFbEHW%Oxa-JkrAa{U=LwrdFYl*`Aa??ZPZpxq6A%=HuaWDtCg>TN z^SIB0#~$$889wE6--|8(o$|M#1G@PE;f=I}30rO!N)c>#D12KRyRvV=0f8_Ye}={e~~@cAQT`xoVJ znnvEE=;Nrj3FVL6mo#jz5js3^BQ}IR&4s@;72`0teuAAWAa6SNFTqa<^_;c{e}Zx=q5Tr_9SqK2w7@os;gNc^cj(MEcuPNm+9$ybJ5 zRgQ%=SpEeJ=Yjcju=x}8kL9}GWPGWqv|H$&k4)OzIEr$&pwHX6t_QD6!D}V-O0Wy< zr<;fEd?buBkq4{}gSY$O^+seFbOh~v7P?(Z{^r;ia(+Ap9P{9f`qPp9`kBZD&+itX z`&RUS)c-j)T(&=Uvk@$jWivMN9JCj&fUhpJDePbid`tzSed6@N)ORsgy+?o94t#3L z-L#!Lkm>P!#=8-WPuRyk&^SE@yJ-iX;M!+4`p34u7>SR9yr(12Gw_*#UiCcUQ~Ia8 zKHxHkzMin=?yq5YO@`xNLid=qjEU%fVM~2GA z^liwuaS;C7CVVyW9ore%;q}pM(y;fJ(eZz<(=XF#i^x6*9Ue%1=k=oP&A?{S)e!Ql zeQqude4Zg&1HW~D)ekRkf=}Pgv~lttxRN$O{GS@(Zydt>6I=d0vbJhP{|4q?(qFzs znO{O%eVm>{&+W$ey9J%YTT}R0oXb6VZfrw8x)5J#F?~1kzeCxxpg$LW=Yi39bkOub z?xAr%eD9>pVc5yj*yY#Vu^YlKlD{i;{Thsa1D#3OOCItxg7#)GIG8`}t$UR`M}Yq= z8}QMfcMke`rzf&3z-Nd5Md)D*`ad3AU&5CDLH?Utz|SPcmj3jQ(2Y&OUeWi?K0zDE zBm5iE_Q56(hnE8Iy{ai~9bQ{f?U(;x#11B>sVgEN^EB}JekD>L~T-rQz zx3r3ES96IiqY6@7CMj7|D%JqDAyi+c82z~ zndlW8??;&j=935A%<6!Ssb>WDS3~z5WIq$Rt8(#A!2iuOXdems+*p-+}oC@*F#hHnR==ql@2R1IP1s zSr6J4@}&(0A9VjP`4_^w_HR5-xtA&eJ#~VIFFMkGXa|LqnKX^@4ZY6TNMD9c9SRn2 zc+f@0r{M8uFdhO{d@J-40h;SYr$aHs0>^C3XlYSv|zd}!s9RdI3 z9lQ#=tfIYuX$N@eM*6M87#pzn_mMlVF*-)JKlDO|3fkk5;82J^1wL1z!J^;HvgXfLlrT4=w$whzgb~$MA1CS$w_Ihy#+7sBG#Py19@C2Sm zwf8Uxa3}7Z!SuiAG6w%KWS$Q{XQ7kD6Y9A>z_OX;SSs%W{E*Wp~}Zi(o-wjIo=OKRm}11JX=?u8-<12zeeS)mD)Psdy?mB=X6DQ}XU;iuratpP z2Y&ih^M?*o*w*v=pvwd3)3Bwr@X`qXXOgZ%F4a7LdlY}*IQ>A%;Ja3|0Mieft;7$4 z_nM=T!5I7xF!vz4lac*X*#Ct+7_Xy?$;UH}q3&9XYliMuv8l!;?3OmCGY!kYIq*2r zkHl9~$J>#k)*IF!+rJz_|GO`Bpe>Bwg}F31ukDTxM_zXUx7$Q`rmW83y|X8JL`PZ| zOe5R(pr`rlzvj}`knn!rLKp@Zre%QU0z+U;VJ*mK?SY zp1&Xm?N|Q~^}Tl{^`o4|El<;)CJw{rlK&U*&c{Bs1J`fK+XnrgL7g7$g-;n}=Y@ML zV@zRXii3KLOKjI(`&-yMpI7^fPP-@}ta3WLgiN9cV9mwIE;k?gGybpx0jX4QrOr zf1#Hiz+XqZya)YliH@G3Y*)f_sMF!#xM&{oq8*)oByt3%ZY+4=<@eCN5}UajzMtQc zwg%46BGX+a;qw>L4#4|U@|H|xJVZTS+Z}s`ztiFQ3GiOC09!Z~`5_C<&EJ`goejrt zql;JIy900wI-)oD`F0=LFLr-3I@$r<{Q= LT&BntQ{$-rYO~p00q$J4fK33D3tq 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%0DaUh=%p&FwyCx~zs*CsC*qep7l~~V;bLXw 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 LT&BntQ{$-rYO~p00q$J4fK33D3tq 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 +#include + +namespace YAML +{ + AliasManager::AliasManager(): m_curAnchor(0) + { + } + + void AliasManager::RegisterReference(const Node& node) + { + m_anchorByIdentity.insert(std::make_pair(&node, _CreateNewAnchor())); + } + + anchor_t AliasManager::LookupAnchor(const Node& node) const + { + AnchorByIdentity::const_iterator it = m_anchorByIdentity.find(&node); + if(it == m_anchorByIdentity.end()) + return 0; + return it->second; + } + + anchor_t AliasManager::_CreateNewAnchor() + { + return ++m_curAnchor; + } +} diff --git a/yaml-cpp/src/binary.cpp b/yaml-cpp/src/binary.cpp new file mode 100644 index 0000000..589eb08 --- /dev/null +++ b/yaml-cpp/src/binary.cpp @@ -0,0 +1,102 @@ +#include "yaml-cpp/binary.h" +#include "yaml-cpp/node.h" + +namespace YAML +{ + static const char encoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + std::string EncodeBase64(const unsigned char *data, std::size_t size) + { + const char PAD = '='; + + std::string ret; + ret.resize(4 * size / 3 + 3); + char *out = &ret[0]; + + std::size_t chunks = size / 3; + std::size_t remainder = size % 3; + + for(std::size_t i=0;i> 2]; + *out++ = encoding[((data[0] & 0x3) << 4) | (data[1] >> 4)]; + *out++ = encoding[((data[1] & 0xf) << 2) | (data[2] >> 6)]; + *out++ = encoding[data[2] & 0x3f]; + } + + switch(remainder) { + case 0: + break; + case 1: + *out++ = encoding[data[0] >> 2]; + *out++ = encoding[((data[0] & 0x3) << 4)]; + *out++ = PAD; + *out++ = PAD; + break; + case 2: + *out++ = encoding[data[0] >> 2]; + *out++ = encoding[((data[0] & 0x3) << 4) | (data[1] >> 4)]; + *out++ = encoding[((data[1] & 0xf) << 2)]; + *out++ = PAD; + break; + } + + ret.resize(out - &ret[0]); + return ret; + } + + static const unsigned char decoding[] = { + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255, 62,255,255,255, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,255,255,255, 0,255,255, + 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,255,255,255,255,255, + 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + }; + + std::vector DecodeBase64(const std::string& input) + { + typedef std::vector ret_type; + if(input.empty()) + return ret_type(); + + ret_type ret(3 * input.size() / 4 + 1); + unsigned char *out = &ret[0]; + + unsigned value = 0; + for(std::size_t i=0;i(input[i])]; + if(d == 255) + return ret_type(); + + value = (value << 6) | d; + if(i % 4 == 3) { + *out++ = value >> 16; + if(i > 0 && input[i - 1] != '=') + *out++ = value >> 8; + if(input[i] != '=') + *out++ = value; + } + } + + ret.resize(out - &ret[0]); + return ret; + } + + void operator >> (const Node& node, Binary& binary) + { + std::string scalar; + node.GetScalar(scalar); + std::vector data = DecodeBase64(scalar); + binary.swap(data); + } +} diff --git a/yaml-cpp/src/collectionstack.h b/yaml-cpp/src/collectionstack.h new file mode 100644 index 0000000..4a986bc --- /dev/null +++ b/yaml-cpp/src/collectionstack.h @@ -0,0 +1,35 @@ +#ifndef COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include + +namespace YAML +{ + struct CollectionType { + enum value { None, BlockMap, BlockSeq, FlowMap, FlowSeq, CompactMap }; + }; + + class CollectionStack + { + public: + CollectionType::value GetCurCollectionType() const { + if(collectionStack.empty()) + return CollectionType::None; + return collectionStack.top(); + } + + void PushCollectionType(CollectionType::value type) { collectionStack.push(type); } + void PopCollectionType(CollectionType::value type) { assert(type == GetCurCollectionType()); collectionStack.pop(); } + + private: + std::stack collectionStack; + }; +} + +#endif // COLLECTIONSTACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/contrib/graphbuilder.cpp b/yaml-cpp/src/contrib/graphbuilder.cpp new file mode 100644 index 0000000..ab5159c --- /dev/null +++ b/yaml-cpp/src/contrib/graphbuilder.cpp @@ -0,0 +1,16 @@ +#include "yaml-cpp/parser.h" +#include "yaml-cpp/contrib/graphbuilder.h" +#include "graphbuilderadapter.h" + +namespace YAML +{ + void *BuildGraphOfNextDocument(Parser& parser, GraphBuilderInterface& graphBuilder) + { + GraphBuilderAdapter eventHandler(graphBuilder); + if (parser.HandleNextDocument(eventHandler)) { + return eventHandler.RootNode(); + } else { + return NULL; + } + } +} diff --git a/yaml-cpp/src/contrib/graphbuilderadapter.cpp b/yaml-cpp/src/contrib/graphbuilderadapter.cpp new file mode 100644 index 0000000..557e97c --- /dev/null +++ b/yaml-cpp/src/contrib/graphbuilderadapter.cpp @@ -0,0 +1,96 @@ +#include "graphbuilderadapter.h" + +namespace YAML +{ + int GraphBuilderAdapter::ContainerFrame::sequenceMarker; + + void GraphBuilderAdapter::OnNull(const Mark& mark, anchor_t anchor) + { + void *pParent = GetCurrentParent(); + void *pNode = m_builder.NewNull(mark, pParent); + RegisterAnchor(anchor, pNode); + + DispositionNode(pNode); + } + + void GraphBuilderAdapter::OnAlias(const Mark& mark, anchor_t anchor) + { + void *pReffedNode = m_anchors.Get(anchor); + DispositionNode(m_builder.AnchorReference(mark, pReffedNode)); + } + + void GraphBuilderAdapter::OnScalar(const Mark& mark, const std::string& tag, anchor_t anchor, const std::string& value) + { + void *pParent = GetCurrentParent(); + void *pNode = m_builder.NewScalar(mark, tag, pParent, value); + RegisterAnchor(anchor, pNode); + + DispositionNode(pNode); + } + + void GraphBuilderAdapter::OnSequenceStart(const Mark& mark, const std::string& tag, anchor_t anchor) + { + void *pNode = m_builder.NewSequence(mark, tag, GetCurrentParent()); + m_containers.push(ContainerFrame(pNode)); + RegisterAnchor(anchor, pNode); + } + + void GraphBuilderAdapter::OnSequenceEnd() + { + void *pSequence = m_containers.top().pContainer; + m_containers.pop(); + + DispositionNode(pSequence); + } + + void GraphBuilderAdapter::OnMapStart(const Mark& mark, const std::string& tag, anchor_t anchor) + { + void *pNode = m_builder.NewMap(mark, tag, GetCurrentParent()); + m_containers.push(ContainerFrame(pNode, m_pKeyNode)); + m_pKeyNode = NULL; + RegisterAnchor(anchor, pNode); + } + + void GraphBuilderAdapter::OnMapEnd() + { + void *pMap = m_containers.top().pContainer; + m_pKeyNode = m_containers.top().pPrevKeyNode; + m_containers.pop(); + DispositionNode(pMap); + } + + void *GraphBuilderAdapter::GetCurrentParent() const + { + if (m_containers.empty()) { + return NULL; + } + return m_containers.top().pContainer; + } + + void GraphBuilderAdapter::RegisterAnchor(anchor_t anchor, void *pNode) + { + if (anchor) { + m_anchors.Register(anchor, pNode); + } + } + + void GraphBuilderAdapter::DispositionNode(void *pNode) + { + if (m_containers.empty()) { + m_pRootNode = pNode; + return; + } + + void *pContainer = m_containers.top().pContainer; + if (m_containers.top().isMap()) { + if (m_pKeyNode) { + m_builder.AssignInMap(pContainer, m_pKeyNode, pNode); + m_pKeyNode = NULL; + } else { + m_pKeyNode = pNode; + } + } else { + m_builder.AppendToSequence(pContainer, pNode); + } + } +} diff --git a/yaml-cpp/src/contrib/graphbuilderadapter.h b/yaml-cpp/src/contrib/graphbuilderadapter.h new file mode 100644 index 0000000..3ef8ab6 --- /dev/null +++ b/yaml-cpp/src/contrib/graphbuilderadapter.h @@ -0,0 +1,73 @@ +#ifndef GRAPHBUILDERADAPTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define GRAPHBUILDERADAPTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +#include +#include +#include +#include "yaml-cpp/eventhandler.h" +#include "yaml-cpp/contrib/anchordict.h" +#include "yaml-cpp/contrib/graphbuilder.h" + +namespace YAML +{ + class GraphBuilderAdapter : public EventHandler + { + public: + GraphBuilderAdapter(GraphBuilderInterface& builder) + : m_builder(builder), m_pRootNode(NULL), m_pKeyNode(NULL) + { + } + + virtual void OnDocumentStart(const Mark& mark) {(void)mark;} + virtual void OnDocumentEnd() {} + + virtual void OnNull(const Mark& mark, anchor_t anchor); + virtual void OnAlias(const Mark& mark, anchor_t anchor); + virtual void OnScalar(const Mark& mark, const std::string& tag, anchor_t anchor, const std::string& value); + + virtual void OnSequenceStart(const Mark& mark, const std::string& tag, anchor_t anchor); + virtual void OnSequenceEnd(); + + virtual void OnMapStart(const Mark& mark, const std::string& tag, anchor_t anchor); + virtual void OnMapEnd(); + + void *RootNode() const {return m_pRootNode;} + + private: + struct ContainerFrame + { + ContainerFrame(void *pSequence) + : pContainer(pSequence), pPrevKeyNode(&sequenceMarker) + {} + ContainerFrame(void *pMap, void* pPrevKeyNode) + : pContainer(pMap), pPrevKeyNode(pPrevKeyNode) + {} + + void *pContainer; + void *pPrevKeyNode; + + bool isMap() const {return pPrevKeyNode != &sequenceMarker;} + + private: + static int sequenceMarker; + }; + typedef std::stack ContainerStack; + typedef AnchorDict AnchorMap; + + GraphBuilderInterface& m_builder; + ContainerStack m_containers; + AnchorMap m_anchors; + void *m_pRootNode; + void *m_pKeyNode; + + void *GetCurrentParent() const; + void RegisterAnchor(anchor_t anchor, void *pNode); + void DispositionNode(void *pNode); + }; +} + +#endif // GRAPHBUILDERADAPTER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/conversion.cpp b/yaml-cpp/src/conversion.cpp new file mode 100644 index 0000000..f81e1a0 --- /dev/null +++ b/yaml-cpp/src/conversion.cpp @@ -0,0 +1,89 @@ +#include "yaml-cpp/conversion.h" +#include + +//////////////////////////////////////////////////////////////// +// Specializations for converting a string to specific types + +namespace +{ + // we're not gonna mess with the mess that is all the isupper/etc. functions + bool IsLower(char ch) { return 'a' <= ch && ch <= 'z'; } + bool IsUpper(char ch) { return 'A' <= ch && ch <= 'Z'; } + char ToLower(char ch) { return IsUpper(ch) ? ch + 'a' - 'A' : ch; } + + std::string tolower(const std::string& str) + { + std::string s(str); + std::transform(s.begin(), s.end(), s.begin(), ToLower); + return s; + } + + template + bool IsEntirely(const std::string& str, T func) + { + for(std::size_t i=0;i::const_iterator it = tags.find(handle); + if(it == tags.end()) { + if(handle == "!!") + return "tag:yaml.org,2002:"; + return handle; + } + + return it->second; + } +} diff --git a/yaml-cpp/src/directives.h b/yaml-cpp/src/directives.h new file mode 100644 index 0000000..a3308f7 --- /dev/null +++ b/yaml-cpp/src/directives.h @@ -0,0 +1,29 @@ +#ifndef DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include + +namespace YAML +{ + struct Version { + bool isDefault; + int major, minor; + }; + + struct Directives { + Directives(); + + const std::string TranslateTagHandle(const std::string& handle) const; + + Version version; + std::map tags; + }; +} + +#endif // DIRECTIVES_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/emitfromevents.cpp b/yaml-cpp/src/emitfromevents.cpp new file mode 100644 index 0000000..49fc10b --- /dev/null +++ b/yaml-cpp/src/emitfromevents.cpp @@ -0,0 +1,105 @@ +#include "yaml-cpp/emitfromevents.h" +#include "yaml-cpp/emitter.h" +#include "yaml-cpp/null.h" +#include +#include + +namespace { + std::string ToString(YAML::anchor_t anchor) { + std::stringstream stream; + stream << anchor; + return stream.str(); + } +} + +namespace YAML +{ + EmitFromEvents::EmitFromEvents(Emitter& emitter): m_emitter(emitter) + { + } + + void EmitFromEvents::OnDocumentStart(const Mark&) + { + } + + void EmitFromEvents::OnDocumentEnd() + { + } + + void EmitFromEvents::OnNull(const Mark&, anchor_t anchor) + { + BeginNode(); + EmitProps("", anchor); + m_emitter << Null; + } + + void EmitFromEvents::OnAlias(const Mark&, anchor_t anchor) + { + BeginNode(); + m_emitter << Alias(ToString(anchor)); + } + + void EmitFromEvents::OnScalar(const Mark&, const std::string& tag, anchor_t anchor, const std::string& value) + { + BeginNode(); + EmitProps(tag, anchor); + m_emitter << value; + } + + void EmitFromEvents::OnSequenceStart(const Mark&, const std::string& tag, anchor_t anchor) + { + BeginNode(); + EmitProps(tag, anchor); + m_emitter << BeginSeq; + m_stateStack.push(State::WaitingForSequenceEntry); + } + + void EmitFromEvents::OnSequenceEnd() + { + m_emitter << EndSeq; + assert(m_stateStack.top() == State::WaitingForSequenceEntry); + m_stateStack.pop(); + } + + void EmitFromEvents::OnMapStart(const Mark&, const std::string& tag, anchor_t anchor) + { + BeginNode(); + EmitProps(tag, anchor); + m_emitter << BeginMap; + m_stateStack.push(State::WaitingForKey); + } + + void EmitFromEvents::OnMapEnd() + { + m_emitter << EndMap; + assert(m_stateStack.top() == State::WaitingForKey); + m_stateStack.pop(); + } + + void EmitFromEvents::BeginNode() + { + if(m_stateStack.empty()) + return; + + switch(m_stateStack.top()) { + case State::WaitingForKey: + m_emitter << Key; + m_stateStack.top() = State::WaitingForValue; + break; + case State::WaitingForValue: + m_emitter << Value; + m_stateStack.top() = State::WaitingForKey; + break; + default: + break; + } + } + + void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor) + { + if(!tag.empty() && tag != "?") + m_emitter << VerbatimTag(tag); + if(anchor) + m_emitter << Anchor(ToString(anchor)); + } +} diff --git a/yaml-cpp/src/emitter.cpp b/yaml-cpp/src/emitter.cpp new file mode 100644 index 0000000..91f48da --- /dev/null +++ b/yaml-cpp/src/emitter.cpp @@ -0,0 +1,882 @@ +#include "yaml-cpp/emitter.h" +#include "emitterstate.h" +#include "emitterutils.h" +#include "indentation.h" +#include "yaml-cpp/exceptions.h" +#include + +namespace YAML +{ + Emitter::Emitter(): m_pState(new EmitterState) + { + } + + Emitter::~Emitter() + { + } + + const char *Emitter::c_str() const + { + return m_stream.str(); + } + + unsigned Emitter::size() const + { + return m_stream.pos(); + } + + // state checking + bool Emitter::good() const + { + return m_pState->good(); + } + + const std::string Emitter::GetLastError() const + { + return m_pState->GetLastError(); + } + + // global setters + bool Emitter::SetOutputCharset(EMITTER_MANIP value) + { + return m_pState->SetOutputCharset(value, GLOBAL); + } + + bool Emitter::SetStringFormat(EMITTER_MANIP value) + { + return m_pState->SetStringFormat(value, GLOBAL); + } + + bool Emitter::SetBoolFormat(EMITTER_MANIP value) + { + bool ok = false; + if(m_pState->SetBoolFormat(value, GLOBAL)) + ok = true; + if(m_pState->SetBoolCaseFormat(value, GLOBAL)) + ok = true; + if(m_pState->SetBoolLengthFormat(value, GLOBAL)) + ok = true; + return ok; + } + + bool Emitter::SetIntBase(EMITTER_MANIP value) + { + return m_pState->SetIntFormat(value, GLOBAL); + } + + bool Emitter::SetSeqFormat(EMITTER_MANIP value) + { + return m_pState->SetFlowType(GT_SEQ, value, GLOBAL); + } + + bool Emitter::SetMapFormat(EMITTER_MANIP value) + { + bool ok = false; + if(m_pState->SetFlowType(GT_MAP, value, GLOBAL)) + ok = true; + if(m_pState->SetMapKeyFormat(value, GLOBAL)) + ok = true; + return ok; + } + + bool Emitter::SetIndent(unsigned n) + { + return m_pState->SetIndent(n, GLOBAL); + } + + bool Emitter::SetPreCommentIndent(unsigned n) + { + return m_pState->SetPreCommentIndent(n, GLOBAL); + } + + bool Emitter::SetPostCommentIndent(unsigned n) + { + return m_pState->SetPostCommentIndent(n, GLOBAL); + } + + bool Emitter::SetFloatPrecision(unsigned n) + { + return m_pState->SetFloatPrecision(n, GLOBAL); + } + + bool Emitter::SetDoublePrecision(unsigned n) + { + return m_pState->SetDoublePrecision(n, GLOBAL); + } + + // SetLocalValue + // . Either start/end a group, or set a modifier locally + Emitter& Emitter::SetLocalValue(EMITTER_MANIP value) + { + if(!good()) + return *this; + + switch(value) { + case BeginDoc: + EmitBeginDoc(); + break; + case EndDoc: + EmitEndDoc(); + break; + case BeginSeq: + EmitBeginSeq(); + break; + case EndSeq: + EmitEndSeq(); + break; + case BeginMap: + EmitBeginMap(); + break; + case EndMap: + EmitEndMap(); + break; + case Key: + EmitKey(); + break; + case Value: + EmitValue(); + break; + case TagByKind: + EmitKindTag(); + break; + case Newline: + EmitNewline(); + break; + default: + m_pState->SetLocalValue(value); + break; + } + return *this; + } + + Emitter& Emitter::SetLocalIndent(const _Indent& indent) + { + m_pState->SetIndent(indent.value, LOCAL); + return *this; + } + + Emitter& Emitter::SetLocalPrecision(const _Precision& precision) + { + if(precision.floatPrecision >= 0) + m_pState->SetFloatPrecision(precision.floatPrecision, LOCAL); + if(precision.doublePrecision >= 0) + m_pState->SetDoublePrecision(precision.doublePrecision, LOCAL); + return *this; + } + + // GotoNextPreAtomicState + // . Runs the state machine, emitting if necessary, and returns 'true' if done (i.e., ready to emit an atom) + bool Emitter::GotoNextPreAtomicState() + { + if(!good()) + return true; + + unsigned curIndent = m_pState->GetCurIndent(); + + EMITTER_STATE curState = m_pState->GetCurState(); + switch(curState) { + // document-level + case ES_WAITING_FOR_DOC: + m_pState->SwitchState(ES_WRITING_DOC); + return true; + case ES_WRITING_DOC: + return true; + case ES_DONE_WITH_DOC: + EmitBeginDoc(); + return false; + + // block sequence + case ES_WAITING_FOR_BLOCK_SEQ_ENTRY: + m_stream << IndentTo(curIndent) << "-"; + m_pState->RequireSoftSeparation(); + m_pState->SwitchState(ES_WRITING_BLOCK_SEQ_ENTRY); + return true; + case ES_WRITING_BLOCK_SEQ_ENTRY: + return true; + case ES_DONE_WITH_BLOCK_SEQ_ENTRY: + m_stream << '\n'; + m_pState->SwitchState(ES_WAITING_FOR_BLOCK_SEQ_ENTRY); + return false; + + // flow sequence + case ES_WAITING_FOR_FLOW_SEQ_ENTRY: + m_pState->SwitchState(ES_WRITING_FLOW_SEQ_ENTRY); + return true; + case ES_WRITING_FLOW_SEQ_ENTRY: + return true; + case ES_DONE_WITH_FLOW_SEQ_ENTRY: + EmitSeparationIfNecessary(); + m_stream << ','; + m_pState->RequireSoftSeparation(); + m_pState->SwitchState(ES_WAITING_FOR_FLOW_SEQ_ENTRY); + return false; + + // block map + case ES_WAITING_FOR_BLOCK_MAP_ENTRY: + m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); + return true; + case ES_WAITING_FOR_BLOCK_MAP_KEY: + if(m_pState->CurrentlyInLongKey()) { + m_stream << IndentTo(curIndent) << '?'; + m_pState->RequireSoftSeparation(); + } + m_pState->SwitchState(ES_WRITING_BLOCK_MAP_KEY); + return true; + case ES_WRITING_BLOCK_MAP_KEY: + return true; + case ES_DONE_WITH_BLOCK_MAP_KEY: + m_pState->SetError(ErrorMsg::EXPECTED_VALUE_TOKEN); + return true; + case ES_WAITING_FOR_BLOCK_MAP_VALUE: + m_pState->SwitchState(ES_WRITING_BLOCK_MAP_VALUE); + return true; + case ES_WRITING_BLOCK_MAP_VALUE: + return true; + case ES_DONE_WITH_BLOCK_MAP_VALUE: + m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); + return true; + + // flow map + case ES_WAITING_FOR_FLOW_MAP_ENTRY: + m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); + return true; + case ES_WAITING_FOR_FLOW_MAP_KEY: + EmitSeparationIfNecessary(); + m_pState->SwitchState(ES_WRITING_FLOW_MAP_KEY); + if(m_pState->CurrentlyInLongKey()) { + m_stream << '?'; + m_pState->RequireSoftSeparation(); + } + return true; + case ES_WRITING_FLOW_MAP_KEY: + return true; + case ES_DONE_WITH_FLOW_MAP_KEY: + m_pState->SetError(ErrorMsg::EXPECTED_VALUE_TOKEN); + return true; + case ES_WAITING_FOR_FLOW_MAP_VALUE: + EmitSeparationIfNecessary(); + m_stream << ':'; + m_pState->RequireSoftSeparation(); + m_pState->SwitchState(ES_WRITING_FLOW_MAP_VALUE); + return true; + case ES_WRITING_FLOW_MAP_VALUE: + return true; + case ES_DONE_WITH_FLOW_MAP_VALUE: + m_pState->SetError(ErrorMsg::EXPECTED_KEY_TOKEN); + return true; + default: + assert(false); + } + + assert(false); + return true; + } + + // PreAtomicWrite + // . Depending on the emitter state, write to the stream to get it + // in position to do an atomic write (e.g., scalar, sequence, or map) + void Emitter::PreAtomicWrite() + { + if(!good()) + return; + + while(!GotoNextPreAtomicState()) + ; + } + + // PostAtomicWrite + // . Clean up + void Emitter::PostAtomicWrite() + { + if(!good()) + return; + + EMITTER_STATE curState = m_pState->GetCurState(); + switch(curState) { + // document-level + case ES_WRITING_DOC: + m_pState->SwitchState(ES_DONE_WITH_DOC); + break; + + // block seq + case ES_WRITING_BLOCK_SEQ_ENTRY: + m_pState->SwitchState(ES_DONE_WITH_BLOCK_SEQ_ENTRY); + break; + + // flow seq + case ES_WRITING_FLOW_SEQ_ENTRY: + m_pState->SwitchState(ES_DONE_WITH_FLOW_SEQ_ENTRY); + break; + + // block map + case ES_WRITING_BLOCK_MAP_KEY: + if(!m_pState->CurrentlyInLongKey()) { + m_stream << ':'; + m_pState->RequireSoftSeparation(); + } + m_pState->SwitchState(ES_DONE_WITH_BLOCK_MAP_KEY); + break; + case ES_WRITING_BLOCK_MAP_VALUE: + m_pState->SwitchState(ES_DONE_WITH_BLOCK_MAP_VALUE); + break; + + // flow map + case ES_WRITING_FLOW_MAP_KEY: + m_pState->SwitchState(ES_DONE_WITH_FLOW_MAP_KEY); + break; + case ES_WRITING_FLOW_MAP_VALUE: + m_pState->SwitchState(ES_DONE_WITH_FLOW_MAP_VALUE); + break; + default: + assert(false); + }; + + m_pState->ClearModifiedSettings(); + } + + // EmitSeparationIfNecessary + void Emitter::EmitSeparationIfNecessary() + { + if(!good()) + return; + + if(m_pState->RequiresSoftSeparation()) + m_stream << ' '; + else if(m_pState->RequiresHardSeparation()) + m_stream << '\n'; + m_pState->UnsetSeparation(); + } + + // EmitBeginDoc + void Emitter::EmitBeginDoc() + { + if(!good()) + return; + + EMITTER_STATE curState = m_pState->GetCurState(); + if(curState != ES_WAITING_FOR_DOC && curState != ES_WRITING_DOC && curState != ES_DONE_WITH_DOC) { + m_pState->SetError("Unexpected begin document"); + return; + } + + if(curState == ES_WRITING_DOC || curState == ES_DONE_WITH_DOC) + m_stream << '\n'; + m_stream << "---\n"; + + m_pState->UnsetSeparation(); + m_pState->SwitchState(ES_WAITING_FOR_DOC); + } + + // EmitEndDoc + void Emitter::EmitEndDoc() + { + if(!good()) + return; + + + EMITTER_STATE curState = m_pState->GetCurState(); + if(curState != ES_WAITING_FOR_DOC && curState != ES_WRITING_DOC && curState != ES_DONE_WITH_DOC) { + m_pState->SetError("Unexpected end document"); + return; + } + + if(curState == ES_WRITING_DOC || curState == ES_DONE_WITH_DOC) + m_stream << '\n'; + m_stream << "...\n"; + + m_pState->UnsetSeparation(); + m_pState->SwitchState(ES_WAITING_FOR_DOC); + } + + // EmitBeginSeq + void Emitter::EmitBeginSeq() + { + if(!good()) + return; + + // must have a long key if we're emitting a sequence + m_pState->StartLongKey(); + + PreAtomicWrite(); + + EMITTER_STATE curState = m_pState->GetCurState(); + EMITTER_MANIP flowType = m_pState->GetFlowType(GT_SEQ); + if(flowType == Block) { + if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || + curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || + curState == ES_WRITING_DOC + ) { + if(m_pState->RequiresHardSeparation() || curState != ES_WRITING_DOC) { + m_stream << "\n"; + m_pState->UnsetSeparation(); + } + } + m_pState->PushState(ES_WAITING_FOR_BLOCK_SEQ_ENTRY); + } else if(flowType == Flow) { + EmitSeparationIfNecessary(); + m_stream << "["; + m_pState->PushState(ES_WAITING_FOR_FLOW_SEQ_ENTRY); + } else + assert(false); + + m_pState->BeginGroup(GT_SEQ); + } + + // EmitEndSeq + void Emitter::EmitEndSeq() + { + if(!good()) + return; + + if(m_pState->GetCurGroupType() != GT_SEQ) + return m_pState->SetError(ErrorMsg::UNEXPECTED_END_SEQ); + + EMITTER_STATE curState = m_pState->GetCurState(); + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FT_BLOCK) { + // Note: block sequences are *not* allowed to be empty, but we convert it + // to a flow sequence if it is + assert(curState == ES_DONE_WITH_BLOCK_SEQ_ENTRY || curState == ES_WAITING_FOR_BLOCK_SEQ_ENTRY); + if(curState == ES_WAITING_FOR_BLOCK_SEQ_ENTRY) { + // Note: only one of these will actually output anything for a given situation + EmitSeparationIfNecessary(); + unsigned curIndent = m_pState->GetCurIndent(); + m_stream << IndentTo(curIndent); + + m_stream << "[]"; + } + } else if(flowType == FT_FLOW) { + // Note: flow sequences are allowed to be empty + assert(curState == ES_DONE_WITH_FLOW_SEQ_ENTRY || curState == ES_WAITING_FOR_FLOW_SEQ_ENTRY); + m_stream << "]"; + } else + assert(false); + + m_pState->PopState(); + m_pState->EndGroup(GT_SEQ); + + PostAtomicWrite(); + } + + // EmitBeginMap + void Emitter::EmitBeginMap() + { + if(!good()) + return; + + // must have a long key if we're emitting a map + m_pState->StartLongKey(); + + PreAtomicWrite(); + + EMITTER_STATE curState = m_pState->GetCurState(); + EMITTER_MANIP flowType = m_pState->GetFlowType(GT_MAP); + if(flowType == Block) { + if(curState == ES_WRITING_BLOCK_SEQ_ENTRY || + curState == ES_WRITING_BLOCK_MAP_KEY || curState == ES_WRITING_BLOCK_MAP_VALUE || + curState == ES_WRITING_DOC + ) { + if(m_pState->RequiresHardSeparation() || (curState != ES_WRITING_DOC && curState != ES_WRITING_BLOCK_SEQ_ENTRY)) { + m_stream << "\n"; + m_pState->UnsetSeparation(); + } + } + m_pState->PushState(ES_WAITING_FOR_BLOCK_MAP_ENTRY); + } else if(flowType == Flow) { + EmitSeparationIfNecessary(); + m_stream << "{"; + m_pState->PushState(ES_WAITING_FOR_FLOW_MAP_ENTRY); + } else + assert(false); + + m_pState->BeginGroup(GT_MAP); + } + + // EmitEndMap + void Emitter::EmitEndMap() + { + if(!good()) + return; + + if(m_pState->GetCurGroupType() != GT_MAP) + return m_pState->SetError(ErrorMsg::UNEXPECTED_END_MAP); + + EMITTER_STATE curState = m_pState->GetCurState(); + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FT_BLOCK) { + // Note: block sequences are *not* allowed to be empty, but we convert it + // to a flow sequence if it is + assert(curState == ES_DONE_WITH_BLOCK_MAP_VALUE || curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY); + if(curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY) { + // Note: only one of these will actually output anything for a given situation + EmitSeparationIfNecessary(); + unsigned curIndent = m_pState->GetCurIndent(); + m_stream << IndentTo(curIndent); + m_stream << "{}"; + } + } else if(flowType == FT_FLOW) { + // Note: flow maps are allowed to be empty + assert(curState == ES_DONE_WITH_FLOW_MAP_VALUE || curState == ES_WAITING_FOR_FLOW_MAP_ENTRY); + EmitSeparationIfNecessary(); + m_stream << "}"; + } else + assert(false); + + m_pState->PopState(); + m_pState->EndGroup(GT_MAP); + + PostAtomicWrite(); + } + + // EmitKey + void Emitter::EmitKey() + { + if(!good()) + return; + + EMITTER_STATE curState = m_pState->GetCurState(); + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + if(curState != ES_WAITING_FOR_BLOCK_MAP_ENTRY && curState != ES_DONE_WITH_BLOCK_MAP_VALUE + && curState != ES_WAITING_FOR_FLOW_MAP_ENTRY && curState != ES_DONE_WITH_FLOW_MAP_VALUE) + return m_pState->SetError(ErrorMsg::UNEXPECTED_KEY_TOKEN); + + if(flowType == FT_BLOCK) { + if(curState == ES_DONE_WITH_BLOCK_MAP_VALUE) + m_stream << '\n'; + unsigned curIndent = m_pState->GetCurIndent(); + m_stream << IndentTo(curIndent); + m_pState->UnsetSeparation(); + m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_KEY); + } else if(flowType == FT_FLOW) { + EmitSeparationIfNecessary(); + if(curState == ES_DONE_WITH_FLOW_MAP_VALUE) { + m_stream << ','; + m_pState->RequireSoftSeparation(); + } + m_pState->SwitchState(ES_WAITING_FOR_FLOW_MAP_KEY); + } else + assert(false); + + if(m_pState->GetMapKeyFormat() == LongKey) + m_pState->StartLongKey(); + else if(m_pState->GetMapKeyFormat() == Auto) + m_pState->StartSimpleKey(); + else + assert(false); + } + + // EmitValue + void Emitter::EmitValue() + { + if(!good()) + return; + + EMITTER_STATE curState = m_pState->GetCurState(); + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + if(curState != ES_DONE_WITH_BLOCK_MAP_KEY && curState != ES_DONE_WITH_FLOW_MAP_KEY) + return m_pState->SetError(ErrorMsg::UNEXPECTED_VALUE_TOKEN); + + if(flowType == FT_BLOCK) { + if(m_pState->CurrentlyInLongKey()) { + m_stream << '\n'; + m_stream << IndentTo(m_pState->GetCurIndent()); + m_stream << ':'; + m_pState->RequireSoftSeparation(); + } + m_pState->SwitchState(ES_WAITING_FOR_BLOCK_MAP_VALUE); + } else if(flowType == FT_FLOW) { + m_pState->SwitchState(ES_WAITING_FOR_FLOW_MAP_VALUE); + } else + assert(false); + } + + // EmitNewline + void Emitter::EmitNewline() + { + if(!good()) + return; + + if(CanEmitNewline()) { + m_stream << '\n'; + m_pState->UnsetSeparation(); + } + } + + bool Emitter::CanEmitNewline() const + { + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + if(flowType == FT_BLOCK && m_pState->CurrentlyInLongKey()) + return true; + + EMITTER_STATE curState = m_pState->GetCurState(); + return curState != ES_DONE_WITH_BLOCK_MAP_KEY && curState != ES_WAITING_FOR_BLOCK_MAP_VALUE && curState != ES_WRITING_BLOCK_MAP_VALUE; + } + + // ******************************************************************************************* + // overloads of Write + + Emitter& Emitter::Write(const std::string& str) + { + if(!good()) + return *this; + + // literal scalars must use long keys + if(m_pState->GetStringFormat() == Literal && m_pState->GetCurGroupFlowType() != FT_FLOW) + m_pState->StartLongKey(); + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + + bool escapeNonAscii = m_pState->GetOutputCharset() == EscapeNonAscii; + EMITTER_MANIP strFmt = m_pState->GetStringFormat(); + FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); + unsigned curIndent = m_pState->GetCurIndent(); + + switch(strFmt) { + case Auto: + Utils::WriteString(m_stream, str, flowType == FT_FLOW, escapeNonAscii); + break; + case SingleQuoted: + if(!Utils::WriteSingleQuotedString(m_stream, str)) { + m_pState->SetError(ErrorMsg::SINGLE_QUOTED_CHAR); + return *this; + } + break; + case DoubleQuoted: + Utils::WriteDoubleQuotedString(m_stream, str, escapeNonAscii); + break; + case Literal: + if(flowType == FT_FLOW) + Utils::WriteString(m_stream, str, flowType == FT_FLOW, escapeNonAscii); + else + Utils::WriteLiteralString(m_stream, str, curIndent + m_pState->GetIndent()); + break; + default: + assert(false); + } + + PostAtomicWrite(); + return *this; + } + + void Emitter::PreWriteIntegralType(std::stringstream& str) + { + PreAtomicWrite(); + EmitSeparationIfNecessary(); + + EMITTER_MANIP intFmt = m_pState->GetIntFormat(); + switch(intFmt) { + case Dec: + str << std::dec; + break; + case Hex: + str << "0x"; + str << std::hex; + break; + case Oct: + str << "0"; + str << std::oct; + break; + default: + assert(false); + } + } + + void Emitter::PreWriteStreamable(std::stringstream&) + { + PreAtomicWrite(); + EmitSeparationIfNecessary(); + } + + unsigned Emitter::GetFloatPrecision() const + { + return m_pState->GetFloatPrecision(); + } + + unsigned Emitter::GetDoublePrecision() const + { + return m_pState->GetDoublePrecision(); + } + + void Emitter::PostWriteIntegralType(const std::stringstream& str) + { + m_stream << str.str(); + PostAtomicWrite(); + } + + void Emitter::PostWriteStreamable(const std::stringstream& str) + { + m_stream << str.str(); + PostAtomicWrite(); + } + + const char *Emitter::ComputeFullBoolName(bool b) const + { + const EMITTER_MANIP mainFmt = (m_pState->GetBoolLengthFormat() == ShortBool ? YesNoBool : m_pState->GetBoolFormat()); + const EMITTER_MANIP caseFmt = m_pState->GetBoolCaseFormat(); + switch(mainFmt) { + case YesNoBool: + switch(caseFmt) { + case UpperCase: return b ? "YES" : "NO"; + case CamelCase: return b ? "Yes" : "No"; + case LowerCase: return b ? "yes" : "no"; + default: break; + } + break; + case OnOffBool: + switch(caseFmt) { + case UpperCase: return b ? "ON" : "OFF"; + case CamelCase: return b ? "On" : "Off"; + case LowerCase: return b ? "on" : "off"; + default: break; + } + break; + case TrueFalseBool: + switch(caseFmt) { + case UpperCase: return b ? "TRUE" : "FALSE"; + case CamelCase: return b ? "True" : "False"; + case LowerCase: return b ? "true" : "false"; + default: break; + } + break; + default: + break; + } + return b ? "y" : "n"; // should never get here, but it can't hurt to give these answers + } + + Emitter& Emitter::Write(bool b) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + + const char *name = ComputeFullBoolName(b); + if(m_pState->GetBoolLengthFormat() == ShortBool) + m_stream << name[0]; + else + m_stream << name; + + PostAtomicWrite(); + return *this; + } + + Emitter& Emitter::Write(char ch) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + + Utils::WriteChar(m_stream, ch); + + PostAtomicWrite(); + return *this; + } + + Emitter& Emitter::Write(const _Alias& alias) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + if(!Utils::WriteAlias(m_stream, alias.content)) { + m_pState->SetError(ErrorMsg::INVALID_ALIAS); + return *this; + } + PostAtomicWrite(); + return *this; + } + + Emitter& Emitter::Write(const _Anchor& anchor) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + if(!Utils::WriteAnchor(m_stream, anchor.content)) { + m_pState->SetError(ErrorMsg::INVALID_ANCHOR); + return *this; + } + m_pState->RequireHardSeparation(); + // Note: no PostAtomicWrite() because we need another value for this node + return *this; + } + + Emitter& Emitter::Write(const _Tag& tag) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + + bool success = false; + if(tag.type == _Tag::Type::Verbatim) + success = Utils::WriteTag(m_stream, tag.content, true); + else if(tag.type == _Tag::Type::PrimaryHandle) + success = Utils::WriteTag(m_stream, tag.content, false); + else + success = Utils::WriteTagWithPrefix(m_stream, tag.prefix, tag.content); + + if(!success) { + m_pState->SetError(ErrorMsg::INVALID_TAG); + return *this; + } + + m_pState->RequireHardSeparation(); + // Note: no PostAtomicWrite() because we need another value for this node + return *this; + } + + void Emitter::EmitKindTag() + { + Write(LocalTag("")); + } + + Emitter& Emitter::Write(const _Comment& comment) + { + if(!good()) + return *this; + + if(m_stream.col() > 0) + m_stream << Indentation(m_pState->GetPreCommentIndent()); + Utils::WriteComment(m_stream, comment.content, m_pState->GetPostCommentIndent()); + m_pState->RequireHardSeparation(); + m_pState->ForceHardSeparation(); + + return *this; + } + + Emitter& Emitter::Write(const _Null& /*null*/) + { + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + m_stream << "~"; + PostAtomicWrite(); + return *this; + } + + Emitter& Emitter::Write(const Binary& binary) + { + Write(SecondaryTag("binary")); + + if(!good()) + return *this; + + PreAtomicWrite(); + EmitSeparationIfNecessary(); + Utils::WriteBinary(m_stream, binary); + PostAtomicWrite(); + return *this; + } +} + diff --git a/yaml-cpp/src/emitterstate.cpp b/yaml-cpp/src/emitterstate.cpp new file mode 100644 index 0000000..562e82c --- /dev/null +++ b/yaml-cpp/src/emitterstate.cpp @@ -0,0 +1,284 @@ +#include "emitterstate.h" +#include "yaml-cpp/exceptions.h" +#include + +namespace YAML +{ + EmitterState::EmitterState(): m_isGood(true), m_curIndent(0), m_requiresSoftSeparation(false), m_requiresHardSeparation(false) + { + // start up + m_stateStack.push(ES_WAITING_FOR_DOC); + + // set default global manipulators + m_charset.set(EmitNonAscii); + m_strFmt.set(Auto); + m_boolFmt.set(TrueFalseBool); + m_boolLengthFmt.set(LongBool); + m_boolCaseFmt.set(LowerCase); + m_intFmt.set(Dec); + m_indent.set(2); + m_preCommentIndent.set(2); + m_postCommentIndent.set(1); + m_seqFmt.set(Block); + m_mapFmt.set(Block); + m_mapKeyFmt.set(Auto); + m_floatPrecision.set(6); + m_doublePrecision.set(15); + } + + EmitterState::~EmitterState() + { + } + + // SetLocalValue + // . We blindly tries to set all possible formatters to this value + // . Only the ones that make sense will be accepted + void EmitterState::SetLocalValue(EMITTER_MANIP value) + { + SetOutputCharset(value, LOCAL); + SetStringFormat(value, LOCAL); + SetBoolFormat(value, LOCAL); + SetBoolCaseFormat(value, LOCAL); + SetBoolLengthFormat(value, LOCAL); + SetIntFormat(value, LOCAL); + SetFlowType(GT_SEQ, value, LOCAL); + SetFlowType(GT_MAP, value, LOCAL); + SetMapKeyFormat(value, LOCAL); + } + + void EmitterState::BeginGroup(GROUP_TYPE type) + { + unsigned lastIndent = (m_groups.empty() ? 0 : m_groups.top().indent); + m_curIndent += lastIndent; + + std::auto_ptr pGroup(new Group(type)); + + // transfer settings (which last until this group is done) + pGroup->modifiedSettings = m_modifiedSettings; + + // set up group + pGroup->flow = GetFlowType(type); + pGroup->indent = GetIndent(); + pGroup->usingLongKey = (GetMapKeyFormat() == LongKey ? true : false); + + m_groups.push(pGroup); + } + + void EmitterState::EndGroup(GROUP_TYPE type) + { + if(m_groups.empty()) + return SetError(ErrorMsg::UNMATCHED_GROUP_TAG); + + // get rid of the current group + { + std::auto_ptr pFinishedGroup = m_groups.pop(); + if(pFinishedGroup->type != type) + return SetError(ErrorMsg::UNMATCHED_GROUP_TAG); + } + + // reset old settings + unsigned lastIndent = (m_groups.empty() ? 0 : m_groups.top().indent); + assert(m_curIndent >= lastIndent); + m_curIndent -= lastIndent; + + // some global settings that we changed may have been overridden + // by a local setting we just popped, so we need to restore them + m_globalModifiedSettings.restore(); + } + + GROUP_TYPE EmitterState::GetCurGroupType() const + { + if(m_groups.empty()) + return GT_NONE; + + return m_groups.top().type; + } + + FLOW_TYPE EmitterState::GetCurGroupFlowType() const + { + if(m_groups.empty()) + return FT_NONE; + + return (m_groups.top().flow == Flow ? FT_FLOW : FT_BLOCK); + } + + bool EmitterState::CurrentlyInLongKey() + { + if(m_groups.empty()) + return false; + return m_groups.top().usingLongKey; + } + + void EmitterState::StartLongKey() + { + if(!m_groups.empty()) + m_groups.top().usingLongKey = true; + } + + void EmitterState::StartSimpleKey() + { + if(!m_groups.empty()) + m_groups.top().usingLongKey = false; + } + + void EmitterState::ClearModifiedSettings() + { + m_modifiedSettings.clear(); + } + + bool EmitterState::SetOutputCharset(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case EmitNonAscii: + case EscapeNonAscii: + _Set(m_charset, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetStringFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case Auto: + case SingleQuoted: + case DoubleQuoted: + case Literal: + _Set(m_strFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetBoolFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case OnOffBool: + case TrueFalseBool: + case YesNoBool: + _Set(m_boolFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetBoolLengthFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case LongBool: + case ShortBool: + _Set(m_boolLengthFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetBoolCaseFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case UpperCase: + case LowerCase: + case CamelCase: + _Set(m_boolCaseFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetIntFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case Dec: + case Hex: + case Oct: + _Set(m_intFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetIndent(unsigned value, FMT_SCOPE scope) + { + if(value == 0) + return false; + + _Set(m_indent, value, scope); + return true; + } + + bool EmitterState::SetPreCommentIndent(unsigned value, FMT_SCOPE scope) + { + if(value == 0) + return false; + + _Set(m_preCommentIndent, value, scope); + return true; + } + + bool EmitterState::SetPostCommentIndent(unsigned value, FMT_SCOPE scope) + { + if(value == 0) + return false; + + _Set(m_postCommentIndent, value, scope); + return true; + } + + bool EmitterState::SetFlowType(GROUP_TYPE groupType, EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case Block: + case Flow: + _Set(groupType == GT_SEQ ? m_seqFmt : m_mapFmt, value, scope); + return true; + default: + return false; + } + } + + EMITTER_MANIP EmitterState::GetFlowType(GROUP_TYPE groupType) const + { + // force flow style if we're currently in a flow + FLOW_TYPE flowType = GetCurGroupFlowType(); + if(flowType == FT_FLOW) + return Flow; + + // otherwise, go with what's asked of use + return (groupType == GT_SEQ ? m_seqFmt.get() : m_mapFmt.get()); + } + + bool EmitterState::SetMapKeyFormat(EMITTER_MANIP value, FMT_SCOPE scope) + { + switch(value) { + case Auto: + case LongKey: + _Set(m_mapKeyFmt, value, scope); + return true; + default: + return false; + } + } + + bool EmitterState::SetFloatPrecision(int value, FMT_SCOPE scope) + { + if(value < 0 || value > std::numeric_limits::digits10) + return false; + _Set(m_floatPrecision, value, scope); + return true; + } + + bool EmitterState::SetDoublePrecision(int value, FMT_SCOPE scope) + { + if(value < 0 || value > std::numeric_limits::digits10) + return false; + _Set(m_doublePrecision, value, scope); + return true; + } +} + diff --git a/yaml-cpp/src/emitterstate.h b/yaml-cpp/src/emitterstate.h new file mode 100644 index 0000000..5698e32 --- /dev/null +++ b/yaml-cpp/src/emitterstate.h @@ -0,0 +1,217 @@ +#ifndef EMITTERSTATE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define EMITTERSTATE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "ptr_stack.h" +#include "setting.h" +#include "yaml-cpp/emittermanip.h" +#include +#include +#include +#include + +namespace YAML +{ + enum FMT_SCOPE { + LOCAL, + GLOBAL + }; + + enum GROUP_TYPE { + GT_NONE, + GT_SEQ, + GT_MAP + }; + + enum FLOW_TYPE { + FT_NONE, + FT_FLOW, + FT_BLOCK + }; + + enum NODE_STATE { + NS_START, + NS_READY_FOR_ATOM, + NS_END + }; + + enum EMITTER_STATE { + ES_WAITING_FOR_DOC, + ES_WRITING_DOC, + ES_DONE_WITH_DOC, + + // block seq + ES_WAITING_FOR_BLOCK_SEQ_ENTRY, + ES_WRITING_BLOCK_SEQ_ENTRY, + ES_DONE_WITH_BLOCK_SEQ_ENTRY, + + // flow seq + ES_WAITING_FOR_FLOW_SEQ_ENTRY, + ES_WRITING_FLOW_SEQ_ENTRY, + ES_DONE_WITH_FLOW_SEQ_ENTRY, + + // block map + ES_WAITING_FOR_BLOCK_MAP_ENTRY, + ES_WAITING_FOR_BLOCK_MAP_KEY, + ES_WRITING_BLOCK_MAP_KEY, + ES_DONE_WITH_BLOCK_MAP_KEY, + ES_WAITING_FOR_BLOCK_MAP_VALUE, + ES_WRITING_BLOCK_MAP_VALUE, + ES_DONE_WITH_BLOCK_MAP_VALUE, + + // flow map + ES_WAITING_FOR_FLOW_MAP_ENTRY, + ES_WAITING_FOR_FLOW_MAP_KEY, + ES_WRITING_FLOW_MAP_KEY, + ES_DONE_WITH_FLOW_MAP_KEY, + ES_WAITING_FOR_FLOW_MAP_VALUE, + ES_WRITING_FLOW_MAP_VALUE, + ES_DONE_WITH_FLOW_MAP_VALUE + }; + + class EmitterState + { + public: + EmitterState(); + ~EmitterState(); + + // basic state checking + bool good() const { return m_isGood; } + const std::string GetLastError() const { return m_lastError; } + void SetError(const std::string& error) { m_isGood = false; m_lastError = error; } + + // main state of the machine + EMITTER_STATE GetCurState() const { return m_stateStack.top(); } + void SwitchState(EMITTER_STATE state) { PopState(); PushState(state); } + void PushState(EMITTER_STATE state) { m_stateStack.push(state); } + void PopState() { m_stateStack.pop(); } + + void SetLocalValue(EMITTER_MANIP value); + + // group handling + void BeginGroup(GROUP_TYPE type); + void EndGroup(GROUP_TYPE type); + + GROUP_TYPE GetCurGroupType() const; + FLOW_TYPE GetCurGroupFlowType() const; + int GetCurIndent() const { return m_curIndent; } + + bool CurrentlyInLongKey(); + void StartLongKey(); + void StartSimpleKey(); + + bool RequiresSoftSeparation() const { return m_requiresSoftSeparation; } + bool RequiresHardSeparation() const { return m_requiresHardSeparation; } + void RequireSoftSeparation() { m_requiresSoftSeparation = true; } + void RequireHardSeparation() { m_requiresSoftSeparation = true; m_requiresHardSeparation = true; } + void ForceHardSeparation() { m_requiresSoftSeparation = false; } + void UnsetSeparation() { m_requiresSoftSeparation = false; m_requiresHardSeparation = false; } + + void ClearModifiedSettings(); + + // formatters + bool SetOutputCharset(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetOutputCharset() const { return m_charset.get(); } + + bool SetStringFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetStringFormat() const { return m_strFmt.get(); } + + bool SetBoolFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetBoolFormat() const { return m_boolFmt.get(); } + + bool SetBoolLengthFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetBoolLengthFormat() const { return m_boolLengthFmt.get(); } + + bool SetBoolCaseFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetBoolCaseFormat() const { return m_boolCaseFmt.get(); } + + bool SetIntFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetIntFormat() const { return m_intFmt.get(); } + + bool SetIndent(unsigned value, FMT_SCOPE scope); + int GetIndent() const { return m_indent.get(); } + + bool SetPreCommentIndent(unsigned value, FMT_SCOPE scope); + int GetPreCommentIndent() const { return m_preCommentIndent.get(); } + bool SetPostCommentIndent(unsigned value, FMT_SCOPE scope); + int GetPostCommentIndent() const { return m_postCommentIndent.get(); } + + bool SetFlowType(GROUP_TYPE groupType, EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetFlowType(GROUP_TYPE groupType) const; + + bool SetMapKeyFormat(EMITTER_MANIP value, FMT_SCOPE scope); + EMITTER_MANIP GetMapKeyFormat() const { return m_mapKeyFmt.get(); } + + bool SetFloatPrecision(int value, FMT_SCOPE scope); + unsigned GetFloatPrecision() const { return m_floatPrecision.get(); } + bool SetDoublePrecision(int value, FMT_SCOPE scope); + unsigned GetDoublePrecision() const { return m_doublePrecision.get(); } + + private: + template + void _Set(Setting& fmt, T value, FMT_SCOPE scope); + + private: + // basic state ok? + bool m_isGood; + std::string m_lastError; + + // other state + std::stack m_stateStack; + + Setting m_charset; + Setting m_strFmt; + Setting m_boolFmt; + Setting m_boolLengthFmt; + Setting m_boolCaseFmt; + Setting m_intFmt; + Setting m_indent; + Setting m_preCommentIndent, m_postCommentIndent; + Setting m_seqFmt; + Setting m_mapFmt; + Setting m_mapKeyFmt; + Setting m_floatPrecision; + Setting m_doublePrecision; + + SettingChanges m_modifiedSettings; + SettingChanges m_globalModifiedSettings; + + struct Group { + Group(GROUP_TYPE type_): type(type_), usingLongKey(false), indent(0) {} + + GROUP_TYPE type; + EMITTER_MANIP flow; + bool usingLongKey; + int indent; + + SettingChanges modifiedSettings; + }; + + ptr_stack m_groups; + unsigned m_curIndent; + bool m_requiresSoftSeparation; + bool m_requiresHardSeparation; + }; + + template + void EmitterState::_Set(Setting& fmt, T value, FMT_SCOPE scope) { + switch(scope) { + case LOCAL: + m_modifiedSettings.push(fmt.set(value)); + break; + case GLOBAL: + fmt.set(value); + m_globalModifiedSettings.push(fmt.set(value)); // this pushes an identity set, so when we restore, + // it restores to the value here, and not the previous one + break; + default: + assert(false); + } + } +} + +#endif // EMITTERSTATE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/emitterutils.cpp b/yaml-cpp/src/emitterutils.cpp new file mode 100644 index 0000000..3d184d6 --- /dev/null +++ b/yaml-cpp/src/emitterutils.cpp @@ -0,0 +1,378 @@ +#include "emitterutils.h" +#include "exp.h" +#include "indentation.h" +#include "yaml-cpp/binary.h" +#include "yaml-cpp/exceptions.h" +#include "stringsource.h" +#include +#include + +namespace YAML +{ + namespace Utils + { + namespace { + enum {REPLACEMENT_CHARACTER = 0xFFFD}; + + bool IsAnchorChar(int ch) { // test for ns-anchor-char + switch (ch) { + case ',': case '[': case ']': case '{': case '}': // c-flow-indicator + case ' ': case '\t': // s-white + case 0xFEFF: // c-byte-order-mark + case 0xA: case 0xD: // b-char + return false; + case 0x85: + return true; + } + + if (ch < 0x20) + return false; + + if (ch < 0x7E) + return true; + + if (ch < 0xA0) + return false; + if (ch >= 0xD800 && ch <= 0xDFFF) + return false; + if ((ch & 0xFFFE) == 0xFFFE) + return false; + if ((ch >= 0xFDD0) && (ch <= 0xFDEF)) + return false; + if (ch > 0x10FFFF) + return false; + + return true; + } + + int Utf8BytesIndicated(char ch) { + int byteVal = static_cast(ch); + switch (byteVal >> 4) { + case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: + return 1; + case 12: case 13: + return 2; + case 14: + return 3; + case 15: + return 4; + default: + return -1; + } + } + + bool IsTrailingByte(char ch) { + return (ch & 0xC0) == 0x80; + } + + bool GetNextCodePointAndAdvance(int& codePoint, std::string::const_iterator& first, std::string::const_iterator last) { + if (first == last) + return false; + + int nBytes = Utf8BytesIndicated(*first); + if (nBytes < 1) { + // Bad lead byte + ++first; + codePoint = REPLACEMENT_CHARACTER; + return true; + } + + if (nBytes == 1) { + codePoint = *first++; + return true; + } + + // Gather bits from trailing bytes + codePoint = static_cast(*first) & ~(0xFF << (7 - nBytes)); + ++first; + --nBytes; + for (; nBytes > 0; ++first, --nBytes) { + if ((first == last) || !IsTrailingByte(*first)) { + codePoint = REPLACEMENT_CHARACTER; + break; + } + codePoint <<= 6; + codePoint |= *first & 0x3F; + } + + // Check for illegal code points + if (codePoint > 0x10FFFF) + codePoint = REPLACEMENT_CHARACTER; + else if (codePoint >= 0xD800 && codePoint <= 0xDFFF) + codePoint = REPLACEMENT_CHARACTER; + else if ((codePoint & 0xFFFE) == 0xFFFE) + codePoint = REPLACEMENT_CHARACTER; + else if (codePoint >= 0xFDD0 && codePoint <= 0xFDEF) + codePoint = REPLACEMENT_CHARACTER; + return true; + } + + void WriteCodePoint(ostream& out, int codePoint) { + if (codePoint < 0 || codePoint > 0x10FFFF) { + codePoint = REPLACEMENT_CHARACTER; + } + if (codePoint < 0x7F) { + out << static_cast(codePoint); + } else if (codePoint < 0x7FF) { + out << static_cast(0xC0 | (codePoint >> 6)) + << static_cast(0x80 | (codePoint & 0x3F)); + } else if (codePoint < 0xFFFF) { + out << static_cast(0xE0 | (codePoint >> 12)) + << static_cast(0x80 | ((codePoint >> 6) & 0x3F)) + << static_cast(0x80 | (codePoint & 0x3F)); + } else { + out << static_cast(0xF0 | (codePoint >> 18)) + << static_cast(0x80 | ((codePoint >> 12) & 0x3F)) + << static_cast(0x80 | ((codePoint >> 6) & 0x3F)) + << static_cast(0x80 | (codePoint & 0x3F)); + } + } + + bool IsValidPlainScalar(const std::string& str, bool inFlow, bool allowOnlyAscii) { + if(str.empty()) + return false; + + // first check the start + const RegEx& start = (inFlow ? Exp::PlainScalarInFlow() : Exp::PlainScalar()); + if(!start.Matches(str)) + return false; + + // and check the end for plain whitespace (which can't be faithfully kept in a plain scalar) + if(!str.empty() && *str.rbegin() == ' ') + return false; + + // then check until something is disallowed + const RegEx& disallowed = (inFlow ? Exp::EndScalarInFlow() : Exp::EndScalar()) + || (Exp::BlankOrBreak() + Exp::Comment()) + || Exp::NotPrintable() + || Exp::Utf8_ByteOrderMark() + || Exp::Break() + || Exp::Tab(); + StringCharSource buffer(str.c_str(), str.size()); + while(buffer) { + if(disallowed.Matches(buffer)) + return false; + if(allowOnlyAscii && (0x7F < static_cast(buffer[0]))) + return false; + ++buffer; + } + + return true; + } + + void WriteDoubleQuoteEscapeSequence(ostream& out, int codePoint) { + static const char hexDigits[] = "0123456789abcdef"; + + char escSeq[] = "\\U00000000"; + int digits = 8; + if (codePoint < 0xFF) { + escSeq[1] = 'x'; + digits = 2; + } else if (codePoint < 0xFFFF) { + escSeq[1] = 'u'; + digits = 4; + } + + // Write digits into the escape sequence + int i = 2; + for (; digits > 0; --digits, ++i) { + escSeq[i] = hexDigits[(codePoint >> (4 * (digits - 1))) & 0xF]; + } + + escSeq[i] = 0; // terminate with NUL character + out << escSeq; + } + + bool WriteAliasName(ostream& out, const std::string& str) { + int codePoint; + for(std::string::const_iterator i = str.begin(); + GetNextCodePointAndAdvance(codePoint, i, str.end()); + ) + { + if (!IsAnchorChar(codePoint)) + return false; + + WriteCodePoint(out, codePoint); + } + return true; + } + } + + bool WriteString(ostream& out, const std::string& str, bool inFlow, bool escapeNonAscii) + { + if(IsValidPlainScalar(str, inFlow, escapeNonAscii)) { + out << str; + return true; + } else + return WriteDoubleQuotedString(out, str, escapeNonAscii); + } + + bool WriteSingleQuotedString(ostream& out, const std::string& str) + { + out << "'"; + int codePoint; + for(std::string::const_iterator i = str.begin(); + GetNextCodePointAndAdvance(codePoint, i, str.end()); + ) + { + if (codePoint == '\n') + return false; // We can't handle a new line and the attendant indentation yet + + if (codePoint == '\'') + out << "''"; + else + WriteCodePoint(out, codePoint); + } + out << "'"; + return true; + } + + bool WriteDoubleQuotedString(ostream& out, const std::string& str, bool escapeNonAscii) + { + out << "\""; + int codePoint; + for(std::string::const_iterator i = str.begin(); + GetNextCodePointAndAdvance(codePoint, i, str.end()); + ) + { + if (codePoint == '\"') + out << "\\\""; + else if (codePoint == '\\') + out << "\\\\"; + else if (codePoint < 0x20 || (codePoint >= 0x80 && codePoint <= 0xA0)) // Control characters and non-breaking space + WriteDoubleQuoteEscapeSequence(out, codePoint); + else if (codePoint == 0xFEFF) // Byte order marks (ZWNS) should be escaped (YAML 1.2, sec. 5.2) + WriteDoubleQuoteEscapeSequence(out, codePoint); + else if (escapeNonAscii && codePoint > 0x7E) + WriteDoubleQuoteEscapeSequence(out, codePoint); + else + WriteCodePoint(out, codePoint); + } + out << "\""; + return true; + } + + bool WriteLiteralString(ostream& out, const std::string& str, int indent) + { + out << "|\n"; + out << IndentTo(indent); + int codePoint; + for(std::string::const_iterator i = str.begin(); + GetNextCodePointAndAdvance(codePoint, i, str.end()); + ) + { + if (codePoint == '\n') + out << "\n" << IndentTo(indent); + else + WriteCodePoint(out, codePoint); + } + return true; + } + + bool WriteChar(ostream& out, char ch) + { + if(('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')) + out << ch; + else if((0x20 <= ch && ch <= 0x7e) || ch == ' ') + out << "\"" << ch << "\""; + else if(ch == '\t') + out << "\"\\t\""; + else if(ch == '\n') + out << "\"\\n\""; + else if(ch == '\b') + out << "\"\\b\""; + else { + out << "\""; + WriteDoubleQuoteEscapeSequence(out, ch); + out << "\""; + } + return true; + } + + bool WriteComment(ostream& out, const std::string& str, int postCommentIndent) + { + const unsigned curIndent = out.col(); + out << "#" << Indentation(postCommentIndent); + int codePoint; + for(std::string::const_iterator i = str.begin(); + GetNextCodePointAndAdvance(codePoint, i, str.end()); + ) + { + if(codePoint == '\n') + out << "\n" << IndentTo(curIndent) << "#" << Indentation(postCommentIndent); + else + WriteCodePoint(out, codePoint); + } + return true; + } + + bool WriteAlias(ostream& out, const std::string& str) + { + out << "*"; + return WriteAliasName(out, str); + } + + bool WriteAnchor(ostream& out, const std::string& str) + { + out << "&"; + return WriteAliasName(out, str); + } + + bool WriteTag(ostream& out, const std::string& str, bool verbatim) + { + out << (verbatim ? "!<" : "!"); + StringCharSource buffer(str.c_str(), str.size()); + const RegEx& reValid = verbatim ? Exp::URI() : Exp::Tag(); + while(buffer) { + int n = reValid.Match(buffer); + if(n <= 0) + return false; + + while(--n >= 0) { + out << buffer[0]; + ++buffer; + } + } + if (verbatim) + out << ">"; + return true; + } + + bool WriteTagWithPrefix(ostream& out, const std::string& prefix, const std::string& tag) + { + out << "!"; + StringCharSource prefixBuffer(prefix.c_str(), prefix.size()); + while(prefixBuffer) { + int n = Exp::URI().Match(prefixBuffer); + if(n <= 0) + return false; + + while(--n >= 0) { + out << prefixBuffer[0]; + ++prefixBuffer; + } + } + + out << "!"; + StringCharSource tagBuffer(tag.c_str(), tag.size()); + while(tagBuffer) { + int n = Exp::Tag().Match(tagBuffer); + if(n <= 0) + return false; + + while(--n >= 0) { + out << tagBuffer[0]; + ++tagBuffer; + } + } + return true; + } + + bool WriteBinary(ostream& out, const Binary& binary) + { + WriteDoubleQuotedString(out, EncodeBase64(binary.data(), binary.size()), false); + return true; + } + } +} + diff --git a/yaml-cpp/src/emitterutils.h b/yaml-cpp/src/emitterutils.h new file mode 100644 index 0000000..0e270d6 --- /dev/null +++ b/yaml-cpp/src/emitterutils.h @@ -0,0 +1,32 @@ +#ifndef EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/ostream.h" +#include + +namespace YAML +{ + class Binary; + + namespace Utils + { + bool WriteString(ostream& out, const std::string& str, bool inFlow, bool escapeNonAscii); + bool WriteSingleQuotedString(ostream& out, const std::string& str); + bool WriteDoubleQuotedString(ostream& out, const std::string& str, bool escapeNonAscii); + bool WriteLiteralString(ostream& out, const std::string& str, int indent); + bool WriteChar(ostream& out, char ch); + bool WriteComment(ostream& out, const std::string& str, int postCommentIndent); + bool WriteAlias(ostream& out, const std::string& str); + bool WriteAnchor(ostream& out, const std::string& str); + bool WriteTag(ostream& out, const std::string& str, bool verbatim); + bool WriteTagWithPrefix(ostream& out, const std::string& prefix, const std::string& tag); + bool WriteBinary(ostream& out, const Binary& binary); + } +} + +#endif // EMITTERUTILS_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/exp.cpp b/yaml-cpp/src/exp.cpp new file mode 100644 index 0000000..7bc5454 --- /dev/null +++ b/yaml-cpp/src/exp.cpp @@ -0,0 +1,113 @@ +#include "exp.h" +#include "yaml-cpp/exceptions.h" +#include + +namespace YAML +{ + namespace Exp + { + unsigned ParseHex(const std::string& str, const Mark& mark) + { + unsigned value = 0; + for(std::size_t i=0;i(ch)); + } + + // Escape + // . Translates the next 'codeLength' characters into a hex number and returns the result. + // . Throws if it's not actually hex. + std::string Escape(Stream& in, int codeLength) + { + // grab string + std::string str; + for(int i=0;i= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF) { + std::stringstream msg; + msg << ErrorMsg::INVALID_UNICODE << value; + throw ParserException(in.mark(), msg.str()); + } + + // now break it up into chars + if(value <= 0x7F) + return Str(value); + else if(value <= 0x7FF) + return Str(0xC0 + (value >> 6)) + Str(0x80 + (value & 0x3F)); + else if(value <= 0xFFFF) + return Str(0xE0 + (value >> 12)) + Str(0x80 + ((value >> 6) & 0x3F)) + Str(0x80 + (value & 0x3F)); + else + return Str(0xF0 + (value >> 18)) + Str(0x80 + ((value >> 12) & 0x3F)) + + Str(0x80 + ((value >> 6) & 0x3F)) + Str(0x80 + (value & 0x3F)); + } + + // Escape + // . Escapes the sequence starting 'in' (it must begin with a '\' or single quote) + // and returns the result. + // . Throws if it's an unknown escape character. + std::string Escape(Stream& in) + { + // eat slash + char escape = in.get(); + + // switch on escape character + char ch = in.get(); + + // first do single quote, since it's easier + if(escape == '\'' && ch == '\'') + return "\'"; + + // now do the slash (we're not gonna check if it's a slash - you better pass one!) + switch(ch) { + case '0': return std::string(1, '\x00'); + case 'a': return "\x07"; + case 'b': return "\x08"; + case 't': + case '\t': return "\x09"; + case 'n': return "\x0A"; + case 'v': return "\x0B"; + case 'f': return "\x0C"; + case 'r': return "\x0D"; + case 'e': return "\x1B"; + case ' ': return "\x20"; + case '\"': return "\""; + case '\'': return "\'"; + case '\\': return "\\"; + case '/': return "/"; + case 'N': return "\x85"; + case '_': return "\xA0"; + case 'L': return "\xE2\x80\xA8"; // LS (#x2028) + case 'P': return "\xE2\x80\xA9"; // PS (#x2029) + case 'x': return Escape(in, 2); + case 'u': return Escape(in, 4); + case 'U': return Escape(in, 8); + } + + std::stringstream msg; + throw ParserException(in.mark(), std::string(ErrorMsg::INVALID_ESCAPE) + ch); + } + } +} diff --git a/yaml-cpp/src/exp.h b/yaml-cpp/src/exp.h new file mode 100644 index 0000000..3e12aba --- /dev/null +++ b/yaml-cpp/src/exp.h @@ -0,0 +1,196 @@ +#ifndef EXP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define EXP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "regex.h" +#include +#include +#include "stream.h" + +namespace YAML +{ + //////////////////////////////////////////////////////////////////////////////// + // Here we store a bunch of expressions for matching different parts of the file. + + namespace Exp + { + // misc + inline const RegEx& Space() { + static const RegEx e = RegEx(' '); + return e; + } + inline const RegEx& Tab() { + static const RegEx e = RegEx('\t'); + return e; + } + inline const RegEx& Blank() { + static const RegEx e = Space() || Tab(); + return e; + } + inline const RegEx& Break() { + static const RegEx e = RegEx('\n') || RegEx("\r\n"); + return e; + } + inline const RegEx& BlankOrBreak() { + static const RegEx e = Blank() || Break(); + return e; + } + inline const RegEx& Digit() { + static const RegEx e = RegEx('0', '9'); + return e; + } + inline const RegEx& Alpha() { + static const RegEx e = RegEx('a', 'z') || RegEx('A', 'Z'); + return e; + } + inline const RegEx& AlphaNumeric() { + static const RegEx e = Alpha() || Digit(); + return e; + } + inline const RegEx& Word() { + static const RegEx e = AlphaNumeric() || RegEx('-'); + return e; + } + inline const RegEx& Hex() { + static const RegEx e = Digit() || RegEx('A', 'F') || RegEx('a', 'f'); + return e; + } + // Valid Unicode code points that are not part of c-printable (YAML 1.2, sec. 5.1) + inline const RegEx& NotPrintable() { + static const RegEx e = RegEx(0) || + RegEx("\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x7F", REGEX_OR) || + RegEx(0x0E, 0x1F) || + (RegEx('\xC2') + (RegEx('\x80', '\x84') || RegEx('\x86', '\x9F'))); + return e; + } + inline const RegEx& Utf8_ByteOrderMark() { + static const RegEx e = RegEx("\xEF\xBB\xBF"); + return e; + } + + // actual tags + + inline const RegEx& DocStart() { + static const RegEx e = RegEx("---") + (BlankOrBreak() || RegEx()); + return e; + } + inline const RegEx& DocEnd() { + static const RegEx e = RegEx("...") + (BlankOrBreak() || RegEx()); + return e; + } + inline const RegEx& DocIndicator() { + static const RegEx e = DocStart() || DocEnd(); + return e; + } + inline const RegEx& BlockEntry() { + static const RegEx e = RegEx('-') + (BlankOrBreak() || RegEx()); + return e; + } + inline const RegEx& Key() { + static const RegEx e = RegEx('?'); + return e; + } + inline const RegEx& KeyInFlow() { + static const RegEx e = RegEx('?') + BlankOrBreak(); + return e; + } + inline const RegEx& Value() { + static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx()); + return e; + } + inline const RegEx& ValueInFlow() { + static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx(",}", REGEX_OR)); + return e; + } + inline const RegEx& ValueInJSONFlow() { + static const RegEx e = RegEx(':'); + return e; + } + inline const RegEx Comment() { + static const RegEx e = RegEx('#'); + return e; + } + inline const RegEx& Anchor() { + static const RegEx e = !(RegEx("[]{},", REGEX_OR) || BlankOrBreak()); + return e; + } + inline const RegEx& AnchorEnd() { + static const RegEx e = RegEx("?:,]}%@`", REGEX_OR) || BlankOrBreak(); + return e; + } + inline const RegEx& URI() { + static const RegEx e = Word() || RegEx("#;/?:@&=+$,_.!~*'()[]", REGEX_OR) || (RegEx('%') + Hex() + Hex()); + return e; + } + inline const RegEx& Tag() { + static const RegEx e = Word() || RegEx("#;/?:@&=+$_.~*'", REGEX_OR) || (RegEx('%') + Hex() + Hex()); + return e; + } + + // Plain scalar rules: + // . Cannot start with a blank. + // . Can never start with any of , [ ] { } # & * ! | > \' \" % @ ` + // . In the block context - ? : must be not be followed with a space. + // . In the flow context ? is illegal and : and - must not be followed with a space. + inline const RegEx& PlainScalar() { + static const RegEx e = !(BlankOrBreak() || RegEx(",[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-?:", REGEX_OR) + (BlankOrBreak() || RegEx()))); + return e; + } + inline const RegEx& PlainScalarInFlow() { + static const RegEx e = !(BlankOrBreak() || RegEx("?,[]{}#&*!|>\'\"%@`", REGEX_OR) || (RegEx("-:", REGEX_OR) + Blank())); + return e; + } + inline const RegEx& EndScalar() { + static const RegEx e = RegEx(':') + (BlankOrBreak() || RegEx()); + return e; + } + inline const RegEx& EndScalarInFlow() { + static const RegEx e = (RegEx(':') + (BlankOrBreak() || RegEx() || RegEx(",]}", REGEX_OR))) || RegEx(",?[]{}", REGEX_OR); + return e; + } + + inline const RegEx& EscSingleQuote() { + static const RegEx e = RegEx("\'\'"); + return e; + } + inline const RegEx& EscBreak() { + static const RegEx e = RegEx('\\') + Break(); + return e; + } + + inline const RegEx& ChompIndicator() { + static const RegEx e = RegEx("+-", REGEX_OR); + return e; + } + inline const RegEx& Chomp() { + static const RegEx e = (ChompIndicator() + Digit()) || (Digit() + ChompIndicator()) || ChompIndicator() || Digit(); + return e; + } + + // and some functions + std::string Escape(Stream& in); + } + + namespace Keys + { + const char Directive = '%'; + const char FlowSeqStart = '['; + const char FlowSeqEnd = ']'; + const char FlowMapStart = '{'; + const char FlowMapEnd = '}'; + const char FlowEntry = ','; + const char Alias = '*'; + const char Anchor = '&'; + const char Tag = '!'; + const char LiteralScalar = '|'; + const char FoldedScalar = '>'; + const char VerbatimTagStart = '<'; + const char VerbatimTagEnd = '>'; + } +} + +#endif // EXP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/indentation.h b/yaml-cpp/src/indentation.h new file mode 100644 index 0000000..25f684f --- /dev/null +++ b/yaml-cpp/src/indentation.h @@ -0,0 +1,38 @@ +#ifndef INDENTATION_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define INDENTATION_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/ostream.h" +#include + +namespace YAML +{ + struct Indentation { + Indentation(unsigned n_): n(n_) {} + unsigned n; + }; + + inline ostream& operator << (ostream& out, const Indentation& indent) { + for(unsigned i=0;i pData): m_pData(pData) + { + } + + Iterator::Iterator(const Iterator& rhs): m_pData(new IterPriv(*rhs.m_pData)) + { + } + + Iterator& Iterator::operator = (const Iterator& rhs) + { + if(this == &rhs) + return *this; + + m_pData.reset(new IterPriv(*rhs.m_pData)); + return *this; + } + + Iterator::~Iterator() + { + } + + Iterator& Iterator::operator ++ () + { + if(m_pData->type == IterPriv::IT_SEQ) + ++m_pData->seqIter; + else if(m_pData->type == IterPriv::IT_MAP) + ++m_pData->mapIter; + + return *this; + } + + Iterator Iterator::operator ++ (int) + { + Iterator temp = *this; + + if(m_pData->type == IterPriv::IT_SEQ) + ++m_pData->seqIter; + else if(m_pData->type == IterPriv::IT_MAP) + ++m_pData->mapIter; + + return temp; + } + + const Node& Iterator::operator * () const + { + if(m_pData->type == IterPriv::IT_SEQ) + return **m_pData->seqIter; + + throw BadDereference(); + } + + const Node *Iterator::operator -> () const + { + if(m_pData->type == IterPriv::IT_SEQ) + return *m_pData->seqIter; + + throw BadDereference(); + } + + const Node& Iterator::first() const + { + if(m_pData->type == IterPriv::IT_MAP) + return *m_pData->mapIter->first; + + throw BadDereference(); + } + + const Node& Iterator::second() const + { + if(m_pData->type == IterPriv::IT_MAP) + return *m_pData->mapIter->second; + + throw BadDereference(); + } + + bool operator == (const Iterator& it, const Iterator& jt) + { + if(it.m_pData->type != jt.m_pData->type) + return false; + + if(it.m_pData->type == IterPriv::IT_SEQ) + return it.m_pData->seqIter == jt.m_pData->seqIter; + else if(it.m_pData->type == IterPriv::IT_MAP) + return it.m_pData->mapIter == jt.m_pData->mapIter; + + return true; + } + + bool operator != (const Iterator& it, const Iterator& jt) + { + return !(it == jt); + } +} diff --git a/yaml-cpp/src/iterpriv.h b/yaml-cpp/src/iterpriv.h new file mode 100644 index 0000000..c511e8a --- /dev/null +++ b/yaml-cpp/src/iterpriv.h @@ -0,0 +1,33 @@ +#ifndef ITERPRIV_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define ITERPRIV_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/ltnode.h" +#include +#include + +namespace YAML +{ + class Node; + + // IterPriv + // . The implementation for iterators - essentially a union of sequence and map iterators. + struct IterPriv + { + IterPriv(): type(IT_NONE) {} + IterPriv(std::vector ::const_iterator it): type(IT_SEQ), seqIter(it) {} + IterPriv(std::map ::const_iterator it): type(IT_MAP), mapIter(it) {} + + enum ITER_TYPE { IT_NONE, IT_SEQ, IT_MAP }; + ITER_TYPE type; + + std::vector ::const_iterator seqIter; + std::map ::const_iterator mapIter; + }; +} + +#endif // ITERPRIV_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/node.cpp b/yaml-cpp/src/node.cpp new file mode 100644 index 0000000..360b4ad --- /dev/null +++ b/yaml-cpp/src/node.cpp @@ -0,0 +1,269 @@ +#include "yaml-cpp/node.h" +#include "yaml-cpp/aliasmanager.h" +#include "yaml-cpp/emitfromevents.h" +#include "yaml-cpp/emitter.h" +#include "yaml-cpp/eventhandler.h" +#include "iterpriv.h" +#include "nodebuilder.h" +#include "nodeownership.h" +#include "scanner.h" +#include "tag.h" +#include "token.h" +#include +#include + +namespace YAML +{ + bool ltnode::operator()(const Node *pNode1, const Node *pNode2) const { + return *pNode1 < *pNode2; + } + + Node::Node(): m_pOwnership(new NodeOwnership), m_type(NodeType::Null) + { + } + + Node::Node(NodeOwnership& owner): m_pOwnership(new NodeOwnership(&owner)), m_type(NodeType::Null) + { + } + + Node::~Node() + { + Clear(); + } + + void Node::Clear() + { + m_pOwnership.reset(new NodeOwnership); + m_type = NodeType::Null; + m_tag.clear(); + m_scalarData.clear(); + m_seqData.clear(); + m_mapData.clear(); + } + + bool Node::IsAliased() const + { + return m_pOwnership->IsAliased(*this); + } + + Node& Node::CreateNode() + { + return m_pOwnership->Create(); + } + + std::auto_ptr Node::Clone() const + { + std::auto_ptr pNode(new Node); + NodeBuilder nodeBuilder(*pNode); + EmitEvents(nodeBuilder); + return pNode; + } + + void Node::EmitEvents(EventHandler& eventHandler) const + { + eventHandler.OnDocumentStart(m_mark); + AliasManager am; + EmitEvents(am, eventHandler); + eventHandler.OnDocumentEnd(); + } + + void Node::EmitEvents(AliasManager& am, EventHandler& eventHandler) const + { + anchor_t anchor = NullAnchor; + if(IsAliased()) { + anchor = am.LookupAnchor(*this); + if(anchor) { + eventHandler.OnAlias(m_mark, anchor); + return; + } + + am.RegisterReference(*this); + anchor = am.LookupAnchor(*this); + } + + switch(m_type) { + case NodeType::Null: + eventHandler.OnNull(m_mark, anchor); + break; + case NodeType::Scalar: + eventHandler.OnScalar(m_mark, m_tag, anchor, m_scalarData); + break; + case NodeType::Sequence: + eventHandler.OnSequenceStart(m_mark, m_tag, anchor); + for(std::size_t i=0;iEmitEvents(am, eventHandler); + eventHandler.OnSequenceEnd(); + break; + case NodeType::Map: + eventHandler.OnMapStart(m_mark, m_tag, anchor); + for(node_map::const_iterator it=m_mapData.begin();it!=m_mapData.end();++it) { + it->first->EmitEvents(am, eventHandler); + it->second->EmitEvents(am, eventHandler); + } + eventHandler.OnMapEnd(); + break; + } + } + + void Node::Init(NodeType::value type, const Mark& mark, const std::string& tag) + { + Clear(); + m_mark = mark; + m_type = type; + m_tag = tag; + } + + void Node::MarkAsAliased() + { + m_pOwnership->MarkAsAliased(*this); + } + + void Node::SetScalarData(const std::string& data) + { + assert(m_type == NodeType::Scalar); // TODO: throw? + m_scalarData = data; + } + + void Node::Append(Node& node) + { + assert(m_type == NodeType::Sequence); // TODO: throw? + m_seqData.push_back(&node); + } + + void Node::Insert(Node& key, Node& value) + { + assert(m_type == NodeType::Map); // TODO: throw? + m_mapData[&key] = &value; + } + + // begin + // Returns an iterator to the beginning of this (sequence or map). + Iterator Node::begin() const + { + switch(m_type) { + case NodeType::Null: + case NodeType::Scalar: + return Iterator(); + case NodeType::Sequence: + return Iterator(std::auto_ptr(new IterPriv(m_seqData.begin()))); + case NodeType::Map: + return Iterator(std::auto_ptr(new IterPriv(m_mapData.begin()))); + } + + assert(false); + return Iterator(); + } + + // end + // . Returns an iterator to the end of this (sequence or map). + Iterator Node::end() const + { + switch(m_type) { + case NodeType::Null: + case NodeType::Scalar: + return Iterator(); + case NodeType::Sequence: + return Iterator(std::auto_ptr(new IterPriv(m_seqData.end()))); + case NodeType::Map: + return Iterator(std::auto_ptr(new IterPriv(m_mapData.end()))); + } + + assert(false); + return Iterator(); + } + + // size + // . Returns the size of a sequence or map node + // . Otherwise, returns zero. + std::size_t Node::size() const + { + switch(m_type) { + case NodeType::Null: + case NodeType::Scalar: + return 0; + case NodeType::Sequence: + return m_seqData.size(); + case NodeType::Map: + return m_mapData.size(); + } + + assert(false); + return 0; + } + + const Node *Node::FindAtIndex(std::size_t i) const + { + if(m_type == NodeType::Sequence) + return m_seqData[i]; + return 0; + } + + bool Node::GetScalar(std::string& s) const + { + switch(m_type) { + case NodeType::Null: + s = "~"; + return true; + case NodeType::Scalar: + s = m_scalarData; + return true; + case NodeType::Sequence: + case NodeType::Map: + return false; + } + + assert(false); + return false; + } + + Emitter& operator << (Emitter& out, const Node& node) + { + EmitFromEvents emitFromEvents(out); + node.EmitEvents(emitFromEvents); + return out; + } + + int Node::Compare(const Node& rhs) const + { + if(m_type != rhs.m_type) + return rhs.m_type - m_type; + + switch(m_type) { + case NodeType::Null: + return 0; + case NodeType::Scalar: + return m_scalarData.compare(rhs.m_scalarData); + case NodeType::Sequence: + if(m_seqData.size() < rhs.m_seqData.size()) + return 1; + else if(m_seqData.size() > rhs.m_seqData.size()) + return -1; + for(std::size_t i=0;iCompare(*rhs.m_seqData[i])) + return cmp; + return 0; + case NodeType::Map: + if(m_mapData.size() < rhs.m_mapData.size()) + return 1; + else if(m_mapData.size() > rhs.m_mapData.size()) + return -1; + node_map::const_iterator it = m_mapData.begin(); + node_map::const_iterator jt = rhs.m_mapData.begin(); + for(;it!=m_mapData.end() && jt!=rhs.m_mapData.end();it++, jt++) { + if(int cmp = it->first->Compare(*jt->first)) + return cmp; + if(int cmp = it->second->Compare(*jt->second)) + return cmp; + } + return 0; + } + + assert(false); + return 0; + } + + bool operator < (const Node& n1, const Node& n2) + { + return n1.Compare(n2) < 0; + } +} diff --git a/yaml-cpp/src/nodebuilder.cpp b/yaml-cpp/src/nodebuilder.cpp new file mode 100644 index 0000000..13a7032 --- /dev/null +++ b/yaml-cpp/src/nodebuilder.cpp @@ -0,0 +1,145 @@ +#include "nodebuilder.h" +#include "yaml-cpp/mark.h" +#include "yaml-cpp/node.h" +#include + +namespace YAML +{ + NodeBuilder::NodeBuilder(Node& root): m_root(root), m_initializedRoot(false), m_finished(false) + { + m_root.Clear(); + m_anchors.push_back(0); // since the anchors start at 1 + } + + NodeBuilder::~NodeBuilder() + { + } + + void NodeBuilder::OnDocumentStart(const Mark&) + { + } + + void NodeBuilder::OnDocumentEnd() + { + assert(m_finished); + } + + void NodeBuilder::OnNull(const Mark& mark, anchor_t anchor) + { + Node& node = Push(anchor); + node.Init(NodeType::Null, mark, ""); + Pop(); + } + + void NodeBuilder::OnAlias(const Mark& /*mark*/, anchor_t anchor) + { + Node& node = *m_anchors[anchor]; + Insert(node); + node.MarkAsAliased(); + } + + void NodeBuilder::OnScalar(const Mark& mark, const std::string& tag, anchor_t anchor, const std::string& value) + { + Node& node = Push(anchor); + node.Init(NodeType::Scalar, mark, tag); + node.SetScalarData(value); + Pop(); + } + + void NodeBuilder::OnSequenceStart(const Mark& mark, const std::string& tag, anchor_t anchor) + { + Node& node = Push(anchor); + node.Init(NodeType::Sequence, mark, tag); + } + + void NodeBuilder::OnSequenceEnd() + { + Pop(); + } + + void NodeBuilder::OnMapStart(const Mark& mark, const std::string& tag, anchor_t anchor) + { + Node& node = Push(anchor); + node.Init(NodeType::Map, mark, tag); + m_didPushKey.push(false); + } + + void NodeBuilder::OnMapEnd() + { + m_didPushKey.pop(); + Pop(); + } + + Node& NodeBuilder::Push(anchor_t anchor) + { + Node& node = Push(); + RegisterAnchor(anchor, node); + return node; + } + + Node& NodeBuilder::Push() + { + if(!m_initializedRoot) { + m_initializedRoot = true; + return m_root; + } + + Node& node = m_root.CreateNode(); + m_stack.push(&node); + return node; + } + + Node& NodeBuilder::Top() + { + return m_stack.empty() ? m_root : *m_stack.top(); + } + + void NodeBuilder::Pop() + { + assert(!m_finished); + if(m_stack.empty()) { + m_finished = true; + return; + } + + Node& node = *m_stack.top(); + m_stack.pop(); + Insert(node); + } + + void NodeBuilder::Insert(Node& node) + { + Node& curTop = Top(); + switch(curTop.Type()) { + case NodeType::Null: + case NodeType::Scalar: + assert(false); + break; + case NodeType::Sequence: + curTop.Append(node); + break; + case NodeType::Map: + assert(!m_didPushKey.empty()); + if(m_didPushKey.top()) { + assert(!m_pendingKeys.empty()); + + Node& key = *m_pendingKeys.top(); + m_pendingKeys.pop(); + curTop.Insert(key, node); + m_didPushKey.top() = false; + } else { + m_pendingKeys.push(&node); + m_didPushKey.top() = true; + } + break; + } + } + + void NodeBuilder::RegisterAnchor(anchor_t anchor, Node& node) + { + if(anchor) { + assert(anchor == m_anchors.size()); + m_anchors.push_back(&node); + } + } +} diff --git a/yaml-cpp/src/nodebuilder.h b/yaml-cpp/src/nodebuilder.h new file mode 100644 index 0000000..9c1d16a --- /dev/null +++ b/yaml-cpp/src/nodebuilder.h @@ -0,0 +1,61 @@ +#ifndef NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +#include "yaml-cpp/eventhandler.h" +#include +#include +#include +#include + +namespace YAML +{ + class Node; + + class NodeBuilder: public EventHandler + { + public: + explicit NodeBuilder(Node& root); + virtual ~NodeBuilder(); + + virtual void OnDocumentStart(const Mark& mark); + virtual void OnDocumentEnd(); + + virtual void OnNull(const Mark& mark, anchor_t anchor); + virtual void OnAlias(const Mark& mark, anchor_t anchor); + virtual void OnScalar(const Mark& mark, const std::string& tag, anchor_t anchor, const std::string& value); + + virtual void OnSequenceStart(const Mark& mark, const std::string& tag, anchor_t anchor); + virtual void OnSequenceEnd(); + + virtual void OnMapStart(const Mark& mark, const std::string& tag, anchor_t anchor); + virtual void OnMapEnd(); + + private: + Node& Push(anchor_t anchor); + Node& Push(); + Node& Top(); + void Pop(); + + void Insert(Node& node); + void RegisterAnchor(anchor_t anchor, Node& node); + + private: + Node& m_root; + bool m_initializedRoot; + bool m_finished; + + std::stack m_stack; + std::stack m_pendingKeys; + std::stack m_didPushKey; + + typedef std::vector Anchors; + Anchors m_anchors; + }; +} + +#endif // NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + diff --git a/yaml-cpp/src/nodeownership.cpp b/yaml-cpp/src/nodeownership.cpp new file mode 100644 index 0000000..118edbc --- /dev/null +++ b/yaml-cpp/src/nodeownership.cpp @@ -0,0 +1,31 @@ +#include "nodeownership.h" +#include "yaml-cpp/node.h" + +namespace YAML +{ + NodeOwnership::NodeOwnership(NodeOwnership *pOwner): m_pOwner(pOwner) + { + if(!m_pOwner) + m_pOwner = this; + } + + NodeOwnership::~NodeOwnership() + { + } + + Node& NodeOwnership::_Create() + { + m_nodes.push_back(std::auto_ptr(new Node)); + return m_nodes.back(); + } + + void NodeOwnership::_MarkAsAliased(const Node& node) + { + m_aliasedNodes.insert(&node); + } + + bool NodeOwnership::_IsAliased(const Node& node) const + { + return m_aliasedNodes.count(&node) > 0; + } +} diff --git a/yaml-cpp/src/nodeownership.h b/yaml-cpp/src/nodeownership.h new file mode 100644 index 0000000..6987081 --- /dev/null +++ b/yaml-cpp/src/nodeownership.h @@ -0,0 +1,39 @@ +#ifndef NODE_OWNERSHIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define NODE_OWNERSHIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/noncopyable.h" +#include "ptr_vector.h" +#include + +namespace YAML +{ + class Node; + + class NodeOwnership: private noncopyable + { + public: + explicit NodeOwnership(NodeOwnership *pOwner = 0); + ~NodeOwnership(); + + Node& Create() { return m_pOwner->_Create(); } + void MarkAsAliased(const Node& node) { m_pOwner->_MarkAsAliased(node); } + bool IsAliased(const Node& node) const { return m_pOwner->_IsAliased(node); } + + private: + Node& _Create(); + void _MarkAsAliased(const Node& node); + bool _IsAliased(const Node& node) const; + + private: + ptr_vector m_nodes; + std::set m_aliasedNodes; + NodeOwnership *m_pOwner; + }; +} + +#endif // NODE_OWNERSHIP_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/null.cpp b/yaml-cpp/src/null.cpp new file mode 100644 index 0000000..08fa9aa --- /dev/null +++ b/yaml-cpp/src/null.cpp @@ -0,0 +1,12 @@ +#include "yaml-cpp/null.h" +#include "yaml-cpp/node.h" + +namespace YAML +{ + _Null Null; + + bool IsNull(const Node& node) + { + return node.Read(Null); + } +} diff --git a/yaml-cpp/src/ostream.cpp b/yaml-cpp/src/ostream.cpp new file mode 100644 index 0000000..a7f1e14 --- /dev/null +++ b/yaml-cpp/src/ostream.cpp @@ -0,0 +1,63 @@ +#include "yaml-cpp/ostream.h" +#include + +namespace YAML +{ + ostream::ostream(): m_buffer(0), m_pos(0), m_size(0), m_row(0), m_col(0) + { + reserve(1024); + } + + ostream::~ostream() + { + delete [] m_buffer; + } + + void ostream::reserve(unsigned size) + { + if(size <= m_size) + return; + + char *newBuffer = new char[size]; + std::memset(newBuffer, 0, size * sizeof(char)); + std::memcpy(newBuffer, m_buffer, m_size * sizeof(char)); + delete [] m_buffer; + m_buffer = newBuffer; + m_size = size; + } + + void ostream::put(char ch) + { + if(m_pos >= m_size - 1) // an extra space for the NULL terminator + reserve(m_size * 2); + + m_buffer[m_pos] = ch; + m_pos++; + + if(ch == '\n') { + m_row++; + m_col = 0; + } else + m_col++; + } + + ostream& operator << (ostream& out, const char *str) + { + std::size_t length = std::strlen(str); + for(std::size_t i=0;i +#include + +namespace YAML +{ + Parser::Parser() + { + } + + Parser::Parser(std::istream& in) + { + Load(in); + } + + Parser::~Parser() + { + } + + Parser::operator bool() const + { + return m_pScanner.get() && !m_pScanner->empty(); + } + + void Parser::Load(std::istream& in) + { + m_pScanner.reset(new Scanner(in)); + m_pDirectives.reset(new Directives); + } + + // HandleNextDocument + // . Handles the next document + // . Throws a ParserException on error. + // . Returns false if there are no more documents + bool Parser::HandleNextDocument(EventHandler& eventHandler) + { + if(!m_pScanner.get()) + return false; + + ParseDirectives(); + if(m_pScanner->empty()) + return false; + + SingleDocParser sdp(*m_pScanner, *m_pDirectives); + sdp.HandleDocument(eventHandler); + return true; + } + + // GetNextDocument + // . Reads the next document in the queue (of tokens). + // . Throws a ParserException on error. + bool Parser::GetNextDocument(Node& document) + { + NodeBuilder builder(document); + return HandleNextDocument(builder); + } + + // ParseDirectives + // . Reads any directives that are next in the queue. + void Parser::ParseDirectives() + { + bool readDirective = false; + + while(1) { + if(m_pScanner->empty()) + break; + + Token& token = m_pScanner->peek(); + if(token.type != Token::DIRECTIVE) + break; + + // we keep the directives from the last document if none are specified; + // but if any directives are specific, then we reset them + if(!readDirective) + m_pDirectives.reset(new Directives); + + readDirective = true; + HandleDirective(token); + m_pScanner->pop(); + } + } + + void Parser::HandleDirective(const Token& token) + { + if(token.value == "YAML") + HandleYamlDirective(token); + else if(token.value == "TAG") + HandleTagDirective(token); + } + + // HandleYamlDirective + // . Should be of the form 'major.minor' (like a version number) + void Parser::HandleYamlDirective(const Token& token) + { + if(token.params.size() != 1) + throw ParserException(token.mark, ErrorMsg::YAML_DIRECTIVE_ARGS); + + if(!m_pDirectives->version.isDefault) + throw ParserException(token.mark, ErrorMsg::REPEATED_YAML_DIRECTIVE); + + std::stringstream str(token.params[0]); + str >> m_pDirectives->version.major; + str.get(); + str >> m_pDirectives->version.minor; + if(!str || str.peek() != EOF) + throw ParserException(token.mark, std::string(ErrorMsg::YAML_VERSION) + token.params[0]); + + if(m_pDirectives->version.major > 1) + throw ParserException(token.mark, ErrorMsg::YAML_MAJOR_VERSION); + + m_pDirectives->version.isDefault = false; + // TODO: warning on major == 1, minor > 2? + } + + // HandleTagDirective + // . Should be of the form 'handle prefix', where 'handle' is converted to 'prefix' in the file. + void Parser::HandleTagDirective(const Token& token) + { + if(token.params.size() != 2) + throw ParserException(token.mark, ErrorMsg::TAG_DIRECTIVE_ARGS); + + const std::string& handle = token.params[0]; + const std::string& prefix = token.params[1]; + if(m_pDirectives->tags.find(handle) != m_pDirectives->tags.end()) + throw ParserException(token.mark, ErrorMsg::REPEATED_TAG_DIRECTIVE); + + m_pDirectives->tags[handle] = prefix; + } + + void Parser::PrintTokens(std::ostream& out) + { + if(!m_pScanner.get()) + return; + + while(1) { + if(m_pScanner->empty()) + break; + + out << m_pScanner->peek() << "\n"; + m_pScanner->pop(); + } + } +} diff --git a/yaml-cpp/src/ptr_stack.h b/yaml-cpp/src/ptr_stack.h new file mode 100644 index 0000000..bf454fb --- /dev/null +++ b/yaml-cpp/src/ptr_stack.h @@ -0,0 +1,46 @@ +#ifndef PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +#include "yaml-cpp/noncopyable.h" +#include +#include +#include +#include + +template +class ptr_stack: private YAML::noncopyable +{ +public: + ptr_stack() {} + ~ptr_stack() { clear(); } + + void clear() { + for(unsigned i=0;i t) { + m_data.push_back(NULL); + m_data.back() = t.release(); + } + std::auto_ptr pop() { + std::auto_ptr t(m_data.back()); + m_data.pop_back(); + return t; + } + T& top() { return *m_data.back(); } + const T& top() const { return *m_data.back(); } + +private: + std::vector m_data; +}; + +#endif // PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/ptr_vector.h b/yaml-cpp/src/ptr_vector.h new file mode 100644 index 0000000..7b936cb --- /dev/null +++ b/yaml-cpp/src/ptr_vector.h @@ -0,0 +1,47 @@ +#ifndef PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +#include "yaml-cpp/noncopyable.h" +#include +#include +#include +#include + +namespace YAML { + + template + class ptr_vector: private YAML::noncopyable + { + public: + ptr_vector() {} + ~ptr_vector() { clear(); } + + void clear() { + for(unsigned i=0;i t) { + m_data.push_back(NULL); + m_data.back() = t.release(); + } + T& operator[](std::size_t i) { return *m_data[i]; } + const T& operator[](std::size_t i) const { return *m_data[i]; } + + T& back() { return *m_data.back(); } + const T& back() const { return *m_data.back(); } + + private: + std::vector m_data; + }; +} + +#endif // PTR_VECTOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/regex.cpp b/yaml-cpp/src/regex.cpp new file mode 100644 index 0000000..b35b1f4 --- /dev/null +++ b/yaml-cpp/src/regex.cpp @@ -0,0 +1,60 @@ +#include "regex.h" + +namespace YAML +{ + // constructors + RegEx::RegEx(): m_op(REGEX_EMPTY) + { + } + + RegEx::RegEx(REGEX_OP op): m_op(op) + { + } + + RegEx::RegEx(char ch): m_op(REGEX_MATCH), m_a(ch) + { + } + + RegEx::RegEx(char a, char z): m_op(REGEX_RANGE), m_a(a), m_z(z) + { + } + + RegEx::RegEx(const std::string& str, REGEX_OP op): m_op(op) + { + for(std::size_t i=0;i= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include + +namespace YAML +{ + class Stream; + + enum REGEX_OP { REGEX_EMPTY, REGEX_MATCH, REGEX_RANGE, REGEX_OR, REGEX_AND, REGEX_NOT, REGEX_SEQ }; + + // simplified regular expressions + // . Only straightforward matches (no repeated characters) + // . Only matches from start of string + class RegEx + { + public: + RegEx(); + RegEx(char ch); + RegEx(char a, char z); + RegEx(const std::string& str, REGEX_OP op = REGEX_SEQ); + ~RegEx() {} + + friend RegEx operator ! (const RegEx& ex); + friend RegEx operator || (const RegEx& ex1, const RegEx& ex2); + friend RegEx operator && (const RegEx& ex1, const RegEx& ex2); + friend RegEx operator + (const RegEx& ex1, const RegEx& ex2); + + bool Matches(char ch) const; + bool Matches(const std::string& str) const; + bool Matches(const Stream& in) const; + template bool Matches(const Source& source) const; + + int Match(const std::string& str) const; + int Match(const Stream& in) const; + template int Match(const Source& source) const; + + private: + RegEx(REGEX_OP op); + + template bool IsValidSource(const Source& source) const; + template int MatchUnchecked(const Source& source) const; + + template int MatchOpEmpty(const Source& source) const; + template int MatchOpMatch(const Source& source) const; + template int MatchOpRange(const Source& source) const; + template int MatchOpOr(const Source& source) const; + template int MatchOpAnd(const Source& source) const; + template int MatchOpNot(const Source& source) const; + template int MatchOpSeq(const Source& source) const; + + private: + REGEX_OP m_op; + char m_a, m_z; + std::vector m_params; + }; +} + +#include "regeximpl.h" + +#endif // REGEX_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/regeximpl.h b/yaml-cpp/src/regeximpl.h new file mode 100644 index 0000000..d5c20d7 --- /dev/null +++ b/yaml-cpp/src/regeximpl.h @@ -0,0 +1,186 @@ +#ifndef REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "stream.h" +#include "stringsource.h" +#include "streamcharsource.h" + +namespace YAML +{ + // query matches + inline bool RegEx::Matches(char ch) const { + std::string str; + str += ch; + return Matches(str); + } + + inline bool RegEx::Matches(const std::string& str) const { + return Match(str) >= 0; + } + + inline bool RegEx::Matches(const Stream& in) const { + return Match(in) >= 0; + } + + template + inline bool RegEx::Matches(const Source& source) const { + return Match(source) >= 0; + } + + // Match + // . Matches the given string against this regular expression. + // . Returns the number of characters matched. + // . Returns -1 if no characters were matched (the reason for + // not returning zero is that we may have an empty regex + // which is ALWAYS successful at matching zero characters). + // . REMEMBER that we only match from the start of the buffer! + inline int RegEx::Match(const std::string& str) const + { + StringCharSource source(str.c_str(), str.size()); + return Match(source); + } + + inline int RegEx::Match(const Stream& in) const + { + StreamCharSource source(in); + return Match(source); + } + + template + inline bool RegEx::IsValidSource(const Source& source) const + { + return source; + } + + template<> + inline bool RegEx::IsValidSource(const StringCharSource&source) const + { + switch(m_op) { + case REGEX_MATCH: + case REGEX_RANGE: + return source; + default: + return true; + } + } + + template + inline int RegEx::Match(const Source& source) const + { + return IsValidSource(source) ? MatchUnchecked(source) : -1; + } + + template + inline int RegEx::MatchUnchecked(const Source& source) const + { + switch(m_op) { + case REGEX_EMPTY: + return MatchOpEmpty(source); + case REGEX_MATCH: + return MatchOpMatch(source); + case REGEX_RANGE: + return MatchOpRange(source); + case REGEX_OR: + return MatchOpOr(source); + case REGEX_AND: + return MatchOpAnd(source); + case REGEX_NOT: + return MatchOpNot(source); + case REGEX_SEQ: + return MatchOpSeq(source); + } + + return -1; + } + + ////////////////////////////////////////////////////////////////////////////// + // Operators + // Note: the convention MatchOp* is that we can assume IsSourceValid(source). + // So we do all our checks *before* we call these functions + + // EmptyOperator + template + inline int RegEx::MatchOpEmpty(const Source& source) const { + return source[0] == Stream::eof() ? 0 : -1; + } + + template <> + inline int RegEx::MatchOpEmpty(const StringCharSource& source) const { + return !source ? 0 : -1; // the empty regex only is successful on the empty string + } + + // MatchOperator + template + inline int RegEx::MatchOpMatch(const Source& source) const { + if(source[0] != m_a) + return -1; + return 1; + } + + // RangeOperator + template + inline int RegEx::MatchOpRange(const Source& source) const { + if(m_a > source[0] || m_z < source[0]) + return -1; + return 1; + } + + // OrOperator + template + inline int RegEx::MatchOpOr(const Source& source) const { + for(std::size_t i=0;i= 0) + return n; + } + return -1; + } + + // AndOperator + // Note: 'AND' is a little funny, since we may be required to match things + // of different lengths. If we find a match, we return the length of + // the FIRST entry on the list. + template + inline int RegEx::MatchOpAnd(const Source& source) const { + int first = -1; + for(std::size_t i=0;i + inline int RegEx::MatchOpNot(const Source& source) const { + if(m_params.empty()) + return -1; + if(m_params[0].MatchUnchecked(source) >= 0) + return -1; + return 1; + } + + // SeqOperator + template + inline int RegEx::MatchOpSeq(const Source& source) const { + int offset = 0; + for(std::size_t i=0;i +#include + +namespace YAML +{ + Scanner::Scanner(std::istream& in) + : INPUT(in), m_startedStream(false), m_endedStream(false), m_simpleKeyAllowed(false), m_canBeJSONFlow(false) + { + } + + Scanner::~Scanner() + { + } + + // empty + // . Returns true if there are no more tokens to be read + bool Scanner::empty() + { + EnsureTokensInQueue(); + return m_tokens.empty(); + } + + // pop + // . Simply removes the next token on the queue. + void Scanner::pop() + { + EnsureTokensInQueue(); + if(!m_tokens.empty()) + m_tokens.pop(); + } + + // peek + // . Returns (but does not remove) the next token on the queue. + Token& Scanner::peek() + { + EnsureTokensInQueue(); + assert(!m_tokens.empty()); // should we be asserting here? I mean, we really just be checking + // if it's empty before peeking. + +#if 0 + static Token *pLast = 0; + if(pLast != &m_tokens.front()) + std::cerr << "peek: " << m_tokens.front() << "\n"; + pLast = &m_tokens.front(); +#endif + + return m_tokens.front(); + } + + // EnsureTokensInQueue + // . Scan until there's a valid token at the front of the queue, + // or we're sure the queue is empty. + void Scanner::EnsureTokensInQueue() + { + while(1) { + if(!m_tokens.empty()) { + Token& token = m_tokens.front(); + + // if this guy's valid, then we're done + if(token.status == Token::VALID) + return; + + // here's where we clean up the impossible tokens + if(token.status == Token::INVALID) { + m_tokens.pop(); + continue; + } + + // note: what's left are the unverified tokens + } + + // no token? maybe we've actually finished + if(m_endedStream) + return; + + // no? then scan... + ScanNextToken(); + } + } + + // ScanNextToken + // . The main scanning function; here we branch out and + // scan whatever the next token should be. + void Scanner::ScanNextToken() + { + if(m_endedStream) + return; + + if(!m_startedStream) + return StartStream(); + + // get rid of whitespace, etc. (in between tokens it should be irrelevent) + ScanToNextToken(); + + // maybe need to end some blocks + PopIndentToHere(); + + // ***** + // And now branch based on the next few characters! + // ***** + + // end of stream + if(!INPUT) + return EndStream(); + + if(INPUT.column() == 0 && INPUT.peek() == Keys::Directive) + return ScanDirective(); + + // document token + if(INPUT.column() == 0 && Exp::DocStart().Matches(INPUT)) + return ScanDocStart(); + + if(INPUT.column() == 0 && Exp::DocEnd().Matches(INPUT)) + return ScanDocEnd(); + + // flow start/end/entry + if(INPUT.peek() == Keys::FlowSeqStart || INPUT.peek() == Keys::FlowMapStart) + return ScanFlowStart(); + + if(INPUT.peek() == Keys::FlowSeqEnd || INPUT.peek() == Keys::FlowMapEnd) + return ScanFlowEnd(); + + if(INPUT.peek() == Keys::FlowEntry) + return ScanFlowEntry(); + + // block/map stuff + if(Exp::BlockEntry().Matches(INPUT)) + return ScanBlockEntry(); + + if((InBlockContext() ? Exp::Key() : Exp::KeyInFlow()).Matches(INPUT)) + return ScanKey(); + + if(GetValueRegex().Matches(INPUT)) + return ScanValue(); + + // alias/anchor + if(INPUT.peek() == Keys::Alias || INPUT.peek() == Keys::Anchor) + return ScanAnchorOrAlias(); + + // tag + if(INPUT.peek() == Keys::Tag) + return ScanTag(); + + // special scalars + if(InBlockContext() && (INPUT.peek() == Keys::LiteralScalar || INPUT.peek() == Keys::FoldedScalar)) + return ScanBlockScalar(); + + if(INPUT.peek() == '\'' || INPUT.peek() == '\"') + return ScanQuotedScalar(); + + // plain scalars + if((InBlockContext() ? Exp::PlainScalar() : Exp::PlainScalarInFlow()).Matches(INPUT)) + return ScanPlainScalar(); + + // don't know what it is! + throw ParserException(INPUT.mark(), ErrorMsg::UNKNOWN_TOKEN); + } + + // ScanToNextToken + // . Eats input until we reach the next token-like thing. + void Scanner::ScanToNextToken() + { + while(1) { + // first eat whitespace + while(INPUT && IsWhitespaceToBeEaten(INPUT.peek())) { + if(InBlockContext() && Exp::Tab().Matches(INPUT)) + m_simpleKeyAllowed = false; + INPUT.eat(1); + } + + // then eat a comment + if(Exp::Comment().Matches(INPUT)) { + // eat until line break + while(INPUT && !Exp::Break().Matches(INPUT)) + INPUT.eat(1); + } + + // if it's NOT a line break, then we're done! + if(!Exp::Break().Matches(INPUT)) + break; + + // otherwise, let's eat the line break and keep going + int n = Exp::Break().Match(INPUT); + INPUT.eat(n); + + // oh yeah, and let's get rid of that simple key + InvalidateSimpleKey(); + + // new line - we may be able to accept a simple key now + if(InBlockContext()) + m_simpleKeyAllowed = true; + } + } + + /////////////////////////////////////////////////////////////////////// + // Misc. helpers + + // IsWhitespaceToBeEaten + // . We can eat whitespace if it's a space or tab + // . Note: originally tabs in block context couldn't be eaten + // "where a simple key could be allowed + // (i.e., not at the beginning of a line, or following '-', '?', or ':')" + // I think this is wrong, since tabs can be non-content whitespace; it's just + // that they can't contribute to indentation, so once you've seen a tab in a + // line, you can't start a simple key + bool Scanner::IsWhitespaceToBeEaten(char ch) + { + if(ch == ' ') + return true; + + if(ch == '\t') + return true; + + return false; + } + + // GetValueRegex + // . Get the appropriate regex to check if it's a value token + const RegEx& Scanner::GetValueRegex() const + { + if(InBlockContext()) + return Exp::Value(); + + return m_canBeJSONFlow ? Exp::ValueInJSONFlow() : Exp::ValueInFlow(); + } + + // StartStream + // . Set the initial conditions for starting a stream. + void Scanner::StartStream() + { + m_startedStream = true; + m_simpleKeyAllowed = true; + std::auto_ptr pIndent(new IndentMarker(-1, IndentMarker::NONE)); + m_indentRefs.push_back(pIndent); + m_indents.push(&m_indentRefs.back()); + } + + // EndStream + // . Close out the stream, finish up, etc. + void Scanner::EndStream() + { + // force newline + if(INPUT.column() > 0) + INPUT.ResetColumn(); + + PopAllIndents(); + PopAllSimpleKeys(); + + m_simpleKeyAllowed = false; + m_endedStream = true; + } + + Token *Scanner::PushToken(Token::TYPE type) + { + m_tokens.push(Token(type, INPUT.mark())); + return &m_tokens.back(); + } + + Token::TYPE Scanner::GetStartTokenFor(IndentMarker::INDENT_TYPE type) const + { + switch(type) { + case IndentMarker::SEQ: return Token::BLOCK_SEQ_START; + case IndentMarker::MAP: return Token::BLOCK_MAP_START; + case IndentMarker::NONE: assert(false); break; + } + assert(false); + throw std::runtime_error("yaml-cpp: internal error, invalid indent type"); + } + + // PushIndentTo + // . Pushes an indentation onto the stack, and enqueues the + // proper token (sequence start or mapping start). + // . Returns the indent marker it generates (if any). + Scanner::IndentMarker *Scanner::PushIndentTo(int column, IndentMarker::INDENT_TYPE type) + { + // are we in flow? + if(InFlowContext()) + return 0; + + std::auto_ptr pIndent(new IndentMarker(column, type)); + IndentMarker& indent = *pIndent; + const IndentMarker& lastIndent = *m_indents.top(); + + // is this actually an indentation? + if(indent.column < lastIndent.column) + return 0; + if(indent.column == lastIndent.column && !(indent.type == IndentMarker::SEQ && lastIndent.type == IndentMarker::MAP)) + return 0; + + // push a start token + indent.pStartToken = PushToken(GetStartTokenFor(type)); + + // and then the indent + m_indents.push(&indent); + m_indentRefs.push_back(pIndent); + return &m_indentRefs.back(); + } + + // PopIndentToHere + // . Pops indentations off the stack until we reach the current indentation level, + // and enqueues the proper token each time. + // . Then pops all invalid indentations off. + void Scanner::PopIndentToHere() + { + // are we in flow? + if(InFlowContext()) + return; + + // now pop away + while(!m_indents.empty()) { + const IndentMarker& indent = *m_indents.top(); + if(indent.column < INPUT.column()) + break; + if(indent.column == INPUT.column() && !(indent.type == IndentMarker::SEQ && !Exp::BlockEntry().Matches(INPUT))) + break; + + PopIndent(); + } + + while(!m_indents.empty() && m_indents.top()->status == IndentMarker::INVALID) + PopIndent(); + } + + // PopAllIndents + // . Pops all indentations (except for the base empty one) off the stack, + // and enqueues the proper token each time. + void Scanner::PopAllIndents() + { + // are we in flow? + if(InFlowContext()) + return; + + // now pop away + while(!m_indents.empty()) { + const IndentMarker& indent = *m_indents.top(); + if(indent.type == IndentMarker::NONE) + break; + + PopIndent(); + } + } + + // PopIndent + // . Pops a single indent, pushing the proper token + void Scanner::PopIndent() + { + const IndentMarker& indent = *m_indents.top(); + m_indents.pop(); + + if(indent.status != IndentMarker::VALID) { + InvalidateSimpleKey(); + return; + } + + if(indent.type == IndentMarker::SEQ) + m_tokens.push(Token(Token::BLOCK_SEQ_END, INPUT.mark())); + else if(indent.type == IndentMarker::MAP) + m_tokens.push(Token(Token::BLOCK_MAP_END, INPUT.mark())); + } + + // GetTopIndent + int Scanner::GetTopIndent() const + { + if(m_indents.empty()) + return 0; + return m_indents.top()->column; + } + + // ThrowParserException + // . Throws a ParserException with the current token location + // (if available). + // . Does not parse any more tokens. + void Scanner::ThrowParserException(const std::string& msg) const + { + Mark mark = Mark::null(); + if(!m_tokens.empty()) { + const Token& token = m_tokens.front(); + mark = token.mark; + } + throw ParserException(mark, msg); + } +} + diff --git a/yaml-cpp/src/scanner.h b/yaml-cpp/src/scanner.h new file mode 100644 index 0000000..bc8dcbe --- /dev/null +++ b/yaml-cpp/src/scanner.h @@ -0,0 +1,132 @@ +#ifndef SCANNER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define SCANNER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include +#include +#include +#include +#include +#include "ptr_vector.h" +#include "stream.h" +#include "token.h" + +namespace YAML +{ + class Node; + class RegEx; + + class Scanner + { + public: + Scanner(std::istream& in); + ~Scanner(); + + // token queue management (hopefully this looks kinda stl-ish) + bool empty(); + void pop(); + Token& peek(); + + private: + struct IndentMarker { + enum INDENT_TYPE { MAP, SEQ, NONE }; + enum STATUS { VALID, INVALID, UNKNOWN }; + IndentMarker(int column_, INDENT_TYPE type_): column(column_), type(type_), status(VALID), pStartToken(0) {} + + int column; + INDENT_TYPE type; + STATUS status; + Token *pStartToken; + }; + + enum FLOW_MARKER { FLOW_MAP, FLOW_SEQ }; + + private: + // scanning + void EnsureTokensInQueue(); + void ScanNextToken(); + void ScanToNextToken(); + void StartStream(); + void EndStream(); + Token *PushToken(Token::TYPE type); + + bool InFlowContext() const { return !m_flows.empty(); } + bool InBlockContext() const { return m_flows.empty(); } + int GetFlowLevel() const { return m_flows.size(); } + + Token::TYPE GetStartTokenFor(IndentMarker::INDENT_TYPE type) const; + IndentMarker *PushIndentTo(int column, IndentMarker::INDENT_TYPE type); + void PopIndentToHere(); + void PopAllIndents(); + void PopIndent(); + int GetTopIndent() const; + + // checking input + bool CanInsertPotentialSimpleKey() const; + bool ExistsActiveSimpleKey() const; + void InsertPotentialSimpleKey(); + void InvalidateSimpleKey(); + bool VerifySimpleKey(); + void PopAllSimpleKeys(); + + void ThrowParserException(const std::string& msg) const; + + bool IsWhitespaceToBeEaten(char ch); + const RegEx& GetValueRegex() const; + + struct SimpleKey { + SimpleKey(const Mark& mark_, int flowLevel_); + + void Validate(); + void Invalidate(); + + Mark mark; + int flowLevel; + IndentMarker *pIndent; + Token *pMapStart, *pKey; + }; + + // and the tokens + void ScanDirective(); + void ScanDocStart(); + void ScanDocEnd(); + void ScanBlockSeqStart(); + void ScanBlockMapSTart(); + void ScanBlockEnd(); + void ScanBlockEntry(); + void ScanFlowStart(); + void ScanFlowEnd(); + void ScanFlowEntry(); + void ScanKey(); + void ScanValue(); + void ScanAnchorOrAlias(); + void ScanTag(); + void ScanPlainScalar(); + void ScanQuotedScalar(); + void ScanBlockScalar(); + + private: + // the stream + Stream INPUT; + + // the output (tokens) + std::queue m_tokens; + + // state info + bool m_startedStream, m_endedStream; + bool m_simpleKeyAllowed; + bool m_canBeJSONFlow; + std::stack m_simpleKeys; + std::stack m_indents; + ptr_vector m_indentRefs; // for "garbage collection" + std::stack m_flows; + }; +} + +#endif // SCANNER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + diff --git a/yaml-cpp/src/scanscalar.cpp b/yaml-cpp/src/scanscalar.cpp new file mode 100644 index 0000000..064c086 --- /dev/null +++ b/yaml-cpp/src/scanscalar.cpp @@ -0,0 +1,214 @@ +#include "scanscalar.h" +#include "scanner.h" +#include "exp.h" +#include "yaml-cpp/exceptions.h" +#include "token.h" + +namespace YAML +{ + // ScanScalar + // . This is where the scalar magic happens. + // + // . We do the scanning in three phases: + // 1. Scan until newline + // 2. Eat newline + // 3. Scan leading blanks. + // + // . Depending on the parameters given, we store or stop + // and different places in the above flow. + std::string ScanScalar(Stream& INPUT, ScanScalarParams& params) + { + bool foundNonEmptyLine = false; + bool pastOpeningBreak = (params.fold == FOLD_FLOW); + bool emptyLine = false, moreIndented = false; + int foldedNewlineCount = 0; + bool foldedNewlineStartedMoreIndented = false; + std::size_t lastEscapedChar = std::string::npos; + std::string scalar; + params.leadingSpaces = false; + + while(INPUT) { + // ******************************** + // Phase #1: scan until line ending + + std::size_t lastNonWhitespaceChar = scalar.size(); + bool escapedNewline = false; + while(!params.end.Matches(INPUT) && !Exp::Break().Matches(INPUT)) { + if(!INPUT) + break; + + // document indicator? + if(INPUT.column() == 0 && Exp::DocIndicator().Matches(INPUT)) { + if(params.onDocIndicator == BREAK) + break; + else if(params.onDocIndicator == THROW) + throw ParserException(INPUT.mark(), ErrorMsg::DOC_IN_SCALAR); + } + + foundNonEmptyLine = true; + pastOpeningBreak = true; + + // escaped newline? (only if we're escaping on slash) + if(params.escape == '\\' && Exp::EscBreak().Matches(INPUT)) { + // eat escape character and get out (but preserve trailing whitespace!) + INPUT.get(); + lastNonWhitespaceChar = scalar.size(); + lastEscapedChar = scalar.size(); + escapedNewline = true; + break; + } + + // escape this? + if(INPUT.peek() == params.escape) { + scalar += Exp::Escape(INPUT); + lastNonWhitespaceChar = scalar.size(); + lastEscapedChar = scalar.size(); + continue; + } + + // otherwise, just add the damn character + char ch = INPUT.get(); + scalar += ch; + if(ch != ' ' && ch != '\t') + lastNonWhitespaceChar = scalar.size(); + } + + // eof? if we're looking to eat something, then we throw + if(!INPUT) { + if(params.eatEnd) + throw ParserException(INPUT.mark(), ErrorMsg::EOF_IN_SCALAR); + break; + } + + // doc indicator? + if(params.onDocIndicator == BREAK && INPUT.column() == 0 && Exp::DocIndicator().Matches(INPUT)) + break; + + // are we done via character match? + int n = params.end.Match(INPUT); + if(n >= 0) { + if(params.eatEnd) + INPUT.eat(n); + break; + } + + // do we remove trailing whitespace? + if(params.fold == FOLD_FLOW) + scalar.erase(lastNonWhitespaceChar); + + // ******************************** + // Phase #2: eat line ending + n = Exp::Break().Match(INPUT); + INPUT.eat(n); + + // ******************************** + // Phase #3: scan initial spaces + + // first the required indentation + while(INPUT.peek() == ' ' && (INPUT.column() < params.indent || (params.detectIndent && !foundNonEmptyLine))) + INPUT.eat(1); + + // update indent if we're auto-detecting + if(params.detectIndent && !foundNonEmptyLine) + params.indent = std::max(params.indent, INPUT.column()); + + // and then the rest of the whitespace + while(Exp::Blank().Matches(INPUT)) { + // we check for tabs that masquerade as indentation + if(INPUT.peek() == '\t'&& INPUT.column() < params.indent && params.onTabInIndentation == THROW) + throw ParserException(INPUT.mark(), ErrorMsg::TAB_IN_INDENTATION); + + if(!params.eatLeadingWhitespace) + break; + + INPUT.eat(1); + } + + // was this an empty line? + bool nextEmptyLine = Exp::Break().Matches(INPUT); + bool nextMoreIndented = Exp::Blank().Matches(INPUT); + if(params.fold == FOLD_BLOCK && foldedNewlineCount == 0 && nextEmptyLine) + foldedNewlineStartedMoreIndented = moreIndented; + + // for block scalars, we always start with a newline, so we should ignore it (not fold or keep) + if(pastOpeningBreak) { + switch(params.fold) { + case DONT_FOLD: + scalar += "\n"; + break; + case FOLD_BLOCK: + if(!emptyLine && !nextEmptyLine && !moreIndented && !nextMoreIndented && INPUT.column() >= params.indent) + scalar += " "; + else if(nextEmptyLine) + foldedNewlineCount++; + else + scalar += "\n"; + + if(!nextEmptyLine && foldedNewlineCount > 0) { + scalar += std::string(foldedNewlineCount - 1, '\n'); + if(foldedNewlineStartedMoreIndented || nextMoreIndented | !foundNonEmptyLine) + scalar += "\n"; + foldedNewlineCount = 0; + } + break; + case FOLD_FLOW: + if(nextEmptyLine) + scalar += "\n"; + else if(!emptyLine && !nextEmptyLine && !escapedNewline) + scalar += " "; + break; + } + } + + emptyLine = nextEmptyLine; + moreIndented = nextMoreIndented; + pastOpeningBreak = true; + + // are we done via indentation? + if(!emptyLine && INPUT.column() < params.indent) { + params.leadingSpaces = true; + break; + } + } + + // post-processing + if(params.trimTrailingSpaces) { + std::size_t pos = scalar.find_last_not_of(' '); + if(lastEscapedChar != std::string::npos) { + if(pos < lastEscapedChar || pos == std::string::npos) + pos = lastEscapedChar; + } + if(pos < scalar.size()) + scalar.erase(pos + 1); + } + + switch(params.chomp) { + case CLIP: { + std::size_t pos = scalar.find_last_not_of('\n'); + if(lastEscapedChar != std::string::npos) { + if(pos < lastEscapedChar || pos == std::string::npos) + pos = lastEscapedChar; + } + if(pos == std::string::npos) + scalar.erase(); + else if(pos + 1 < scalar.size()) + scalar.erase(pos + 2); + } break; + case STRIP: { + std::size_t pos = scalar.find_last_not_of('\n'); + if(lastEscapedChar != std::string::npos) { + if(pos < lastEscapedChar || pos == std::string::npos) + pos = lastEscapedChar; + } + if(pos == std::string::npos) + scalar.erase(); + else if(pos < scalar.size()) + scalar.erase(pos + 1); + } break; + default: + break; + } + + return scalar; + } +} diff --git a/yaml-cpp/src/scanscalar.h b/yaml-cpp/src/scanscalar.h new file mode 100644 index 0000000..c198cb1 --- /dev/null +++ b/yaml-cpp/src/scanscalar.h @@ -0,0 +1,45 @@ +#ifndef SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include "regex.h" +#include "stream.h" + +namespace YAML +{ + enum CHOMP { STRIP = -1, CLIP, KEEP }; + enum ACTION { NONE, BREAK, THROW }; + enum FOLD { DONT_FOLD, FOLD_BLOCK, FOLD_FLOW }; + + struct ScanScalarParams { + ScanScalarParams(): eatEnd(false), indent(0), detectIndent(false), eatLeadingWhitespace(0), escape(0), fold(DONT_FOLD), + trimTrailingSpaces(0), chomp(CLIP), onDocIndicator(NONE), onTabInIndentation(NONE), leadingSpaces(false) {} + + // input: + RegEx end; // what condition ends this scalar? + bool eatEnd; // should we eat that condition when we see it? + int indent; // what level of indentation should be eaten and ignored? + bool detectIndent; // should we try to autodetect the indent? + bool eatLeadingWhitespace; // should we continue eating this delicious indentation after 'indent' spaces? + char escape; // what character do we escape on (i.e., slash or single quote) (0 for none) + FOLD fold; // how do we fold line ends? + bool trimTrailingSpaces; // do we remove all trailing spaces (at the very end) + CHOMP chomp; // do we strip, clip, or keep trailing newlines (at the very end) + // Note: strip means kill all, clip means keep at most one, keep means keep all + ACTION onDocIndicator; // what do we do if we see a document indicator? + ACTION onTabInIndentation; // what do we do if we see a tab where we should be seeing indentation spaces + + // output: + bool leadingSpaces; + }; + + std::string ScanScalar(Stream& INPUT, ScanScalarParams& info); +} + +#endif // SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + diff --git a/yaml-cpp/src/scantag.cpp b/yaml-cpp/src/scantag.cpp new file mode 100644 index 0000000..b71cbcc --- /dev/null +++ b/yaml-cpp/src/scantag.cpp @@ -0,0 +1,84 @@ +#include "scanner.h" +#include "regex.h" +#include "exp.h" +#include "yaml-cpp/exceptions.h" + +namespace YAML +{ + const std::string ScanVerbatimTag(Stream& INPUT) + { + std::string tag; + + // eat the start character + INPUT.get(); + + while(INPUT) { + if(INPUT.peek() == Keys::VerbatimTagEnd) { + // eat the end character + INPUT.get(); + return tag; + } + + int n = Exp::URI().Match(INPUT); + if(n <= 0) + break; + + tag += INPUT.get(n); + } + + throw ParserException(INPUT.mark(), ErrorMsg::END_OF_VERBATIM_TAG); + } + + const std::string ScanTagHandle(Stream& INPUT, bool& canBeHandle) + { + std::string tag; + canBeHandle = true; + Mark firstNonWordChar; + + while(INPUT) { + if(INPUT.peek() == Keys::Tag) { + if(!canBeHandle) + throw ParserException(firstNonWordChar, ErrorMsg::CHAR_IN_TAG_HANDLE); + break; + } + + int n = 0; + if(canBeHandle) { + n = Exp::Word().Match(INPUT); + if(n <= 0) { + canBeHandle = false; + firstNonWordChar = INPUT.mark(); + } + } + + if(!canBeHandle) + n = Exp::Tag().Match(INPUT); + + if(n <= 0) + break; + + tag += INPUT.get(n); + } + + return tag; + } + + const std::string ScanTagSuffix(Stream& INPUT) + { + std::string tag; + + while(INPUT) { + int n = Exp::Tag().Match(INPUT); + if(n <= 0) + break; + + tag += INPUT.get(n); + } + + if(tag.empty()) + throw ParserException(INPUT.mark(), ErrorMsg::TAG_WITH_NO_SUFFIX); + + return tag; + } +} + diff --git a/yaml-cpp/src/scantag.h b/yaml-cpp/src/scantag.h new file mode 100644 index 0000000..38437c0 --- /dev/null +++ b/yaml-cpp/src/scantag.h @@ -0,0 +1,20 @@ +#ifndef SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include "stream.h" + +namespace YAML +{ + const std::string ScanVerbatimTag(Stream& INPUT); + const std::string ScanTagHandle(Stream& INPUT, bool& canBeHandle); + const std::string ScanTagSuffix(Stream& INPUT); +} + +#endif // SCANTAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + diff --git a/yaml-cpp/src/scantoken.cpp b/yaml-cpp/src/scantoken.cpp new file mode 100644 index 0000000..06d9cd6 --- /dev/null +++ b/yaml-cpp/src/scantoken.cpp @@ -0,0 +1,439 @@ +#include "scanner.h" +#include "token.h" +#include "yaml-cpp/exceptions.h" +#include "exp.h" +#include "scanscalar.h" +#include "scantag.h" +#include "tag.h" +#include + +namespace YAML +{ + /////////////////////////////////////////////////////////////////////// + // Specialization for scanning specific tokens + + // Directive + // . Note: no semantic checking is done here (that's for the parser to do) + void Scanner::ScanDirective() + { + std::string name; + std::vector params; + + // pop indents and simple keys + PopAllIndents(); + PopAllSimpleKeys(); + + m_simpleKeyAllowed = false; + m_canBeJSONFlow = false; + + // store pos and eat indicator + Token token(Token::DIRECTIVE, INPUT.mark()); + INPUT.eat(1); + + // read name + while(INPUT && !Exp::BlankOrBreak().Matches(INPUT)) + token.value += INPUT.get(); + + // read parameters + while(1) { + // first get rid of whitespace + while(Exp::Blank().Matches(INPUT)) + INPUT.eat(1); + + // break on newline or comment + if(!INPUT || Exp::Break().Matches(INPUT) || Exp::Comment().Matches(INPUT)) + break; + + // now read parameter + std::string param; + while(INPUT && !Exp::BlankOrBreak().Matches(INPUT)) + param += INPUT.get(); + + token.params.push_back(param); + } + + m_tokens.push(token); + } + + // DocStart + void Scanner::ScanDocStart() + { + PopAllIndents(); + PopAllSimpleKeys(); + m_simpleKeyAllowed = false; + m_canBeJSONFlow = false; + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(3); + m_tokens.push(Token(Token::DOC_START, mark)); + } + + // DocEnd + void Scanner::ScanDocEnd() + { + PopAllIndents(); + PopAllSimpleKeys(); + m_simpleKeyAllowed = false; + m_canBeJSONFlow = false; + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(3); + m_tokens.push(Token(Token::DOC_END, mark)); + } + + // FlowStart + void Scanner::ScanFlowStart() + { + // flows can be simple keys + InsertPotentialSimpleKey(); + m_simpleKeyAllowed = true; + m_canBeJSONFlow = false; + + // eat + Mark mark = INPUT.mark(); + char ch = INPUT.get(); + FLOW_MARKER flowType = (ch == Keys::FlowSeqStart ? FLOW_SEQ : FLOW_MAP); + m_flows.push(flowType); + Token::TYPE type = (flowType == FLOW_SEQ ? Token::FLOW_SEQ_START : Token::FLOW_MAP_START); + m_tokens.push(Token(type, mark)); + } + + // FlowEnd + void Scanner::ScanFlowEnd() + { + if(InBlockContext()) + throw ParserException(INPUT.mark(), ErrorMsg::FLOW_END); + + // we might have a solo entry in the flow context + if(InFlowContext()) { + if(m_flows.top() == FLOW_MAP && VerifySimpleKey()) + m_tokens.push(Token(Token::VALUE, INPUT.mark())); + else if(m_flows.top() == FLOW_SEQ) + InvalidateSimpleKey(); + } + + m_simpleKeyAllowed = false; + m_canBeJSONFlow = true; + + // eat + Mark mark = INPUT.mark(); + char ch = INPUT.get(); + + // check that it matches the start + FLOW_MARKER flowType = (ch == Keys::FlowSeqEnd ? FLOW_SEQ : FLOW_MAP); + if(m_flows.top() != flowType) + throw ParserException(mark, ErrorMsg::FLOW_END); + m_flows.pop(); + + Token::TYPE type = (flowType ? Token::FLOW_SEQ_END : Token::FLOW_MAP_END); + m_tokens.push(Token(type, mark)); + } + + // FlowEntry + void Scanner::ScanFlowEntry() + { + // we might have a solo entry in the flow context + if(InFlowContext()) { + if(m_flows.top() == FLOW_MAP && VerifySimpleKey()) + m_tokens.push(Token(Token::VALUE, INPUT.mark())); + else if(m_flows.top() == FLOW_SEQ) + InvalidateSimpleKey(); + } + + m_simpleKeyAllowed = true; + m_canBeJSONFlow = false; + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(1); + m_tokens.push(Token(Token::FLOW_ENTRY, mark)); + } + + // BlockEntry + void Scanner::ScanBlockEntry() + { + // we better be in the block context! + if(InFlowContext()) + throw ParserException(INPUT.mark(), ErrorMsg::BLOCK_ENTRY); + + // can we put it here? + if(!m_simpleKeyAllowed) + throw ParserException(INPUT.mark(), ErrorMsg::BLOCK_ENTRY); + + PushIndentTo(INPUT.column(), IndentMarker::SEQ); + m_simpleKeyAllowed = true; + m_canBeJSONFlow = false; + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(1); + m_tokens.push(Token(Token::BLOCK_ENTRY, mark)); + } + + // Key + void Scanner::ScanKey() + { + // handle keys diffently in the block context (and manage indents) + if(InBlockContext()) { + if(!m_simpleKeyAllowed) + throw ParserException(INPUT.mark(), ErrorMsg::MAP_KEY); + + PushIndentTo(INPUT.column(), IndentMarker::MAP); + } + + // can only put a simple key here if we're in block context + m_simpleKeyAllowed = InBlockContext(); + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(1); + m_tokens.push(Token(Token::KEY, mark)); + } + + // Value + void Scanner::ScanValue() + { + // and check that simple key + bool isSimpleKey = VerifySimpleKey(); + m_canBeJSONFlow = false; + + if(isSimpleKey) { + // can't follow a simple key with another simple key (dunno why, though - it seems fine) + m_simpleKeyAllowed = false; + } else { + // handle values diffently in the block context (and manage indents) + if(InBlockContext()) { + if(!m_simpleKeyAllowed) + throw ParserException(INPUT.mark(), ErrorMsg::MAP_VALUE); + + PushIndentTo(INPUT.column(), IndentMarker::MAP); + } + + // can only put a simple key here if we're in block context + m_simpleKeyAllowed = InBlockContext(); + } + + // eat + Mark mark = INPUT.mark(); + INPUT.eat(1); + m_tokens.push(Token(Token::VALUE, mark)); + } + + // AnchorOrAlias + void Scanner::ScanAnchorOrAlias() + { + bool alias; + std::string name; + + // insert a potential simple key + InsertPotentialSimpleKey(); + m_simpleKeyAllowed = false; + m_canBeJSONFlow = false; + + // eat the indicator + Mark mark = INPUT.mark(); + char indicator = INPUT.get(); + alias = (indicator == Keys::Alias); + + // now eat the content + while(INPUT && Exp::Anchor().Matches(INPUT)) + name += INPUT.get(); + + // we need to have read SOMETHING! + if(name.empty()) + throw ParserException(INPUT.mark(), alias ? ErrorMsg::ALIAS_NOT_FOUND : ErrorMsg::ANCHOR_NOT_FOUND); + + // and needs to end correctly + if(INPUT && !Exp::AnchorEnd().Matches(INPUT)) + throw ParserException(INPUT.mark(), alias ? ErrorMsg::CHAR_IN_ALIAS : ErrorMsg::CHAR_IN_ANCHOR); + + // and we're done + Token token(alias ? Token::ALIAS : Token::ANCHOR, mark); + token.value = name; + m_tokens.push(token); + } + + // Tag + void Scanner::ScanTag() + { + // insert a potential simple key + InsertPotentialSimpleKey(); + m_simpleKeyAllowed = false; + m_canBeJSONFlow = false; + + Token token(Token::TAG, INPUT.mark()); + + // eat the indicator + INPUT.get(); + + if(INPUT && INPUT.peek() == Keys::VerbatimTagStart){ + std::string tag = ScanVerbatimTag(INPUT); + + token.value = tag; + token.data = Tag::VERBATIM; + } else { + bool canBeHandle; + token.value = ScanTagHandle(INPUT, canBeHandle); + if(!canBeHandle && token.value.empty()) + token.data = Tag::NON_SPECIFIC; + else if(token.value.empty()) + token.data = Tag::SECONDARY_HANDLE; + else + token.data = Tag::PRIMARY_HANDLE; + + // is there a suffix? + if(canBeHandle && INPUT.peek() == Keys::Tag) { + // eat the indicator + INPUT.get(); + token.params.push_back(ScanTagSuffix(INPUT)); + token.data = Tag::NAMED_HANDLE; + } + } + + m_tokens.push(token); + } + + // PlainScalar + void Scanner::ScanPlainScalar() + { + std::string scalar; + + // set up the scanning parameters + ScanScalarParams params; + params.end = (InFlowContext() ? Exp::EndScalarInFlow() : Exp::EndScalar()) || (Exp::BlankOrBreak() + Exp::Comment()); + params.eatEnd = false; + params.indent = (InFlowContext() ? 0 : GetTopIndent() + 1); + params.fold = FOLD_FLOW; + params.eatLeadingWhitespace = true; + params.trimTrailingSpaces = true; + params.chomp = STRIP; + params.onDocIndicator = BREAK; + params.onTabInIndentation = THROW; + + // insert a potential simple key + InsertPotentialSimpleKey(); + + Mark mark = INPUT.mark(); + scalar = ScanScalar(INPUT, params); + + // can have a simple key only if we ended the scalar by starting a new line + m_simpleKeyAllowed = params.leadingSpaces; + m_canBeJSONFlow = false; + + // finally, check and see if we ended on an illegal character + //if(Exp::IllegalCharInScalar.Matches(INPUT)) + // throw ParserException(INPUT.mark(), ErrorMsg::CHAR_IN_SCALAR); + + Token token(Token::PLAIN_SCALAR, mark); + token.value = scalar; + m_tokens.push(token); + } + + // QuotedScalar + void Scanner::ScanQuotedScalar() + { + std::string scalar; + + // peek at single or double quote (don't eat because we need to preserve (for the time being) the input position) + char quote = INPUT.peek(); + bool single = (quote == '\''); + + // setup the scanning parameters + ScanScalarParams params; + params.end = (single ? RegEx(quote) && !Exp::EscSingleQuote() : RegEx(quote)); + params.eatEnd = true; + params.escape = (single ? '\'' : '\\'); + params.indent = 0; + params.fold = FOLD_FLOW; + params.eatLeadingWhitespace = true; + params.trimTrailingSpaces = false; + params.chomp = CLIP; + params.onDocIndicator = THROW; + + // insert a potential simple key + InsertPotentialSimpleKey(); + + Mark mark = INPUT.mark(); + + // now eat that opening quote + INPUT.get(); + + // and scan + scalar = ScanScalar(INPUT, params); + m_simpleKeyAllowed = false; + m_canBeJSONFlow = true; + + Token token(Token::NON_PLAIN_SCALAR, mark); + token.value = scalar; + m_tokens.push(token); + } + + // BlockScalarToken + // . These need a little extra processing beforehand. + // . We need to scan the line where the indicator is (this doesn't count as part of the scalar), + // and then we need to figure out what level of indentation we'll be using. + void Scanner::ScanBlockScalar() + { + std::string scalar; + + ScanScalarParams params; + params.indent = 1; + params.detectIndent = true; + + // eat block indicator ('|' or '>') + Mark mark = INPUT.mark(); + char indicator = INPUT.get(); + params.fold = (indicator == Keys::FoldedScalar ? FOLD_BLOCK : DONT_FOLD); + + // eat chomping/indentation indicators + params.chomp = CLIP; + int n = Exp::Chomp().Match(INPUT); + for(int i=0;i= 0) + params.indent += GetTopIndent(); + + params.eatLeadingWhitespace = false; + params.trimTrailingSpaces = false; + params.onTabInIndentation = THROW; + + scalar = ScanScalar(INPUT, params); + + // simple keys always ok after block scalars (since we're gonna start a new line anyways) + m_simpleKeyAllowed = true; + m_canBeJSONFlow = false; + + Token token(Token::NON_PLAIN_SCALAR, mark); + token.value = scalar; + m_tokens.push(token); + } +} diff --git a/yaml-cpp/src/setting.h b/yaml-cpp/src/setting.h new file mode 100644 index 0000000..806ccda --- /dev/null +++ b/yaml-cpp/src/setting.h @@ -0,0 +1,105 @@ +#ifndef SETTING_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define SETTING_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include +#include +#include "yaml-cpp/noncopyable.h" + +namespace YAML +{ + class SettingChangeBase; + + template + class Setting + { + public: + Setting(): m_value() {} + + const T get() const { return m_value; } + std::auto_ptr set(const T& value); + void restore(const Setting& oldSetting) { + m_value = oldSetting.get(); + } + + private: + T m_value; + }; + + class SettingChangeBase + { + public: + virtual ~SettingChangeBase() {} + virtual void pop() = 0; + }; + + template + class SettingChange: public SettingChangeBase + { + public: + SettingChange(Setting *pSetting): m_pCurSetting(pSetting) { + // copy old setting to save its state + m_oldSetting = *pSetting; + } + + virtual void pop() { + m_pCurSetting->restore(m_oldSetting); + } + + private: + Setting *m_pCurSetting; + Setting m_oldSetting; + }; + + template + inline std::auto_ptr Setting::set(const T& value) { + std::auto_ptr pChange(new SettingChange (this)); + m_value = value; + return pChange; + } + + class SettingChanges: private noncopyable + { + public: + SettingChanges() {} + ~SettingChanges() { clear(); } + + void clear() { + restore(); + + for(setting_changes::const_iterator it=m_settingChanges.begin();it!=m_settingChanges.end();++it) + delete *it; + m_settingChanges.clear(); + } + + void restore() { + for(setting_changes::const_iterator it=m_settingChanges.begin();it!=m_settingChanges.end();++it) + (*it)->pop(); + } + + void push(std::auto_ptr pSettingChange) { + m_settingChanges.push_back(pSettingChange.release()); + } + + // like std::auto_ptr - assignment is transfer of ownership + SettingChanges& operator = (SettingChanges& rhs) { + if(this == &rhs) + return *this; + + clear(); + m_settingChanges = rhs.m_settingChanges; + rhs.m_settingChanges.clear(); + return *this; + } + + private: + typedef std::vector setting_changes; + setting_changes m_settingChanges; + }; +} + +#endif // SETTING_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/simplekey.cpp b/yaml-cpp/src/simplekey.cpp new file mode 100644 index 0000000..857a9e0 --- /dev/null +++ b/yaml-cpp/src/simplekey.cpp @@ -0,0 +1,139 @@ +#include "scanner.h" +#include "token.h" +#include "yaml-cpp/exceptions.h" +#include "exp.h" + +namespace YAML +{ + Scanner::SimpleKey::SimpleKey(const Mark& mark_, int flowLevel_) + : mark(mark_), flowLevel(flowLevel_), pIndent(0), pMapStart(0), pKey(0) + { + } + + void Scanner::SimpleKey::Validate() + { + // Note: pIndent will *not* be garbage here; + // we "garbage collect" them so we can + // always refer to them + if(pIndent) + pIndent->status = IndentMarker::VALID; + if(pMapStart) + pMapStart->status = Token::VALID; + if(pKey) + pKey->status = Token::VALID; + } + + void Scanner::SimpleKey::Invalidate() + { + if(pIndent) + pIndent->status = IndentMarker::INVALID; + if(pMapStart) + pMapStart->status = Token::INVALID; + if(pKey) + pKey->status = Token::INVALID; + } + + // CanInsertPotentialSimpleKey + bool Scanner::CanInsertPotentialSimpleKey() const + { + if(!m_simpleKeyAllowed) + return false; + + return !ExistsActiveSimpleKey(); + } + + // ExistsActiveSimpleKey + // . Returns true if there's a potential simple key at our flow level + // (there's allowed at most one per flow level, i.e., at the start of the flow start token) + bool Scanner::ExistsActiveSimpleKey() const + { + if(m_simpleKeys.empty()) + return false; + + const SimpleKey& key = m_simpleKeys.top(); + return key.flowLevel == GetFlowLevel(); + } + + // InsertPotentialSimpleKey + // . If we can, add a potential simple key to the queue, + // and save it on a stack. + void Scanner::InsertPotentialSimpleKey() + { + if(!CanInsertPotentialSimpleKey()) + return; + + SimpleKey key(INPUT.mark(), GetFlowLevel()); + + // first add a map start, if necessary + if(InBlockContext()) { + key.pIndent = PushIndentTo(INPUT.column(), IndentMarker::MAP); + if(key.pIndent) { + key.pIndent->status = IndentMarker::UNKNOWN; + key.pMapStart = key.pIndent->pStartToken; + key.pMapStart->status = Token::UNVERIFIED; + } + } + + // then add the (now unverified) key + m_tokens.push(Token(Token::KEY, INPUT.mark())); + key.pKey = &m_tokens.back(); + key.pKey->status = Token::UNVERIFIED; + + m_simpleKeys.push(key); + } + + // InvalidateSimpleKey + // . Automatically invalidate the simple key in our flow level + void Scanner::InvalidateSimpleKey() + { + if(m_simpleKeys.empty()) + return; + + // grab top key + SimpleKey& key = m_simpleKeys.top(); + if(key.flowLevel != GetFlowLevel()) + return; + + key.Invalidate(); + m_simpleKeys.pop(); + } + + // VerifySimpleKey + // . Determines whether the latest simple key to be added is valid, + // and if so, makes it valid. + bool Scanner::VerifySimpleKey() + { + if(m_simpleKeys.empty()) + return false; + + // grab top key + SimpleKey key = m_simpleKeys.top(); + + // only validate if we're in the correct flow level + if(key.flowLevel != GetFlowLevel()) + return false; + + m_simpleKeys.pop(); + + bool isValid = true; + + // needs to be less than 1024 characters and inline + if(INPUT.line() != key.mark.line || INPUT.pos() - key.mark.pos > 1024) + isValid = false; + + // invalidate key + if(isValid) + key.Validate(); + else + key.Invalidate(); + + return isValid; + } + + void Scanner::PopAllSimpleKeys() + { + while(!m_simpleKeys.empty()) + m_simpleKeys.pop(); + } +} + diff --git a/yaml-cpp/src/singledocparser.cpp b/yaml-cpp/src/singledocparser.cpp new file mode 100644 index 0000000..47759c3 --- /dev/null +++ b/yaml-cpp/src/singledocparser.cpp @@ -0,0 +1,381 @@ +#include "singledocparser.h" +#include "collectionstack.h" +#include "directives.h" +#include "yaml-cpp/eventhandler.h" +#include "yaml-cpp/exceptions.h" +#include "scanner.h" +#include "tag.h" +#include "token.h" +#include +#include +#include + +namespace YAML +{ + SingleDocParser::SingleDocParser(Scanner& scanner, const Directives& directives): m_scanner(scanner), m_directives(directives), m_pCollectionStack(new CollectionStack), m_curAnchor(0) + { + } + + SingleDocParser::~SingleDocParser() + { + } + + // HandleDocument + // . Handles the next document + // . Throws a ParserException on error. + void SingleDocParser::HandleDocument(EventHandler& eventHandler) + { + assert(!m_scanner.empty()); // guaranteed that there are tokens + assert(!m_curAnchor); + + eventHandler.OnDocumentStart(m_scanner.peek().mark); + + // eat doc start + if(m_scanner.peek().type == Token::DOC_START) + m_scanner.pop(); + + // recurse! + HandleNode(eventHandler); + + eventHandler.OnDocumentEnd(); + + // and finally eat any doc ends we see + while(!m_scanner.empty() && m_scanner.peek().type == Token::DOC_END) + m_scanner.pop(); + } + + void SingleDocParser::HandleNode(EventHandler& eventHandler) + { + // an empty node *is* a possibility + if(m_scanner.empty()) { + eventHandler.OnNull(Mark::null(), NullAnchor); + return; + } + + // save location + Mark mark = m_scanner.peek().mark; + + // special case: a value node by itself must be a map, with no header + if(m_scanner.peek().type == Token::VALUE) { + eventHandler.OnMapStart(mark, "", NullAnchor); + HandleMap(eventHandler); + eventHandler.OnMapEnd(); + return; + } + + // special case: an alias node + if(m_scanner.peek().type == Token::ALIAS) { + eventHandler.OnAlias(mark, LookupAnchor(mark, m_scanner.peek().value)); + m_scanner.pop(); + return; + } + + std::string tag; + anchor_t anchor; + ParseProperties(tag, anchor); + + const Token& token = m_scanner.peek(); + + // add non-specific tags + if(tag.empty()) + tag = (token.type == Token::NON_PLAIN_SCALAR ? "!" : "?"); + + // now split based on what kind of node we should be + switch(token.type) { + case Token::PLAIN_SCALAR: + case Token::NON_PLAIN_SCALAR: + eventHandler.OnScalar(mark, tag, anchor, token.value); + m_scanner.pop(); + return; + case Token::FLOW_SEQ_START: + case Token::BLOCK_SEQ_START: + eventHandler.OnSequenceStart(mark, tag, anchor); + HandleSequence(eventHandler); + eventHandler.OnSequenceEnd(); + return; + case Token::FLOW_MAP_START: + case Token::BLOCK_MAP_START: + eventHandler.OnMapStart(mark, tag, anchor); + HandleMap(eventHandler); + eventHandler.OnMapEnd(); + return; + case Token::KEY: + // compact maps can only go in a flow sequence + if(m_pCollectionStack->GetCurCollectionType() == CollectionType::FlowSeq) { + eventHandler.OnMapStart(mark, tag, anchor); + HandleMap(eventHandler); + eventHandler.OnMapEnd(); + return; + } + break; + default: + break; + } + + if(tag == "?") + eventHandler.OnNull(mark, anchor); + else + eventHandler.OnScalar(mark, tag, anchor, ""); + } + + void SingleDocParser::HandleSequence(EventHandler& eventHandler) + { + // split based on start token + switch(m_scanner.peek().type) { + case Token::BLOCK_SEQ_START: HandleBlockSequence(eventHandler); break; + case Token::FLOW_SEQ_START: HandleFlowSequence(eventHandler); break; + default: break; + } + } + + void SingleDocParser::HandleBlockSequence(EventHandler& eventHandler) + { + // eat start token + m_scanner.pop(); + m_pCollectionStack->PushCollectionType(CollectionType::BlockSeq); + + while(1) { + if(m_scanner.empty()) + throw ParserException(Mark::null(), ErrorMsg::END_OF_SEQ); + + Token token = m_scanner.peek(); + if(token.type != Token::BLOCK_ENTRY && token.type != Token::BLOCK_SEQ_END) + throw ParserException(token.mark, ErrorMsg::END_OF_SEQ); + + m_scanner.pop(); + if(token.type == Token::BLOCK_SEQ_END) + break; + + // check for null + if(!m_scanner.empty()) { + const Token& token = m_scanner.peek(); + if(token.type == Token::BLOCK_ENTRY || token.type == Token::BLOCK_SEQ_END) { + eventHandler.OnNull(token.mark, NullAnchor); + continue; + } + } + + HandleNode(eventHandler); + } + + m_pCollectionStack->PopCollectionType(CollectionType::BlockSeq); + } + + void SingleDocParser::HandleFlowSequence(EventHandler& eventHandler) + { + // eat start token + m_scanner.pop(); + m_pCollectionStack->PushCollectionType(CollectionType::FlowSeq); + + while(1) { + if(m_scanner.empty()) + throw ParserException(Mark::null(), ErrorMsg::END_OF_SEQ_FLOW); + + // first check for end + if(m_scanner.peek().type == Token::FLOW_SEQ_END) { + m_scanner.pop(); + break; + } + + // then read the node + HandleNode(eventHandler); + + // now eat the separator (or could be a sequence end, which we ignore - but if it's neither, then it's a bad node) + Token& token = m_scanner.peek(); + if(token.type == Token::FLOW_ENTRY) + m_scanner.pop(); + else if(token.type != Token::FLOW_SEQ_END) + throw ParserException(token.mark, ErrorMsg::END_OF_SEQ_FLOW); + } + + m_pCollectionStack->PopCollectionType(CollectionType::FlowSeq); + } + + void SingleDocParser::HandleMap(EventHandler& eventHandler) + { + // split based on start token + switch(m_scanner.peek().type) { + case Token::BLOCK_MAP_START: HandleBlockMap(eventHandler); break; + case Token::FLOW_MAP_START: HandleFlowMap(eventHandler); break; + case Token::KEY: HandleCompactMap(eventHandler); break; + case Token::VALUE: HandleCompactMapWithNoKey(eventHandler); break; + default: break; + } + } + + void SingleDocParser::HandleBlockMap(EventHandler& eventHandler) + { + // eat start token + m_scanner.pop(); + m_pCollectionStack->PushCollectionType(CollectionType::BlockMap); + + while(1) { + if(m_scanner.empty()) + throw ParserException(Mark::null(), ErrorMsg::END_OF_MAP); + + Token token = m_scanner.peek(); + if(token.type != Token::KEY && token.type != Token::VALUE && token.type != Token::BLOCK_MAP_END) + throw ParserException(token.mark, ErrorMsg::END_OF_MAP); + + if(token.type == Token::BLOCK_MAP_END) { + m_scanner.pop(); + break; + } + + // grab key (if non-null) + if(token.type == Token::KEY) { + m_scanner.pop(); + HandleNode(eventHandler); + } else { + eventHandler.OnNull(token.mark, NullAnchor); + } + + // now grab value (optional) + if(!m_scanner.empty() && m_scanner.peek().type == Token::VALUE) { + m_scanner.pop(); + HandleNode(eventHandler); + } else { + eventHandler.OnNull(token.mark, NullAnchor); + } + } + + m_pCollectionStack->PopCollectionType(CollectionType::BlockMap); + } + + void SingleDocParser::HandleFlowMap(EventHandler& eventHandler) + { + // eat start token + m_scanner.pop(); + m_pCollectionStack->PushCollectionType(CollectionType::FlowMap); + + while(1) { + if(m_scanner.empty()) + throw ParserException(Mark::null(), ErrorMsg::END_OF_MAP_FLOW); + + Token& token = m_scanner.peek(); + // first check for end + if(token.type == Token::FLOW_MAP_END) { + m_scanner.pop(); + break; + } + + // grab key (if non-null) + if(token.type == Token::KEY) { + m_scanner.pop(); + HandleNode(eventHandler); + } else { + eventHandler.OnNull(token.mark, NullAnchor); + } + + // now grab value (optional) + if(!m_scanner.empty() && m_scanner.peek().type == Token::VALUE) { + m_scanner.pop(); + HandleNode(eventHandler); + } else { + eventHandler.OnNull(token.mark, NullAnchor); + } + + // now eat the separator (or could be a map end, which we ignore - but if it's neither, then it's a bad node) + Token& nextToken = m_scanner.peek(); + if(nextToken.type == Token::FLOW_ENTRY) + m_scanner.pop(); + else if(nextToken.type != Token::FLOW_MAP_END) + throw ParserException(nextToken.mark, ErrorMsg::END_OF_MAP_FLOW); + } + + m_pCollectionStack->PopCollectionType(CollectionType::FlowMap); + } + + // . Single "key: value" pair in a flow sequence + void SingleDocParser::HandleCompactMap(EventHandler& eventHandler) + { + m_pCollectionStack->PushCollectionType(CollectionType::CompactMap); + + // grab key + Mark mark = m_scanner.peek().mark; + m_scanner.pop(); + HandleNode(eventHandler); + + // now grab value (optional) + if(!m_scanner.empty() && m_scanner.peek().type == Token::VALUE) { + m_scanner.pop(); + HandleNode(eventHandler); + } else { + eventHandler.OnNull(mark, NullAnchor); + } + + m_pCollectionStack->PopCollectionType(CollectionType::CompactMap); + } + + // . Single ": value" pair in a flow sequence + void SingleDocParser::HandleCompactMapWithNoKey(EventHandler& eventHandler) + { + m_pCollectionStack->PushCollectionType(CollectionType::CompactMap); + + // null key + eventHandler.OnNull(m_scanner.peek().mark, NullAnchor); + + // grab value + m_scanner.pop(); + HandleNode(eventHandler); + + m_pCollectionStack->PopCollectionType(CollectionType::CompactMap); + } + + // ParseProperties + // . Grabs any tag or anchor tokens and deals with them. + void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor) + { + tag.clear(); + anchor = NullAnchor; + + while(1) { + if(m_scanner.empty()) + return; + + switch(m_scanner.peek().type) { + case Token::TAG: ParseTag(tag); break; + case Token::ANCHOR: ParseAnchor(anchor); break; + default: return; + } + } + } + + void SingleDocParser::ParseTag(std::string& tag) + { + Token& token = m_scanner.peek(); + if(!tag.empty()) + throw ParserException(token.mark, ErrorMsg::MULTIPLE_TAGS); + + Tag tagInfo(token); + tag = tagInfo.Translate(m_directives); + m_scanner.pop(); + } + + void SingleDocParser::ParseAnchor(anchor_t& anchor) + { + Token& token = m_scanner.peek(); + if(anchor) + throw ParserException(token.mark, ErrorMsg::MULTIPLE_ANCHORS); + + anchor = RegisterAnchor(token.value); + m_scanner.pop(); + } + + anchor_t SingleDocParser::RegisterAnchor(const std::string& name) + { + if(name.empty()) + return NullAnchor; + + return m_anchors[name] = ++m_curAnchor; + } + + anchor_t SingleDocParser::LookupAnchor(const Mark& mark, const std::string& name) const + { + Anchors::const_iterator it = m_anchors.find(name); + if(it == m_anchors.end()) + throw ParserException(mark, ErrorMsg::UNKNOWN_ANCHOR); + + return it->second; + } +} diff --git a/yaml-cpp/src/singledocparser.h b/yaml-cpp/src/singledocparser.h new file mode 100644 index 0000000..3798dcc --- /dev/null +++ b/yaml-cpp/src/singledocparser.h @@ -0,0 +1,65 @@ +#ifndef SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/anchor.h" +#include "yaml-cpp/noncopyable.h" +#include +#include +#include + +namespace YAML +{ + struct Directives; + struct Mark; + struct Token; + class CollectionStack; + class EventHandler; + class Node; + class Scanner; + + class SingleDocParser: private noncopyable + { + public: + SingleDocParser(Scanner& scanner, const Directives& directives); + ~SingleDocParser(); + + void HandleDocument(EventHandler& eventHandler); + + private: + void HandleNode(EventHandler& eventHandler); + + void HandleSequence(EventHandler& eventHandler); + void HandleBlockSequence(EventHandler& eventHandler); + void HandleFlowSequence(EventHandler& eventHandler); + + void HandleMap(EventHandler& eventHandler); + void HandleBlockMap(EventHandler& eventHandler); + void HandleFlowMap(EventHandler& eventHandler); + void HandleCompactMap(EventHandler& eventHandler); + void HandleCompactMapWithNoKey(EventHandler& eventHandler); + + void ParseProperties(std::string& tag, anchor_t& anchor); + void ParseTag(std::string& tag); + void ParseAnchor(anchor_t& anchor); + + anchor_t RegisterAnchor(const std::string& name); + anchor_t LookupAnchor(const Mark& mark, const std::string& name) const; + + private: + Scanner& m_scanner; + const Directives& m_directives; + std::auto_ptr m_pCollectionStack; + + typedef std::map Anchors; + Anchors m_anchors; + + anchor_t m_curAnchor; + }; +} + +#endif // SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/stream.cpp b/yaml-cpp/src/stream.cpp new file mode 100644 index 0000000..5cfb1bb --- /dev/null +++ b/yaml-cpp/src/stream.cpp @@ -0,0 +1,448 @@ +#include "stream.h" +#include +#include "exp.h" + +#ifndef YAML_PREFETCH_SIZE +#define YAML_PREFETCH_SIZE 2048 +#endif + +#define S_ARRAY_SIZE( A ) (sizeof(A)/sizeof(*(A))) +#define S_ARRAY_END( A ) ((A) + S_ARRAY_SIZE(A)) + +#define CP_REPLACEMENT_CHARACTER (0xFFFD) + +namespace YAML +{ + enum UtfIntroState { + uis_start, + uis_utfbe_b1, + uis_utf32be_b2, + uis_utf32be_bom3, + uis_utf32be, + uis_utf16be, + uis_utf16be_bom1, + uis_utfle_bom1, + uis_utf16le_bom2, + uis_utf32le_bom3, + uis_utf16le, + uis_utf32le, + uis_utf8_imp, + uis_utf16le_imp, + uis_utf32le_imp3, + uis_utf8_bom1, + uis_utf8_bom2, + uis_utf8, + uis_error + }; + + enum UtfIntroCharType { + uict00, + uictBB, + uictBF, + uictEF, + uictFE, + uictFF, + uictAscii, + uictOther, + uictMax + }; + + static bool s_introFinalState[] = { + false, //uis_start + false, //uis_utfbe_b1 + false, //uis_utf32be_b2 + false, //uis_utf32be_bom3 + true, //uis_utf32be + true, //uis_utf16be + false, //uis_utf16be_bom1 + false, //uis_utfle_bom1 + false, //uis_utf16le_bom2 + false, //uis_utf32le_bom3 + true, //uis_utf16le + true, //uis_utf32le + false, //uis_utf8_imp + false, //uis_utf16le_imp + false, //uis_utf32le_imp3 + false, //uis_utf8_bom1 + false, //uis_utf8_bom2 + true, //uis_utf8 + true, //uis_error + }; + + static UtfIntroState s_introTransitions[][uictMax] = { + // uict00, uictBB, uictBF, uictEF, uictFE, uictFF, uictAscii, uictOther + {uis_utfbe_b1, uis_utf8, uis_utf8, uis_utf8_bom1, uis_utf16be_bom1, uis_utfle_bom1, uis_utf8_imp, uis_utf8}, + {uis_utf32be_b2, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf16be, uis_utf8}, + {uis_utf32be, uis_utf8, uis_utf8, uis_utf8, uis_utf32be_bom3, uis_utf8, uis_utf8, uis_utf8}, + {uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf32be, uis_utf8, uis_utf8}, + {uis_utf32be, uis_utf32be, uis_utf32be, uis_utf32be, uis_utf32be, uis_utf32be, uis_utf32be, uis_utf32be}, + {uis_utf16be, uis_utf16be, uis_utf16be, uis_utf16be, uis_utf16be, uis_utf16be, uis_utf16be, uis_utf16be}, + {uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf16be, uis_utf8, uis_utf8}, + {uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf16le_bom2, uis_utf8, uis_utf8, uis_utf8}, + {uis_utf32le_bom3, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le}, + {uis_utf32le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le}, + {uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le}, + {uis_utf32le, uis_utf32le, uis_utf32le, uis_utf32le, uis_utf32le, uis_utf32le, uis_utf32le, uis_utf32le}, + {uis_utf16le_imp, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8}, + {uis_utf32le_imp3, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le}, + {uis_utf32le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le, uis_utf16le}, + {uis_utf8, uis_utf8_bom2, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8}, + {uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8}, + {uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8, uis_utf8}, + }; + + static char s_introUngetCount[][uictMax] = { + // uict00, uictBB, uictBF, uictEF, uictFE, uictFF, uictAscii, uictOther + {0, 1, 1, 0, 0, 0, 0, 1}, + {0, 2, 2, 2, 2, 2, 2, 2}, + {3, 3, 3, 3, 0, 3, 3, 3}, + {4, 4, 4, 4, 4, 0, 4, 4}, + {1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1}, + {2, 2, 2, 2, 2, 0, 2, 2}, + {2, 2, 2, 2, 0, 2, 2, 2}, + {0, 1, 1, 1, 1, 1, 1, 1}, + {0, 2, 2, 2, 2, 2, 2, 2}, + {1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1}, + {0, 2, 2, 2, 2, 2, 2, 2}, + {0, 3, 3, 3, 3, 3, 3, 3}, + {4, 4, 4, 4, 4, 4, 4, 4}, + {2, 0, 2, 2, 2, 2, 2, 2}, + {3, 3, 0, 3, 3, 3, 3, 3}, + {1, 1, 1, 1, 1, 1, 1, 1}, + }; + + inline UtfIntroCharType IntroCharTypeOf(std::istream::int_type ch) + { + if (std::istream::traits_type::eof() == ch) { + return uictOther; + } + + switch (ch) { + case 0: return uict00; + case 0xBB: return uictBB; + case 0xBF: return uictBF; + case 0xEF: return uictEF; + case 0xFE: return uictFE; + case 0xFF: return uictFF; + } + + if ((ch > 0) && (ch < 0xFF)) { + return uictAscii; + } + + return uictOther; + } + + inline char Utf8Adjust(unsigned long ch, unsigned char lead_bits, unsigned char rshift) + { + const unsigned char header = ((1 << lead_bits) - 1) << (8 - lead_bits); + const unsigned char mask = (0xFF >> (lead_bits + 1)); + return static_cast(static_cast( + header | ((ch >> rshift) & mask) + )); + } + + inline void QueueUnicodeCodepoint(std::deque& q, unsigned long ch) + { + // We are not allowed to queue the Stream::eof() codepoint, so + // replace it with CP_REPLACEMENT_CHARACTER + if (static_cast(Stream::eof()) == ch) + { + ch = CP_REPLACEMENT_CHARACTER; + } + + if (ch < 0x80) + { + q.push_back(Utf8Adjust(ch, 0, 0)); + } + else if (ch < 0x800) + { + q.push_back(Utf8Adjust(ch, 2, 6)); + q.push_back(Utf8Adjust(ch, 1, 0)); + } + else if (ch < 0x10000) + { + q.push_back(Utf8Adjust(ch, 3, 12)); + q.push_back(Utf8Adjust(ch, 1, 6)); + q.push_back(Utf8Adjust(ch, 1, 0)); + } + else + { + q.push_back(Utf8Adjust(ch, 4, 18)); + q.push_back(Utf8Adjust(ch, 1, 12)); + q.push_back(Utf8Adjust(ch, 1, 6)); + q.push_back(Utf8Adjust(ch, 1, 0)); + } + } + + Stream::Stream(std::istream& input) + : m_input(input), + m_pPrefetched(new unsigned char[YAML_PREFETCH_SIZE]), + m_nPrefetchedAvailable(0), m_nPrefetchedUsed(0) + { + typedef std::istream::traits_type char_traits; + + if(!input) + return; + + // Determine (or guess) the character-set by reading the BOM, if any. See + // the YAML specification for the determination algorithm. + char_traits::int_type intro[4]; + int nIntroUsed = 0; + UtfIntroState state = uis_start; + for(; !s_introFinalState[state]; ) { + std::istream::int_type ch = input.get(); + intro[nIntroUsed++] = ch; + UtfIntroCharType charType = IntroCharTypeOf(ch); + UtfIntroState newState = s_introTransitions[state][charType]; + int nUngets = s_introUngetCount[state][charType]; + if(nUngets > 0) { + input.clear(); + for(; nUngets > 0; --nUngets) { + if(char_traits::eof() != intro[--nIntroUsed]) + input.putback(char_traits::to_char_type(intro[nIntroUsed])); + } + } + state = newState; + } + + switch (state) { + case uis_utf8: m_charSet = utf8; break; + case uis_utf16le: m_charSet = utf16le; break; + case uis_utf16be: m_charSet = utf16be; break; + case uis_utf32le: m_charSet = utf32le; break; + case uis_utf32be: m_charSet = utf32be; break; + default: m_charSet = utf8; break; + } + + ReadAheadTo(0); + } + + Stream::~Stream() + { + delete[] m_pPrefetched; + } + + char Stream::peek() const + { + if (m_readahead.empty()) + { + return Stream::eof(); + } + + return m_readahead[0]; + } + + Stream::operator bool() const + { + return m_input.good() || (!m_readahead.empty() && m_readahead[0] != Stream::eof()); + } + + // get + // . Extracts a character from the stream and updates our position + char Stream::get() + { + char ch = peek(); + AdvanceCurrent(); + m_mark.column++; + + if(ch == '\n') { + m_mark.column = 0; + m_mark.line++; + } + + return ch; + } + + // get + // . Extracts 'n' characters from the stream and updates our position + std::string Stream::get(int n) + { + std::string ret; + ret.reserve(n); + for(int i=0;i i; + } + + void Stream::StreamInUtf8() const + { + unsigned char b = GetNextByte(); + if (m_input.good()) + { + m_readahead.push_back(b); + } + } + + void Stream::StreamInUtf16() const + { + unsigned long ch = 0; + unsigned char bytes[2]; + int nBigEnd = (m_charSet == utf16be) ? 0 : 1; + + bytes[0] = GetNextByte(); + bytes[1] = GetNextByte(); + if (!m_input.good()) + { + return; + } + ch = (static_cast(bytes[nBigEnd]) << 8) | + static_cast(bytes[1 ^ nBigEnd]); + + if (ch >= 0xDC00 && ch < 0xE000) + { + // Trailing (low) surrogate...ugh, wrong order + QueueUnicodeCodepoint(m_readahead, CP_REPLACEMENT_CHARACTER); + return; + } + else if (ch >= 0xD800 && ch < 0xDC00) + { + // ch is a leading (high) surrogate + + // Four byte UTF-8 code point + + // Read the trailing (low) surrogate + for (;;) + { + bytes[0] = GetNextByte(); + bytes[1] = GetNextByte(); + if (!m_input.good()) + { + QueueUnicodeCodepoint(m_readahead, CP_REPLACEMENT_CHARACTER); + return; + } + unsigned long chLow = (static_cast(bytes[nBigEnd]) << 8) | + static_cast(bytes[1 ^ nBigEnd]); + if (chLow < 0xDC00 || ch >= 0xE000) + { + // Trouble...not a low surrogate. Dump a REPLACEMENT CHARACTER into the stream. + QueueUnicodeCodepoint(m_readahead, CP_REPLACEMENT_CHARACTER); + + // Deal with the next UTF-16 unit + if (chLow < 0xD800 || ch >= 0xE000) + { + // Easiest case: queue the codepoint and return + QueueUnicodeCodepoint(m_readahead, ch); + return; + } + else + { + // Start the loop over with the new high surrogate + ch = chLow; + continue; + } + } + + // Select the payload bits from the high surrogate + ch &= 0x3FF; + ch <<= 10; + + // Include bits from low surrogate + ch |= (chLow & 0x3FF); + + // Add the surrogacy offset + ch += 0x10000; + } + } + + QueueUnicodeCodepoint(m_readahead, ch); + } + + inline char* ReadBuffer(unsigned char* pBuffer) + { + return reinterpret_cast(pBuffer); + } + + unsigned char Stream::GetNextByte() const + { + if (m_nPrefetchedUsed >= m_nPrefetchedAvailable) + { + std::streambuf *pBuf = m_input.rdbuf(); + m_nPrefetchedAvailable = pBuf->sgetn(ReadBuffer(m_pPrefetched), + YAML_PREFETCH_SIZE); + m_nPrefetchedUsed = 0; + if (!m_nPrefetchedAvailable) + { + m_input.setstate(std::ios_base::eofbit); + } + + if (0 == m_nPrefetchedAvailable) + { + return 0; + } + } + + return m_pPrefetched[m_nPrefetchedUsed++]; + } + + void Stream::StreamInUtf32() const + { + static int indexes[2][4] = { + {3, 2, 1, 0}, + {0, 1, 2, 3} + }; + + unsigned long ch = 0; + unsigned char bytes[4]; + int* pIndexes = (m_charSet == utf32be) ? indexes[1] : indexes[0]; + + bytes[0] = GetNextByte(); + bytes[1] = GetNextByte(); + bytes[2] = GetNextByte(); + bytes[3] = GetNextByte(); + if (!m_input.good()) + { + return; + } + + for (int i = 0; i < 4; ++i) + { + ch <<= 8; + ch |= bytes[pIndexes[i]]; + } + + QueueUnicodeCodepoint(m_readahead, ch); + } +} diff --git a/yaml-cpp/src/stream.h b/yaml-cpp/src/stream.h new file mode 100644 index 0000000..87f48dc --- /dev/null +++ b/yaml-cpp/src/stream.h @@ -0,0 +1,79 @@ +#ifndef STREAM_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define STREAM_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/noncopyable.h" +#include "yaml-cpp/mark.h" +#include +#include +#include +#include +#include +#include + +namespace YAML +{ + class Stream: private noncopyable + { + public: + friend class StreamCharSource; + + Stream(std::istream& input); + ~Stream(); + + operator bool() const; + bool operator !() const { return !static_cast (*this); } + + char peek() const; + char get(); + std::string get(int n); + void eat(int n = 1); + + static char eof() { return 0x04; } + + const Mark mark() const { return m_mark; } + int pos() const { return m_mark.pos; } + int line() const { return m_mark.line; } + int column() const { return m_mark.column; } + void ResetColumn() { m_mark.column = 0; } + + private: + enum CharacterSet {utf8, utf16le, utf16be, utf32le, utf32be}; + + std::istream& m_input; + Mark m_mark; + + CharacterSet m_charSet; + mutable std::deque m_readahead; + unsigned char* const m_pPrefetched; + mutable size_t m_nPrefetchedAvailable; + mutable size_t m_nPrefetchedUsed; + + void AdvanceCurrent(); + char CharAt(size_t i) const; + bool ReadAheadTo(size_t i) const; + bool _ReadAheadTo(size_t i) const; + void StreamInUtf8() const; + void StreamInUtf16() const; + void StreamInUtf32() const; + unsigned char GetNextByte() const; + }; + + // CharAt + // . Unchecked access + inline char Stream::CharAt(size_t i) const { + return m_readahead[i]; + } + + inline bool Stream::ReadAheadTo(size_t i) const { + if(m_readahead.size() > i) + return true; + return _ReadAheadTo(i); + } +} + +#endif // STREAM_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/streamcharsource.h b/yaml-cpp/src/streamcharsource.h new file mode 100644 index 0000000..21fae4e --- /dev/null +++ b/yaml-cpp/src/streamcharsource.h @@ -0,0 +1,48 @@ +#ifndef STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/noncopyable.h" +#include + +namespace YAML +{ + class StreamCharSource + { + public: + StreamCharSource(const Stream& stream): m_offset(0), m_stream(stream) {} + StreamCharSource(const StreamCharSource& source): m_offset(source.m_offset), m_stream(source.m_stream) {} + ~StreamCharSource() {} + + operator bool() const; + char operator [] (std::size_t i) const { return m_stream.CharAt(m_offset + i); } + bool operator !() const { return !static_cast(*this); } + + const StreamCharSource operator + (int i) const; + + private: + std::size_t m_offset; + const Stream& m_stream; + + StreamCharSource& operator = (const StreamCharSource&); // non-assignable + }; + + inline StreamCharSource::operator bool() const { + return m_stream.ReadAheadTo(m_offset); + } + + inline const StreamCharSource StreamCharSource::operator + (int i) const { + StreamCharSource source(*this); + if(static_cast (source.m_offset) + i >= 0) + source.m_offset += i; + else + source.m_offset = 0; + return source; + } +} + +#endif // STREAMCHARSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/stringsource.h b/yaml-cpp/src/stringsource.h new file mode 100644 index 0000000..21be3c9 --- /dev/null +++ b/yaml-cpp/src/stringsource.h @@ -0,0 +1,47 @@ +#ifndef STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include + +namespace YAML +{ + class StringCharSource + { + public: + StringCharSource(const char *str, std::size_t size): m_str(str), m_size(size), m_offset(0) {} + + operator bool() const { return m_offset < m_size; } + char operator [] (std::size_t i) const { return m_str[m_offset + i]; } + bool operator !() const { return !static_cast(*this); } + + const StringCharSource operator + (int i) const { + StringCharSource source(*this); + if(static_cast (source.m_offset) + i >= 0) + source.m_offset += i; + else + source.m_offset = 0; + return source; + } + + StringCharSource& operator ++ () { + ++m_offset; + return *this; + } + + StringCharSource& operator += (std::size_t offset) { + m_offset += offset; + return *this; + } + private: + const char *m_str; + std::size_t m_size; + std::size_t m_offset; + }; +} + +#endif // STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/tag.cpp b/yaml-cpp/src/tag.cpp new file mode 100644 index 0000000..82a4704 --- /dev/null +++ b/yaml-cpp/src/tag.cpp @@ -0,0 +1,52 @@ +#include "tag.h" +#include "directives.h" +#include "token.h" +#include +#include + +namespace YAML +{ + Tag::Tag(const Token& token): type(static_cast(token.data)) + { + switch(type) { + case VERBATIM: + value = token.value; + break; + case PRIMARY_HANDLE: + value = token.value; + break; + case SECONDARY_HANDLE: + value = token.value; + break; + case NAMED_HANDLE: + handle = token.value; + value = token.params[0]; + break; + case NON_SPECIFIC: + break; + default: + assert(false); + } + } + + const std::string Tag::Translate(const Directives& directives) + { + switch(type) { + case VERBATIM: + return value; + case PRIMARY_HANDLE: + return directives.TranslateTagHandle("!") + value; + case SECONDARY_HANDLE: + return directives.TranslateTagHandle("!!") + value; + case NAMED_HANDLE: + return directives.TranslateTagHandle("!" + handle + "!") + value; + case NON_SPECIFIC: + // TODO: + return "!"; + default: + assert(false); + } + throw std::runtime_error("yaml-cpp: internal error, bad tag type"); + } +} + diff --git a/yaml-cpp/src/tag.h b/yaml-cpp/src/tag.h new file mode 100644 index 0000000..5f77548 --- /dev/null +++ b/yaml-cpp/src/tag.h @@ -0,0 +1,28 @@ +#ifndef TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + +#include + +namespace YAML +{ + struct Token; + struct Directives; + + struct Tag { + enum TYPE { + VERBATIM, PRIMARY_HANDLE, SECONDARY_HANDLE, NAMED_HANDLE, NON_SPECIFIC + }; + + Tag(const Token& token); + const std::string Translate(const Directives& directives); + + TYPE type; + std::string handle, value; + }; +} + +#endif // TAG_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/src/token.h b/yaml-cpp/src/token.h new file mode 100644 index 0000000..9807e25 --- /dev/null +++ b/yaml-cpp/src/token.h @@ -0,0 +1,85 @@ +#ifndef TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66 +#define TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66 + +#if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 +#pragma once +#endif + + +#include "yaml-cpp/mark.h" +#include +#include +#include + +namespace YAML +{ + const std::string TokenNames[] = { + "DIRECTIVE", + "DOC_START", + "DOC_END", + "BLOCK_SEQ_START", + "BLOCK_MAP_START", + "BLOCK_SEQ_END", + "BLOCK_MAP_END", + "BLOCK_ENTRY", + "FLOW_SEQ_START", + "FLOW_MAP_START", + "FLOW_SEQ_END", + "FLOW_MAP_END", + "FLOW_MAP_COMPACT", + "FLOW_ENTRY", + "KEY", + "VALUE", + "ANCHOR", + "ALIAS", + "TAG", + "SCALAR" + }; + + struct Token { + // enums + enum STATUS { VALID, INVALID, UNVERIFIED }; + enum TYPE { + DIRECTIVE, + DOC_START, + DOC_END, + BLOCK_SEQ_START, + BLOCK_MAP_START, + BLOCK_SEQ_END, + BLOCK_MAP_END, + BLOCK_ENTRY, + FLOW_SEQ_START, + FLOW_MAP_START, + FLOW_SEQ_END, + FLOW_MAP_END, + FLOW_MAP_COMPACT, + FLOW_ENTRY, + KEY, + VALUE, + ANCHOR, + ALIAS, + TAG, + PLAIN_SCALAR, + NON_PLAIN_SCALAR + }; + + // data + Token(TYPE type_, const Mark& mark_): status(VALID), type(type_), mark(mark_), data(0) {} + + friend std::ostream& operator << (std::ostream& out, const Token& token) { + out << TokenNames[token.type] << std::string(": ") << token.value; + for(std::size_t i=0;i params; + int data; + }; +} + +#endif // TOKEN_H_62B23520_7C8E_11DE_8A39_0800200C9A66 diff --git a/yaml-cpp/util/api.cpp b/yaml-cpp/util/api.cpp new file mode 100644 index 0000000..e5180a8 --- /dev/null +++ b/yaml-cpp/util/api.cpp @@ -0,0 +1,129 @@ +// a sketch of what the new API might look like + +#include "yaml-cpp/yaml.h" +#include + +int main() +{ + { + // test.yaml + // - foo + // - primes: [2, 3, 5, 7, 11] + // odds: [1, 3, 5, 7, 9, 11] + // - [x, y] + + // move-like semantics + YAML::Value root = YAML::Parse("test.yaml"); + + std::cout << root[0].as(); // "foo" + std::cout << str(root[0]); // "foo", shorthand? + std::cout << root[1]["primes"][3].as(); // "7" + std::cout << root[1]["odds"][6].as(); // throws? + + root[2].push_back(5); + root[3] = "Hello, World"; + root[0].reset(); + root[0]["key"] = "value"; + + std::cout << root; + // # not sure about formatting + // - {key: value} + // - primes: [2, 3, 5, 7, 11] + // odds: [1, 3, 5, 7, 9, 11] + // - [x, y, 5] + // - Hello, World + } + + { + // for all copy-like commands, think of python's "name/value" semantics + YAML::Value root = "Hello"; // Hello + root = YAML::Sequence(); // [] + root[0] = 0; // [0] + root[2] = "two"; // [0, ~, two] # forces root[1] to be initialized to null + + YAML::Value other = root; // both point to the same thing + other[0] = 5; // now root[0] is 0 also + other.push_back(root); // &1 [5, ~, two, *1] + other[3][0] = 0; // &1 [0, ~, two, *1] # since it's a true alias + other.push_back(Copy(root)); // &1 [0, ~, two, *1, &2 [0, ~, two, *2]] + other[4][0] = 5; // &1 [0, ~, two, *1, &2 [5, ~, two, *2]] # they're really different + } + + { + YAML::Value node; // ~ + node[0] = 1; // [1] # auto-construct a sequence + node["key"] = 5; // {0: 1, key: 5} # auto-turn it into a map + node.push_back(10); // error, can't turn a map into a sequence + node.erase("key"); // {0: 1} # still a map, even if we remove the key that caused the problem + node = "Hello"; // Hello # assignment overwrites everything, so it's now just a plain scalar + } + + { + YAML::Value map; // ~ + map[3] = 1; // {3: 1} # auto-constructs a map, *not* a sequence + + YAML::Value seq; // ~ + seq = YAML::Sequence(); // [] + seq[3] = 1; // [~, ~, ~, 1] + } + + { + YAML::Value node; // ~ + node[0] = node; // &1 [*1] # fun stuff + } + + { + YAML::Value node; + YAML::Value subnode = node["key"]; // 'subnode' is not instantiated ('node' is still null) + subnode = "value"; // {key: value} # now it is + YAML::Value subnode2 = node["key2"]; + node["key3"] = subnode2; // subnode2 is still not instantiated, but node["key3"] is "pseudo" aliased to it + subnode2 = "monkey"; // {key: value, key2: &1 monkey, key3: *1} # bam! it instantiates both + } + + { + YAML::Value seq = YAML::Sequence(); + seq[0] = "zero"; // [zero] + seq[1] = seq[0]; // [&1 zero, *1] + seq[0] = seq[1]; // [&1 zero, *1] # no-op (they both alias the same thing, so setting them equal is nothing) + Is(seq[0], seq[1]); // true + seq[1] = "one"; // [&1 one, *1] + UnAlias(seq[1]); // [one, one] + Is(seq[0], seq[1]); // false + } + + { + YAML::Value root; + root.push_back("zero"); + root.push_back("one"); + root.push_back("two"); + YAML::Value two = root[2]; + root = "scalar"; // 'two' is still "two", even though 'root' is "scalar" (the sequence effectively no longer exists) + + // Note: in all likelihood, the memory for nodes "zero" and "one" is still allocated. How can it go away? Weak pointers? + } + + { + YAML::Value root; // ~ + root[0] = root; // &1 [*1] + root[0] = 5; // [5] + } + + { + YAML::Value root; + YAML::Value key; + key["key"] = "value"; + root[key] = key; // &1 {key: value}: *1 + } + + { + YAML::Value root; + root[0] = "hi"; + root[1][0] = "bye"; + root[1][1] = root; // &1 [hi, [bye, *1]] # root + YAML::Value sub = root[1]; // &1 [bye, [hi, *1]] # sub + root = "gone"; // [bye, gone] # sub + } + + return 0; +} diff --git a/yaml-cpp/util/parse.cpp b/yaml-cpp/util/parse.cpp new file mode 100644 index 0000000..d02a76a --- /dev/null +++ b/yaml-cpp/util/parse.cpp @@ -0,0 +1,65 @@ +#include "yaml-cpp/yaml.h" +#include "yaml-cpp/eventhandler.h" +#include +#include +#include + +struct Params { + bool hasFile; + std::string fileName; +}; + +Params ParseArgs(int argc, char **argv) { + Params p; + + std::vector args(argv + 1, argv + argc); + + return p; +} + +class NullEventHandler: public YAML::EventHandler +{ +public: + virtual void OnDocumentStart(const YAML::Mark&) {} + virtual void OnDocumentEnd() {} + + virtual void OnNull(const YAML::Mark&, YAML::anchor_t) {} + virtual void OnAlias(const YAML::Mark&, YAML::anchor_t) {} + virtual void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t, const std::string&) {} + + virtual void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {} + virtual void OnSequenceEnd() {} + + virtual void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {} + virtual void OnMapEnd() {} +}; + +void parse(std::istream& input) +{ + try { + YAML::Parser parser(input); + YAML::Node doc; + while(parser.GetNextDocument(doc)) { + YAML::Emitter emitter; + emitter << doc; + std::cout << emitter.c_str() << "\n"; + } + } catch(const YAML::Exception& e) { + std::cerr << e.what() << "\n"; + } +} + +int main(int argc, char **argv) +{ + Params p = ParseArgs(argc, argv); + + if(argc > 1) { + std::ifstream fin; + fin.open(argv[1]); + parse(fin); + } else { + parse(std::cin); + } + + return 0; +} diff --git a/yaml-cpp/yaml-cpp.pc.cmake b/yaml-cpp/yaml-cpp.pc.cmake new file mode 100644 index 0000000..04d343f --- /dev/null +++ b/yaml-cpp/yaml-cpp.pc.cmake @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=${prefix}/@LIB_INSTALL_DIR@ +includedir=${prefix}/@INCLUDE_INSTALL_ROOT_DIR@ + +Name: Yaml-cpp +Description: A YAML parser and emitter for C++ +Version: @YAML_CPP_VERSION@ +Requires: +Libs: -L${libdir} -lyaml-cpp +Cflags: -I${includedir} -- 2.11.0