From af226b2437d5f84ebfd10b62dc5c95014ac2a21c Mon Sep 17 00:00:00 2001 From: whitequark Date: Tue, 11 Oct 2016 23:31:23 +0000 Subject: [PATCH] Fix rendering of reference axes in bottom left corner. --- src/drawentity.cpp | 3 ++- test/constraint/angle/free_in_3d.png | Bin 4757 -> 4773 bytes test/constraint/angle/normal.png | Bin 4859 -> 4878 bytes test/constraint/angle/reference.png | Bin 5245 -> 5262 bytes .../constraint/angle/reference_free_in_3d.png | Bin 4840 -> 4858 bytes test/constraint/angle/skew.png | Bin 4851 -> 4869 bytes test/constraint/arc_line_tangent/normal.png | Bin 5078 -> 5097 bytes .../at_midpoint/line_plane_free_in_3d.png | Bin 4315 -> 4333 bytes .../at_midpoint/line_plane_normal.png | Bin 4315 -> 4333 bytes .../at_midpoint/line_pt_free_in_3d.png | Bin 4280 -> 4298 bytes .../constraint/at_midpoint/line_pt_normal.png | Bin 4280 -> 4298 bytes test/constraint/comment/normal.png | Bin 4296 -> 4314 bytes .../cubic_line_tangent/free_in_3d.png | Bin 5032 -> 5049 bytes test/constraint/cubic_line_tangent/normal.png | Bin 5193 -> 5208 bytes .../curve_curve_tangent/arc_arc.png | Bin 4983 -> 5001 bytes .../curve_curve_tangent/arc_cubic.png | Bin 5202 -> 5217 bytes test/constraint/diameter/normal.png | Bin 5007 -> 5026 bytes test/constraint/diameter/reference.png | Bin 5091 -> 5108 bytes test/constraint/eq_len_pt_line_d/normal.png | Bin 4389 -> 4407 bytes test/constraint/eq_pt_ln_distances/normal.png | Bin 4344 -> 4363 bytes test/constraint/equal_angle/normal.png | Bin 5250 -> 5267 bytes test/constraint/equal_angle/other.png | Bin 4896 -> 4914 bytes test/constraint/equal_length_lines/normal.png | Bin 4323 -> 4341 bytes test/constraint/equal_line_arc_len/normal.png | Bin 4529 -> 4547 bytes test/constraint/equal_line_arc_len/pi.png | Bin 4632 -> 4651 bytes test/constraint/equal_line_arc_len/tau.png | Bin 4952 -> 4970 bytes test/constraint/equal_radius/normal.png | Bin 5238 -> 5255 bytes test/constraint/horizontal/line.png | Bin 4256 -> 4274 bytes test/constraint/horizontal/pt_pt.png | Bin 4251 -> 4268 bytes test/constraint/length_difference/normal.png | Bin 4443 -> 4462 bytes .../length_difference/reference.png | Bin 4524 -> 4542 bytes test/constraint/length_ratio/normal.png | Bin 4528 -> 4546 bytes test/constraint/length_ratio/reference.png | Bin 4598 -> 4616 bytes test/constraint/parallel/free_in_3d.png | Bin 4285 -> 4304 bytes test/constraint/parallel/normal.png | Bin 4667 -> 4686 bytes test/constraint/perpendicular/normal.png | Bin 4893 -> 4910 bytes .../points_coincident/free_in_3d.png | Bin 4223 -> 4241 bytes test/constraint/points_coincident/normal.png | Bin 4223 -> 4241 bytes test/constraint/proj_pt_distance/normal.png | Bin 4501 -> 4519 bytes .../constraint/proj_pt_distance/reference.png | Bin 4548 -> 4566 bytes test/constraint/pt_face_distance/normal.png | Bin 4260 -> 4275 bytes .../constraint/pt_face_distance/reference.png | Bin 4324 -> 4339 bytes test/constraint/pt_in_plane/normal.png | Bin 4211 -> 4228 bytes test/constraint/pt_line_distance/extended.png | Bin 4509 -> 4527 bytes .../pt_line_distance/free_in_3d.png | Bin 4385 -> 4403 bytes test/constraint/pt_line_distance/normal.png | Bin 4385 -> 4403 bytes .../constraint/pt_line_distance/reference.png | Bin 4457 -> 4475 bytes test/constraint/pt_on_circle/normal.png | Bin 4865 -> 4884 bytes test/constraint/pt_on_face/normal.png | Bin 4743 -> 4758 bytes .../constraint/pt_on_line/left_free_in_3d.png | Bin 4301 -> 4319 bytes test/constraint/pt_on_line/normal.png | Bin 4306 -> 4324 bytes .../pt_on_line/right_free_in_3d.png | Bin 4298 -> 4316 bytes test/constraint/pt_plane_distance/normal.png | Bin 4327 -> 4345 bytes .../pt_plane_distance/reference.png | Bin 4399 -> 4417 bytes test/constraint/pt_pt_distance/free_in_3d.png | Bin 4445 -> 4463 bytes test/constraint/pt_pt_distance/normal.png | Bin 4451 -> 4468 bytes test/constraint/pt_pt_distance/reference.png | Bin 4518 -> 4535 bytes test/constraint/same_orientation/normal.png | Bin 4454 -> 4472 bytes .../same_orientation/same_group.png | Bin 4358 -> 4376 bytes test/constraint/symmetric/free_in_3d.png | Bin 4360 -> 4378 bytes test/constraint/symmetric/normal.png | Bin 4345 -> 4362 bytes test/constraint/symmetric_horiz/normal.png | Bin 4345 -> 4362 bytes test/constraint/symmetric_line/normal.png | Bin 4413 -> 4431 bytes test/constraint/symmetric_vert/normal.png | Bin 4360 -> 4378 bytes test/constraint/vertical/line.png | Bin 4313 -> 4331 bytes test/constraint/vertical/pt_pt.png | Bin 4240 -> 4258 bytes test/constraint/where_dragged/free_in_3d.png | Bin 4239 -> 4257 bytes test/constraint/where_dragged/normal.png | Bin 4239 -> 4257 bytes test/request/arc_of_circle/normal.png | Bin 4534 -> 4552 bytes test/request/circle/normal.png | Bin 4789 -> 4806 bytes test/request/cubic/normal.png | Bin 4959 -> 4976 bytes test/request/cubic_periodic/normal.png | Bin 5200 -> 5216 bytes test/request/datum_point/normal.png | Bin 4187 -> 4205 bytes test/request/line_segment/normal.png | Bin 4227 -> 4246 bytes test/request/ttf_text/normal.png | Bin 6138 -> 6155 bytes 75 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drawentity.cpp b/src/drawentity.cpp index 373f6bf..3d72033 100644 --- a/src/drawentity.cpp +++ b/src/drawentity.cpp @@ -571,7 +571,6 @@ void Entity::Draw(DrawAs how, Canvas *canvas) { stroke.color = RgbaColor::From(0, luma, 0); } } - hcs = canvas->GetStroke(stroke); Quaternion q = NormalGetNum(); Vector tail; @@ -589,6 +588,8 @@ void Entity::Draw(DrawAs how, Canvas *canvas) { tail = SK.GetEntity(point[0])->PointGetNum(); } tail = camera.AlignToPixelGrid(tail); + + hcs = canvas->GetStroke(stroke); Vector v = (q.RotationN()).WithMagnitude(50.0 / camera.scale); Vector tip = tail.Plus(v); canvas->DrawLine(tail, tip, hcs); diff --git a/test/constraint/angle/free_in_3d.png b/test/constraint/angle/free_in_3d.png index 7fd497ea815fcd9d94d1eba05e26fe3e19f5e3aa..03a0afb1e55cfa20e4ef0d4a6c6625b1bf29cbc1 100644 GIT binary patch literal 4773 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 literal 4757 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 literal 4859 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 diff --git a/test/constraint/angle/reference.png b/test/constraint/angle/reference.png index 3da3445c7e031ea2c7b1f3988b5fe8392e93a293..ca91c0d133661a07ac9cca48178191a07759f9e1 100644 GIT binary patch delta 3206 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 delta 3229 zcmdT`i#t^78vkZx+{P`MQOYIdmP?zIa<@x+S5y*)!AuEhg(T!UGisYk+tBQ&l$lN! zJ26%XoQOETOc}ta6$e4V3fpXVcbh zgQ5h#2N989J&&XcCOV3zUNA)M_b@4J=f~L}i)P z5asOp@W>)l!%s2~p(JNyY;MG8b4Jp9Mn!@A)ofd*Q`h_WV5g=FJgbn{3n=H|qy97k$4f(}M-|b(06BA7m(6qD8C}<&)Ej zPN?223;ANh1t$xvA72YhQEv^>WwZIZl14uhH2+K$Q4c?{?8AlBK)eRKHs7 za+w!%x9|PIgi2E`c&1G}b+?*d;(+?IZ==Mu7V{+~vG(h@j(vSRS|q+U_7de?5NRe~ zsl2+XXn!u6ipUsA{OUVXl_LJc6kWKKvM4%~ooiF86Nnn&=?B3bve0DWz(w42BOb6R znVv~++;HR6%NF@)d3?Q)0a5ZHmn(-*J=YzSdr{1ob2VRoI1AsGr++<3I$me}v96q? z1U?!EAO6NzO@3(B@+8$hM5QV+EaF>Gere>lwxiE^FgG+=A7j)&_zX!hkYg90GK^<> zMA(tkQyp}onugK#Op91rx6vFeqi7z=L)dcbv)!0LvDa}_(Q5Oa%QeyNN!*6wy>{O4VZ^zA2S;biNrrt9HPpl zFSU09POYRU*4k%0MJRP=lpl}-A@BpGk zWalDm`NV|V!pt|lQfs%}C2jYb;-Q`iFXW69v((@!|JOZ9Rq|(*nl$Ql6|3WELvp@! zV$pYQ$cB5+@=w7NXr+IQw|k`90ie`#afY>G{ofUtS4N~@1vOqs&#Q0#>R?QR-Z&b( zyIcVeq99y5!*!=Jty7CQd=4%LQU!V=H@N9y4}|iEvr)DIT_y+sj}-_H!&9|ryboBB z{YCsWJwWj`B@X9*!vlEf-xGoLS=A_yqs$6b(^IA7v4ddpU0uu=t3hjZ9tX?%Q(cWp z%Vn47f}>diNO`us&NKgQrn*JDEjm#=$Q|VC*x>>JM5IR%h6@D{f26HK$YaNTY;((4 z7Kpe(xB+3kY;Lq~!g}jV~45{=;*YPW% z>9uoy?)!aW(`KbBFo^@j6?M2(3d_*34<1kJ5`~M)$&C&&%4;dBN5fQ|Uqy;F=%|WR z2Z*)~YpKRcbYD?ntySOnbLl1|?d3-B6Q^BpB{B~S)QU5*_a4Fk__Fvyi%7{I4&P&d zc4&t(x`ogeKgd>igjjoq>Bx_5M#(iXW%;P%S?*dmDx2P4fy2<$hc+N-?)CsVkgn(t zKiMv-i@B=_!Ui3Xpp|y_ce6v*R`#50SV&cJsdWx%L=@?{yr#Z3t;@8r-on)+ITfm4D(+8sQ2^yh%h5(w_|Dgzuh2)?m+ zl4DxXX{-ulU)M-BHRT(D$=G_G(%-vwga$Y0ubh_(-WF`4n1&QcyFF~y&E`OHnoaa z@UHTZUcw5$Od#u(FUK^mOX-&GJ1*K)aQ(yxbtb0q?fdAu38T3$q8>}1r08^JPW-|r zgY?%ox=A%}b`=cO@xtd`#F1Uzyl)$Mcdu~^*y9-U)z*84nlZ!<{41e(ReYIvVgMd> zDKH@?Nz$4Zx-83EF1Xb{jU&$|^QQ%XHM66ibzY?0sf=!9lD77YK|-A1{#hrmyH`P;;^8eZLm_}H$5)18j;hvlrgHwcjC%O%@1S=#G&u7Yq?3c6|#S7NYgz)R;xJFo?y!^ zvU5&#rS4cFu$f#*tV*-HZ{XQ!2`7K0+Dth|WNXo&j*rG^qT1-nJ#tU!Vbc0I`OTKN zt}UYepp?SfE-9mJ3#(#kW14q9S^yu+)5^PA(=D9Y8it`HX3LX$oPmMCHRq-dK@mZ^ZK&%+pByu2}j$^ xtA+r@;m5`avsNz)KzDBf`fsSR+%T#Hxu)I~OV#uh3ON9Mc6jdI#{HR+`7bs3)2RRe diff --git a/test/constraint/angle/reference_free_in_3d.png b/test/constraint/angle/reference_free_in_3d.png index 58b6498bfacd548cf34bf5a5d1dc6f15ccf3e5e6..db6b2788ef19cc948ef5079b213eb89c073e96f2 100644 GIT binary patch delta 2815 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 diff --git a/test/constraint/angle/skew.png b/test/constraint/angle/skew.png index 76191f56d4e65e419526099e3defe3238f4d5cc0..97fb0dbf53595dac63eef4b79d78fe3bb110b6cf 100644 GIT binary patch delta 2894 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 delta 2649 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 Cn42^J diff --git a/test/constraint/arc_line_tangent/normal.png b/test/constraint/arc_line_tangent/normal.png index 72980cb38bbdc9d4c8263d3c2120b27f605f0de9..67fc0e3fc34abdc59bf309e995c58efb002bed2e 100644 GIT binary patch literal 5097 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 Nc3A8-&)Q6n{3pJcugL%a literal 5078 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 U>IKP6_`ME%Z)t0hxtSjJZS+v3vV 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 literal 4280 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 literal 4280 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 literal 5032 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 diff --git a/test/constraint/cubic_line_tangent/normal.png b/test/constraint/cubic_line_tangent/normal.png index 179db369c385be39c72d8477bd03a96fffa03445..66d86a0fcbb53334becfc70aadc87386a3930e0e 100644 GIT binary patch literal 5208 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 Xc&mQbCUiNxF$DHowrwuhNM-#e==|Y~ literal 5193 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 delta 3256 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 diff --git a/test/constraint/curve_curve_tangent/arc_cubic.png b/test/constraint/curve_curve_tangent/arc_cubic.png index 5e4935e53156fd029cc6a56f189d516a2938e07e..90c4c6ad6b90ea9814bcbbc77752cf839b1c1309 100644 GIT binary patch delta 2278 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 Kf%msjv;Pap4(}%b diff --git a/test/constraint/diameter/normal.png b/test/constraint/diameter/normal.png index ab384f1cb1e99741589777ba679f827d4091e8c5..a53fdaf810f38537f42e985c57f9a6e817106dbf 100644 GIT binary patch literal 5026 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 literal 5007 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 b$>h^^eOGKNdDoQ-5d diff --git a/test/constraint/diameter/reference.png b/test/constraint/diameter/reference.png index 6aad49d1373fe749d9db1b6c86d5c2ebc2a224a5..42cd96f128e70bf6f969092ef0525cb947a60535 100644 GIT binary patch delta 3382 zcmbtXdpJ~U-+pGy)M!QsgQAgR80}=Mb{L1UJ2)k!A+ZWunY_p$r?F<_rGvwscS=fP zv-hYNCWXprD&k9;*g51dl-Jpi2D6!lZ_WF5?SH;Mzw27p^;~N`>v^uGpl$RDBHl5kZITK)~p|&o0WtqIJ#ph2zM8 zv6G1fD#knjUUHV^t)c+HvA3ygHd+Y0SDFnVjlXB7&~5igKs5kvT+jaLnSkVLE=d&qnK64GXxSl5p@n%GIbdMt*eSGrWRWP zeGcW$9>nXyQg1rgS@fsGD{s|`KKWD091Qa$9lN_JYahdeQkkSWN)&%fa9VsfZ|vjX z0CNY99QXJXbAGu>@cyZ!jwWbany$DY&PnXAm(*GJqqQ=PoNzzU?PUoAiSD#%g^`9$M?TI5`@Xx}A5sNW)6=S=8Q&)XuIUX-`XI0q1;I$@;_? zZO0n_lIsH~3~_y=MFz)I?6$ffTQILomRUWO)l;KNv4BF=4?0wnv&1>SvUq4&V=D}w z)_EoIqOB!|on1O~V&Z87VVJ^fK01r-%2E4cD5q|9CGOkqd7nt7o?;Im930Oa63^^L zwW?4FpKKwa>hYQ+VcMr2(dHdlqg~fWE8H?&AAzM7YihLUqHk3Qe4snv}O1?>l- z{hGS4xZk-hFrjLxWeQ}tLLGnDrNLc&SN^hi(pR9_WM51EE6YQ~l{FQ5sGyTnsL{dM zXBJQNrsb5(tdWTR;Zjk5e&f#f{8J{9&?%HoxOM7$^9;iU$uDm## z$eRY0VCgXAI1Zj8_%lF(Mu?#kmN z)cd?5aT@=u*ZySodd7NWqIK6c2McENSkmJPI4}iwG%%F=lfq*~NyEcY+4}o|DcH-K zyg>|xnD^CfE5l$Db?4rmGpM=({#mt#2MQ5EX#Bcgt`ZB=_~;c&LDxaRyT(6j#W4Xo zH<3QamEy_8$pAV!^iUbZjt5+7SQ6CeI)9jqt_;F|`8fxNVnk|ia}~*-2Ndv(V)*d^ z9Q|jQ9thoHo8GCf(-}n7zu(0k*t+#s_&5bplXcp*4Vv-?NOm2 zC6M8bU@jOrry6_`%$e|dZx}t?Cro7Q`>%35(suD${H85O`og-LJwcT5W_8J4g|L}SvcfB=kJvmL+w>r!MU4cy2p;{tnWO z4z4_SqH{FH$Ik6Zl9LLQRQ{rfc8gtL=ka96t=-KU{4MI-+}n_4>M1p@xT3zl>b=?t z(4xoFdNcat^tXar0YfSG(S_E`X8zXZ?y7OS5#h1l@1ytbW;Sp0TPKLuF)IJK>3I0p zp+8n|z+087(^;%{5jF$<+jzqp9I<@!0S?OYyS*SJg8W?C(*rTz{R*chcM>mJSb@E^ z=5S|rcb@?9kGQuOwx^mQJAPb}Q2Om0S5`*BFXl>7BGB|F`T3z~V%76Nh%rSHn}J?|i|?ko>B z{m7N8+<(|1SBndw2Wv%R@sB{#=9eaKYJ%(GkaLsME48{$wfO= z zECgooLq!Ia>jLj!0sSGq?1i!Wsa@@8Mnh65g%LL3^6TU$tAvQq#&k^p^GG9P)vZV8 zSU6C;IXWdKq}s|Z>GeNOuRD=lfdX03d;VrYyq}^u=-tDtisE>KFDXT}1YDV}RTY{+ zQ7qHlg^Ue~W%-uKxa!tkBD*vyR^IQ2a%jv-B$ee053hc0837@&D-z;xXQTp+Pf}3= zGp`~QO0AL7;R~O8nO%2U(cm-2o2HKkS2j@#4iJHgKJT5zpgR&I+Zxc*7gM5XMbY7% zPhz*w8XKzqz1sMk`@!;f!>ukj3q<@9z^v-#j@HrEW`&(Ywt2pe9^dHLeH|gtV3Y`x zWKrpA`!z|d!07fBFk`gcXdKU5o<_LBA68p%aWDc`Ajy7adDo3{y2zWrJw0ZlTzP4S zQnJxhx$aQ0=x$^6K|%aNRaHy;)y+QvkA0#sOMwKYPfN<; zg;xCoQ;W6<@9KLh$KoYRl9`@{uN3aG*yVzxbd6hgF@v^t*S4A-H-x0_dvx{uJuC2O zeVz9D!-JzitqcFIuUiAQ4|edfA}pHw@@{SYR1X*mlhVy);{SQ+AO0+2t4~eV+&Ali zW4dQ*me!^c8@ggiVU3|SK<6a|J?(8Mvc7XKM*FD5X}X(Mo=mFlTg$1SwWnjdA11G% zCXO`rK&NYWj179Fg-FKpegryBjZ8SE&BkEb^8+kahB8_#47k+$^L(EHc= zVqbBVEZ?NaHjl>Y0v#k^09=$3i+P?^s7aiG-|TOHS41m#jr`q!!_Mvp%AKH;{{?ws B5#0a) literal 5091 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 diff --git a/test/constraint/eq_len_pt_line_d/normal.png b/test/constraint/eq_len_pt_line_d/normal.png index 74857ff3c754b060273dd2dcf70cbc55d576ffed..9daa892bd79c2e83b96f006078e05c37d84551fe 100644 GIT binary patch literal 4407 zcmeHLc~DdL8vO+l3bM%V0t#xyzDFQYt1Pm(fPjElH};T<0tGQ3J7G!C%3vu>A5Vi; zVSGGLB9W*s1c8vNBB(4{(Xa=25h(@;5+H>b@)86~#8BIr&h(ErlgypDx%cM#&UeoF zPLi>2uao+cl}i8s>MqU>`vFk!lD?IdBxkCFaytRgoOW^8aWMYUP*-mxhoyI>_f*5y zEC11=_nOD<(+#S0Hi$K7Gf#Wl8nV+=+i{OkbOb6tSc&89s$~91Z)}Q?cAng>3JAH( z7!&~5tqQ8Z*bNHe8n$!nBaXh1~q^ zsL4qqt2|K$bM7Tx*5+FlGh}t6F~}e;icM`hE;!-duTD~i{Z@6E1p`4u2)fv0AX7KB zFh$g42*6G^xeao>T88yNr^6f`)M{wc>(7A6v9x!%5E8cdZ~R0=Aj>ie9sz|cEQ35T z>>D!ka z%EQ0`=VD;!i$(l1G73Ci{C8%fKAUPkM0@L3 zL4rZpzryGs?;#JonLTOv7(g%Ak!K>1C5whf01K@-J1IfE18fcfEM@^zGV1*_fXEEI zR>WapGp7DYA$|o=tCgd%x4LVVev|rGOcOMp3BdYyHLhBIk3Njpp6(m?FnlHWMR~?% zrWC^bJ2ccm#OHH;HC!J!dqHL>^1ZY6W_Xt=*xek>)|_j4=3=u$v^bPPQ)p^?*yNpP zlp^77?#EaF%qBM22R^8R>wl6R+{T$X9ow7gH`$5{C|i=3VB7S78)=SNsu48nUErSI z+LsYR`w8+_xYoAoBDiLf%fP$Bc{~&h&Z{lFQ19YzrwV$yZ(mD9p!RH#|gSR z$nsYKU8>mK)fe)=YdN(p7aLjL_vFEkySMq_bx>E|JPa_B!u?FwqT0?fS4FxuRP?Qu zPNnu*bb@UIIGJvYeD1B6!=Ti%347u|q{*dTr3>*^5SJk{N$y(;cZI2BBgmn@IpHAXo zK*UM~RpXaVqO-^=hz-x8A4rA`7hMy7t3Of>*N0$kw|j1?AbUEe%Udx*eun55p1q^K z&1xbdlY`@k#@_U;-*p9%y$cIVf;A)Kk*lwrY9;7#p5@l^^hXvEr5}2#eEEV`v~aU@y^ly2U`^&0@uJa* zt6CBhzU@l@{V>ZYv_=lD2O|kFpSZd~Ls*B8hUxEJ+w%~XVX5>y*3hIIVtklM=9}vW zxi7b+jAnRPW^82#U$7ak0qGElvpCZtCtzHtY;|-wbDU{Y(BCVBM05TiR*{oQu2x`aG^n)v}fb_hySSwFbvqMif9(V4mygr6FU^aDunH z_1%h19nue*6IUEuXQu?>;WowBj zkC62W>9Ko%O1t=AUVvJpq>98&A@=gv-ceMltwu!ezXRw1WqSha{)@E7sQ6BZtSy0a z&FXDbvV%U*-0<$Oo|>0|1jY_n|Imudb^uL^La^#pp84t&hUFCb3L?36+2?JhodoB6 zcJ)WKiL4c%ZzWey*cF!q?aa#90i3@(1^an5hPWehg;z^etU`*}EjOFdB)%enywZw_ z+1+f`e2w(gdSxtfx=vZTB{+u6!O3G^FeYx&kNnK4Pa^G@I7d>l*N!Qr@E9ULyE1`Y zKO?)VqKSmLA*8sL8MX181W{c61iSiy6^Lv1xJ}`X+cU?zJ4X`)gZyiCe0IMd9!XDP z(>Ptio7pxV^s1B$QOX$aaWE^M%RRa+mS5FzybMn-;@6gwl!K$f_X|#LI+{32vk`;N zVia|CFGH8kt{T(IQw8zHfy~diCvQcte9irKvwXRgNou%(EGj)q+}8j0ny8vCz99l5 znoU|>ILBw+1p^qA;%lD}#&~XJetJPx>Pt>VUpnH%3(;Fe^gkoJPmQ+=k5nfKH+CNYJn@t|f;t6Fafgg7_=(hT;#<&csYu%U{uq&JWk_Z?2BCmY}BOY m_sUjg9m+SWKkqLCF$mt^KW6VyvsLnk2yk)S>u_TyHtm1O@CZ== literal 4389 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 Sy9<5f0Nb5*IOc639QzYcFW(CQ literal 4344 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 F{1e^z4Lkq< literal 5250 zcmeHLX;f3!7CyuT1BgnIfGD6S*e4OuDyR&>At)871BJ*CE?CqW1{JU-KuF?%$RusW zfzhUF1rh=h0+L_=YoH>CLqZ7z5o;I)1cHJg??RPTwfcNN`s1zj)=E}#&)xT)eZKwe zeZGC-wz+NA)-==v0BAdJ*|Y-y1YzQfR)Id~vbgCYMF)UID=Iz|@}b?Cxt`#F{uGW~h}*xI z0D~VjUNhy^*Wsd1<%p7y3WF>77ezMvEqb}KxEqH}0dNX|M>=4;`=7UF;Qre;EJN7DHzw5H7dmbs$^SQuQ&&LRH7w}_DDMT+gh1CVg@4a)B^|86pw zO;i*5P6aeq3(KSeXq)-#6&ZLo7=1B?)|A=bQf6rPt{hJ=bh(4P@hu`)bHy_s#sgpw z_Xg$n@-f?F&_{rvl}!cIL!aQJ1j6h$)V5;(WV`3%Fid56hp5m!A9T1j44!xk!Jz#t zqa1xTVD;G>l;5ioj<~0#6cqSQ=S@KKEIA3IYP9vyIYhwuzBMGOCzi)zG_1*gWErA^ z03V@kt#p+Tni;#1#NvK?;go0PmUPd416`~^^?)hbxz6H9x{$FxorrXuyX7FUA`FR{ z0omwR1YRXpuzQ~J1A_4N^AK9={S%Ma)QL{qSe=I@BU{~UOkYf$^ zy9?4i@7mB&%Ma*8T_aPw{JMiFFtFnq*dyP^Lw=O=@PeTkSvmT^{*X>HyS=E(z}?<8 zKi$(R>AHsa2PXBGr=}&olFRP)E)#s7>-m7-|)#1v=M_VL*G0pwth^o^t(;VTq;$lX^#^f=oU4n$}aiV}0+|gzY!Rgp~ zp+>Lgr1!A{6)=n7cYBdy%02d2Br}s8>JHDZzjQxF)hdS2osFSn|7J#1P!hj=@=w*e-xe*X1Gg)>$Wd;VS!tVIE_W5frB$xog!T_}(SZ_OJVc*|4FilB{fmS|vU+4a5k zcM*!MkXoK_m6pO4Qj;pAHSPEMYy_iiCFTD{z8?p+~K)@9VET~6`W5RdXNK8jugnCGWRHNh90^xGzTlXz?52@=>Lq`)5kP z0eY=3?#}ul^wIXoJ@?ak1OrLok3Am$t<3o=GF=E#=Iz7UfMfnzjSN*inRmqfUD5Ip zF?x%OH7nD5qf{mhKS6r_Wqoira6w+^I}PO3yjF-xtC#A=U%x9P|5oiywpg@-%eK~p zpx$b;KA|0$l4@YV|LO3j2>lpgv7u}$bqZFJMH%05i>Y6R6yS6mt+Va zvwto}3Bl0IR1$z3xpXepR0|lmDVJ?XL4mx$U0)vdHX*Ri7})`#Vey2%pEfD-C)s+E zx2|aUW;ho=+!?$+Kgg>WKEI}=M$_*8g7b>D4?tC;GxEeI67!-3EC-NqwNQ7wt8KqJTvei{dyuM}#N*U0i$MZYHEFZ|&MGZHS?vUI6=sF%tD==(f1~Dz zgJ~d)yYJ-|I#+WUXe>WyPOybbK8SwdE}%s;e|h@bla6bPa7VR3W9s^8-A)vj=-8SS zGb0_;fk8_)eYN>c3(#>?*hRal2kfqP_^Kntx6XU1ImRHxP7}X3_^wszaj;FA37NM7 zuGx+%g>6Mshiy%~MTtLC)q+TuhC#PrH8BN=})1o6zMWnk8%_Z=BD2VboyUdNrmQ--pt9vb{j@g;{?E|vA2BITgwE{6w zjs~uNlP|B^*m+OH{`Iba_tNcXPXcv>KU%Q2+->BQ(yVx_ zr}X)6hJDJ&=Y)~A?q_Xn10Bo`GPBkD7_)TsRoko?=QH_d^KoESj#i#MKlQQ9W_e4M z1OX2J+$VuD+%UzXsajW3B7&o@hz__$9P^c`a{UIm#bXVM+~R3M%b-OZHvXOmvva## zEyALRZ4@>v@nJ-FF4>H$l-udjSIHQamoz__!hmtV*l+$$~b#qnA=SEJ_!Rvb=ze%J`~Om^0ThX2q(+K2c4cMkU& aRns_6_4E3<-P!QjB5=mLZDMbL82<+J==k#h diff --git a/test/constraint/equal_angle/other.png b/test/constraint/equal_angle/other.png index ab7676c6949ee327b478890201565c7ed555bdde..85bf8263a18ba334c57f0c7a04eb833f4cfbc687 100644 GIT binary patch literal 4914 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 diff --git a/test/constraint/equal_line_arc_len/normal.png b/test/constraint/equal_line_arc_len/normal.png index c0393ad2fe9815fab32de6239df7a67bc90f887d..3031ca662e72287fa03f4bf49e26f3891df34efa 100644 GIT binary patch literal 4547 zcmeHLX;4#H7QP8YffxjofC}OU?MMVf78NnL03w1Yh+&IS#IX$yQAB}A2#DH2y3uJH zaAR$45du*Rd&t8rI;fzKpdyG3mM3Fk-UzbIrz z(HU1t4rv04(!_$aFT`)ANzE1x zGSl8!h#3d=rw#rAc?Jkzr8k!3Pa5GXJjPSSMDXYgkRn?tG;SaJWmTwt;jE4*aPS`7 zx1>PlZ4X9@@19_l$W?BC-YaWMDPwaT`|k!LA`_wb&4I2@n7O}IMoz^-=gZbD1Dkt^ix$ zb@M%Nt0%RHw4vGW+pAiwB^Ct{k!ZUEXLaaIb?hJAXGeio9M!SnR_nPSpy5LkJ{7fD zXZ-^Ul3}744N6Q(L_yfm9X&4-z{*jyuB@Jprc+_Z?l(6hN}Wm7CkH&Q3AS(K0GDrA ztthIcegQXspS->uO*)7~6K~jFzr7XugE>}1IrsFo0pUE>oOZ$amOJ{8OarG;abYLJ zoF0D8pG^B%Gk(Z`z_r_tqHHlE=-7F9lexu$p{*P}aCO+S5-0MM0Aah{T=gKXu+y6L zLT22$QXQM{g1T1Wx`%i|N%P#B`A=HOpRuCIy-iyu`iVppRi8Lv^eX)M1ln zn}yQxK6pnQaDQ{$rXbbNuiWhyDV2{JX-yT@#Mg=*qrzDi^#~NF#`^r4SYoU(y-k-u zp(O9@D&ir$+)1ll3+8uP-zdl-%Y&g-`QR2#e5o{ptTG`CbWy`H9oi)!$Aunm>#il+ z^J0q;UOaVlW?et8L3y6txLq*ltmN32-HJOq%)e(z)mK(zBu?QCwk;>xuLy}pfh2OS z?3Lj-7J!*WKWG{XMB0zC0OWodA9DZ%eoh8Ek>vCmZ47wlX*SBRhT9(NFCDk>XS6hl z?6*PNe2m*h4A1+M$4x=L=I@RQpY;o zOCDHyJppU9e#9r8{v0L#2E9*@0K!P;P(m{nJy@aKsSr0#9%$pLru$J=A<-fpUaol4 zR^xtr4f+u*Uq=x2xMiui?BWz78UL`<(w(MC9{5%@5T=s6R7tCZm)IdqJynt@?K`y4 zC`?Ao!{Y0)3Vh8F`Vod5$A5fZXW;=EF)w6jMxY5z(aW!F4~~|$z0ILt$!_^=pu<&t zS(e0uP<>VdmuV6n>mBB8zR>p|8;&1EM`FCv6 zMNYYEy1Mn~aHoeebjEYj$74($IzP(7!3IDMBWTcsPcnN65kFRe|EWyCWhacLPvqj` zxrtQ{ofBSPs|G56)O&iGqWD@O0cpV)_C7n! zeNDqig}0%(6yIOAPHbn-f2$j_XX z?@)B{&8zv^T`R6cAJGPsNk=CMA}!iB5D?Hc&HSTF*+{y<^yUyJl5twDKInHN8J`+{ zdXS8hhM!@3Y0p(&tEy)Fss-c`Eeeuxzh`fwNwQktGEqhVoh-!UBk*%(f@R11;2`Ir zLFCEs$s;e{O(QTFI51}eDMrT+IDH3|`y6zL0VEtxE5A$g36t@J<5n+-302A~Op{gO zsx9OzM;7OClL6%wA&$*w)=QuWV#pEiU*%5Lt~m}cL!WhW7S8e?Ms)a7 zCWY7R(9%-q*tcSzY{+y#A(s5KO;9RT?4n9uN0dAZrIx@&^Q^PQRYvK z1&6Mp^Oshp?(BN#Ui;1;K#YFn?EIShH#disQD*p+2oB4P{+0U!D}Wa(wT*40nRIja z;=zTROORc@3yf{g4U}tNp=L#NE#Jn~maG_Z$Y@M4!9Kkzmrl+!S5{5#DjK|VM0#e2 zq~~{24EUukjMUuw(`o6#&UC+;^ooYQH1`BBec4^po1C{nE{aaBhDngX{RRF_FuqXS z6}_0_Q9s*pu(oPy39*EuSBM9;TDAON$}Nux>tDTQvtvSOmhi{CXK{~(u5WHyIs%;V zp)%fWK2>QgXwq|#JdN!vExdhB*`&Is*mS|(g%%@*{|Ttdl*c`~g$vO?kk2$l0Lsi^ s6?{M)H#L23M*D;-J}Z-7zLN?OrFe1ePOh8*|C|AC&YtTE){x@=3txm&TmS$7 literal 4529 zcmcIo3pCXE9{(0$YZFj^x&#(Qmp2% z^w5k+J2T!!d)FgnxELa2RphZ0V;F|}mtkjeb-VZ6J!j_3IdgvJ|NH*FpU3y}`zL(s zXsaZ@S{?wPw11zq69916*)LKC`ls}8$_oHgi2JQ~A0(y?wg;VRtI(|IvZ=VSk5<3- z%QIF!Q9r+0{S0$)y6diwX0mkEDnb6Go||1nk9+K^d0pP6S(JMWrV#*#V(xnZz&

  • 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 HSy}%Bpoe!m delta 2497 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 diff --git a/test/constraint/equal_line_arc_len/tau.png b/test/constraint/equal_line_arc_len/tau.png index 8ecd8a6f7d35dcc1992bb5d0944aef339db5fbdb..763e235cd3a77b8f95d09c3fca7cfd5148ffecd3 100644 GIT binary patch delta 2855 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 HDcS!6A_@I_ delta 3209 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 Q{a*we^zz+b@gX_=UqeK}y#N3J literal 4256 zcmcIodsLEX8h=3%&CzPytWnF#vS!CgGFwfZ=wh0iI@W}mu11+!5~I$7AE(yH;(`ECC&l8IwigEsGDbPW76e;lCm)*SUp%TGytH* z1&;vd^sE30Lq>rmmNfwUq-_j#P#`4GHG-dd1gQ^JyZ@hx#)?N<1b%hIi3x%KChWwP zp<0HdGCWb>-zR5HSSB>ztomXo%HE8>s>;+bmCr36ru7@IneT9vL3~$!MqHE!8 zJ=g|n2k$(9OORRu5OOqSuD-8e(xOFxw`69Y9NGMDb3nPQ1aPq98|FesgWpMo?^Jw( zc1l-m*s{yI@7f^%#>hx*d8P$MzK}huE&&ZvXZEp{`?@FqbWI5$rn=NIWPxM4f=P`M zffXL@QM=VgsB!&sTwP2!65uVBlmCGPkRmGxQbS<4RJpIhx+YDIAi3pEmyv zXhEuN)F5l5$dmq3LsFY`ugJVK@DfBXEW3JcU@pV&iSefwE5X zKB|78EFRqc{pzQdo~9|V30I12#G~1bmS^_Ao0#O3*%X6AQXULvHyT@)2_r`L2tmQr z{adsznSE8pd@evdZG!Qjuvy~An`Z`RQbB4;8c^#n|0u#q%3+}EmCe)W25_fYb)(M! z2>m011Yfgs0K2iS6m}+sn4NrgjD{mJpGd`5nNMG_ zGlyQ+ws!4j)xWE)=!+n}G^ikNy09awne9gu?2Dkw`8_e>_0{d=hkda67sE!rHSbGu zA#HeDdv2MN5gC;hv@(2z7>0VBC(PEf;@u43>X^MML6v&HZqPQ~LAkMvM>GK`_m_Ef z$O6uRtjK*!V%JZaLho8_4Py)!s6sPk?P>R3nBMW3t$G@GA?~JTw=YuD{QUYdrM^rR&aX?V`9+{#5k+*|3ZUF+tH2m$ zh4TVuTcL)m(?aO+^ZZQd!&8L|@NX62hrLSB9UTTpTc)XnH?!=6=(BZSL-?YwsdWY3 zO4FGtT!2}rjK>Fbh3wrKyz9blg|t#3_7-Wc?j&rXO53<%Cda0n2};HUA9sXcOX0RGoh zj&yP3zpl=4h2`*LWfIUB=l>8tS*E^>0TV#+3da-kA0k0%d-5f(V+au11*^pv+8ft% z77gt01;LGkoPSq#Mn|A^1}p{Z=8O~5wC$vj2SS%4!QzuG&>OAq5hV0qLhv{b(?hKi zsvKahM{1Ra{roUq(Y0rnK6i7MD28VWn{|_6McD}pfh=k7I?xjID^!+ebF0j~7T^zl zt?k{h@0iDN*-+71ebCgl+}Fsn;K}K@X0PK2h@T&tBGI0#`v^<3i%2Kv-Ev>LF+pMa zHvk3Y+SXKEW77~e@RDad3#!`W313Mar3@ZMd zi2?=Bf6yxbD-2>Ja_Vb8Qg8)^c9%A*q_n;r4F=!%k|oh8Z`+)QyRQwuG;zfyQD4Zg zcfG?F7q$jV*-ODDCvW^pN!w_H^c|N)OU^KHB-E(J6_w|1G*BCOvNIjhGjUKC{h;AvaWnVg+th4ngEqbSj+h~}6pHIl5)n~0~&k_yD z&^*sXvgD)c5_|bzN$YF46-J+oZ}rW|I`5j;e7^ai{CILsM!yAT=~$brQC?6~C#;m* zWg&Q^4;T+b!hU8xa4u=m3 zMgv{)OF8kcM2Rc6$8&{OV&5TNw#8N^l}Srp$Lcsa)u*%XP3Rk@27MRA@IM#eP#OxL z-6Qlpv7hZ_*svTwb_}g3auE3(eJp1c#VPJb1q}`{<#2i!Vj1|41YbsF5VGq9fOlf* tWv6=1)T^Sc8r(}G|K}Dum5{A4aBbaYF6}w>EBwy`aNFbQT(t|I@*9HCw!Q!W diff --git a/test/constraint/horizontal/pt_pt.png b/test/constraint/horizontal/pt_pt.png index 882c177ac116c510aa731d846fcaa914aa9e4dae..7614ea815f7303cc0a08f2839bf9362fc9618dae 100644 GIT binary patch literal 4268 zcmeI0dr*^C8pclo;T|rfA|eYag?3l216xv+ixr_XL0T0G1VStV<(7b46cR$9s8uK| zYgev?>7pQ)KmS zJM8II{4+{himj<|b5sXZeZybd7KGxpkkmn|#pvrS>_6I4hqr+HZvA3T zB>B+Kccc_t=RQNr3!$H$+0qbKtp-qk)m)e7(O?p1(_SGQW?byodIs000J~VrN+!bb zh30;ufp$%*^gn8B!0(s5m1CJdoDvPF7R7j2_R8Z?5N`t4-Z5E2@w|99%P{IG9J9)2 zWnUqJ3n4g)8f6q*3c-8l1zR~-w(Heu+3Jzwogxiuyea#0@d(F`xJ}FEx^5<70f}iI z50bB`rEIybadwQcA`$bh$^9r}MbbEgW7fuvEmQXWU|ixdpQ`I7Et?Nd=ZA)`o{2d? z#3Pd&R7={(v_Zz2PD5k{MM~(HOidFlO+>;z^l4v|GAj(mvnXHCvvwN<$c<*PYP8D# zZv70QSh29FIH(gBgpWoHS<=Bx3=I(bf&Lo})Y@LbF4dx3Y!>9G@Zm?l<$g-aC=48L zYBdH`mNabtrHaotkfI?*OPT-6I@V7jLO>{<7IVJ_2J(()J&g|3gd(y^el&})VXM!7 z@iL1S#c?dx!m)PkaEl)AirgY4@=oko#(9SUWcvWT>fe*q$iFOETc6*-3=p zu^3;PfbsX_9jM4u#%FIkFI@R~D0xBeJZg!vsowIlu1)5Tssae}@@?{}7&f5we_0Ge z+VzS+PW>*#j$Z3w1mds6s2Kq$Q#rKByZCtxIxskzB3$mXrL_WJ74c)+y*Sp>JD{K; z#t{`@dV9U29@;OfnGGh5=qpv6@)aOWrH2`;0t{!7^>K!Q07{Y&4bEGG@wem+JG=(f zMw1o*@IraX@qzJBFvP}BUa(!vG|DwJ-xg5M$$96(bqFOpqN(UHka6-N1M#c}$&uN$`eD!g&bn%9gk`P|Ogr zUNghp3B>Elzx}BI0ZhLi&h)cv0#wwG!&{jm%yAgl3Flv~V)m{iF51OL& zp^lxmHq76bu?%zf``k33u`-J5G@E=>6K(m^ zG_8~CF@lx0GJAVCDT2f&>9GRWP*S@cP+piGxAoS+Q&9HLur=&Ryy(Txki06Lw!YEoZ#;dFDy)Xko+(})>%=C?>J zi@A1ThUgu)=n)eCBuxdfEVH1G=3Hv_?61VB4|shg8V!3wG0WQ{E69)GI&04juCA!q ze~}RSsffq_xP$b~!sF!?OC%_?C*a$s_ge6A1L+ZV`E6(y@r{ET?w=+;*hL=jV)k`N z?QW8oqSpi!OKrU$@zUB0`>LYEW>ReES#dej%d$KJq&ea0>_i=}n{laUr+JIye-S$; z;&o2kIhjL8bCz@f>hdTyTbwnyJFMO1YGRk9Mo6*b)e~2XhkS#bBPf)5#kH3(LcdJO zYZ`BhNNv>xwofmQsYoR!+N_svIO_j?i=SgZK4$aI)?@HB`CAC!eejS+!@Kybe*;=Q Bs4D;f literal 4251 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 No9wpQW_}GF`UikbLc9O~ diff --git a/test/constraint/length_ratio/normal.png b/test/constraint/length_ratio/normal.png index eacac75d6e07607e7754026d7d1a5a0696f85d65..894c61819ccceffaf6b1ceb71858eaf61d4e468c 100644 GIT binary patch delta 2187 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 diff --git a/test/constraint/length_ratio/reference.png b/test/constraint/length_ratio/reference.png index 42ea9562a1f4d353f7cac585e4c5500b18de7f1f..5a5bfc9a074c0908f4d9d6581f78e97d724d5d5a 100644 GIT binary patch literal 4616 zcmeHLYfw|y7TyVC{>NlAh$ff2R z!co)CRUnbv{2YL!^chbBTeDltL7VHu0(uo>(?1u?2~PYEHq>MKe%7-@#l`vhx2H5* z!p}A=nFb-fkWsPE5(x;On9c+*mHa$XJP+6{m{?G3K~I4Z)QvaB10&$we4fuTO^vC+ zh5m@f%x^?rP0MNM5gM)K8~{einlt4)*F=P`K~g;@cPi4tPNEfm;j@z6OsS0_r#Og za#W7J-med8KK%_lIInzbP=I=A270vJ@7I7(9G>D`;On3G-@Ut+<^)ILB(kUXEXSU6 z>d7avaP=L-@0Z1Dldairdv#81BrpyAe)#cFcSM-S>(F+gZ9Nx$kcuyrmG4xo({`X{ zqcEtrkPTN~32W-(SCu%~$g`s3Y9GH7{2-Jo%Ju?FZ>e!{tcCq&xA66DYd)(OklqN| z;cRBD{xj04M@OaBTnO%fSrz8`UK!2~ zB0Y&xCsj~Pj@O03qH6ZihD`)SW>{ql5?Cxi?l?83xd|w8G!5dJ;;?z%X>i5B$~Q zxpG-TeFdi=r`d3yx(kt}!t{_|u7?1Y_{3)qmGI*`9|0l7opF zy2CZ65KtfrL%nD+xV9|G;G?Y{>|S>yU#{m1#cE=xOVdM`m718YHbqsN6D&@UkIE=+ z23e^P5*{j5km1qc%Xy87B3&%7BxGptZ5SNR<&_liZaM2RZ>)y&s!rZ9rjXTfrPbe6 zgxYhZ?%A8~nc(~%9||a^DSH8S*;r!a<}gCk2^;mZcrxe64PK(4Q)n6RBCUEyDfxB$ zBHg_&m+<__u2emko1~wm}7`&3iY$nlv1{3Ae9nY zz7>z4?Nu!L7$V>os&hXGZ`_<_Y<-lyKnA~TvlPdBSJ33_n- z+aCI)8>n`jMKdt9AuH1QP!0f;JhCixg}DC<9rJ0FoJ9ei z(gFSr!-sD9Zy5fcU}!MJ62(YBZMtbm_to1Eppph-rD*LJ{#v;NJj?qycAA*lUN%H` zypSHUzgB_-M(H#5B~vG;ek3uQrK1h#X38R=nyf}1_biFo(-gaTVzT(1X{$&Z<9u8j z%)ettzwUMr0Uj6Dxvnk))EbP(vp|7b5u?lu4d`crlnRGjR5EXS>5D5e9P$>jqu2Op z04uBU&8GPI^f9iO4GnjG37`bAF}8O3Vz8d>r2N~!mBg?^4;fA%ZX$fh8_N(=U{8;wnh6vV~#@kO81H)##kyQPXow}R?>ar&J{D$Ll7=G z%5&3`o3po7Bwr* z3@bvuHV1vJvBJ|)jrPw1D2_T2-MN%-M9Ix{^f~Vn4}&hFh9y{9va(hi@^y+it_DEY z>;nf}u0p5Gl2Z$!vMlw(8spw-C~=5ao^MvC%q?@O0PR8%4J{B@`f43WD`W! zqkBkV5!-@K8X4=X8d=9K*w?5>2}tl7F~;7HKY>)NF5B)f{GNpdzC_2loT$&jZfx;$ zzqXuOJBnVZa_RFy@$I6h)ufTQoF|POR(#q<$&VhV*{+@Lf`|8WSo~Fcljb*xc{lI zT9Lr(mXJ;G^D?+_iuEPyDI7{lV|UxOEReJh)xjA;1}{!l`U(whN2EY7=JJKbo~czj zcW`;)_Q(?QQppBIHk-&oYlZHW!)lG!$j+z5P5cA?j=?b_F^W~%;C5p;fz*5LQj}$X z_I}pNlZAXIWwl)$k>Zh*S`}qH*fO@F`s9AgV`I0Z^7!C@R^m@#8PUQ@%7|0Eq{?y4 z5UjQ{|7SeuuFN~eY3WgaT!*YTMHcDdLLn8)yi$Y^Tg$^hvt}PH`zzuLg24jE_p(p|=g2)yK|0uOZ5u~=D zrEFDEAt5OxYzjowVnqyyBuJ=@>3VT;EGzr-JgetUG1@4w(!M=RTB z-Qn7kaeJAz%|Yk&qAiC*>af2Ywe89AI6xTaY;e|DgkXe?Y(0KV&5x2}Ug`fcP5I8apWTW>J^S=#9H9ID z!$v0^02vz3b~ZQc)4F6N$VaII{7rEim4IFBJyit9iXZLvy=RU3TPpn+px>t>>0dJn zx`xH&4tN5Pc|&WqVz*}}RS-1TOQ(10Lgwzo0!LeQ=9%UF$IrfJ)8s$dciDmDU2zW$ zXLQ(y&SE7S0bsr2+HBpIh8C9Z2F#4D5I1yN zcb43zM7un7ijn0!<5lq`mUlUJO`}5x%0c1zVJDma;ZYC7)-8n;pAeK# zH|3V)1W`9oWghT&J%~1}$*#A)yB?N6&Fh$+JAV%*EZQ+*Q@OfF+)ChY=h&~WEUirrQK^pX6 z9^XJN$!e+QmIim)_-pwY;lRfMA>l!S=7{gpjWh2oaR(3+R#4J5J@&=3#A_?g%pmuh zWRS1mz{KnJPzNyU*((QhfcBFssJ(tz#_NYQ7wHJ$sX!|&@XNpBZcfSWI!NXqc&7i{ z8-dm*%E@H}1iNHfkDjj4b1eI_C!AoP)2-=%6LRFgBHf-HcA22jo)639G-W3=Br1YF zrmtsqhQI2niCD+tsP1ffG2dy1s?P2m($GC+ zyMeT{|LVtT;&$f^AVGFOQ$-C%+Gm+fqWd(JZl|FjEkl7Smant`nfPZB|0PY5#|*t2tp`X@l<5x+ZS7M&V{Tz~+_yIy^dONtN)+ zd6PM9!1iEEkQRAtL^t(-iA6peLEv*v51k8cVq%(9pHvDHwM^Qxv2w+;$DLls+|gO^ z63!Emt@rT(URkdnY?nEBQB*ZA52#*7s}y2Yia>I&r*bG!AWqW1Nr_6*!=$!VSEebj zx5v?U^;p!dj$aLJW956w!zk#A1VLfr_uG?-2+CTy?V_?vYa5-FUjrR!gRb4Wxm2Vy zbU1o|6oI^XydqcEUdSpSXb%paLzem<3`C$8-MK&KV7@lACUAZ?4Z#j~0`GrQ9BT0}4Pn zv#ZD(i_n%cpVkew13;cKJ~ym)Bb7Y=ZAYDfgc(DeV@22}>uGOm104nkFw2-#72cc# z|1QI1|XS=!Kil|Snpfw;n+^VQcrgUnU@9Z2-2-v$*N(i z5+ufKQ2g0*EziD_jhf}Gz1E_{;JLcsaX*%cU%0Xo@6?8X2q%qj^af8ZR4P!-+XLFO z>)8tq{$7JQp=s9hSn>_FmM9LGzELyX&2dOMH2ZZQD(NEaP$(kjx~jRl*&TLd+} z!fs?Y9KX9TcxzVju=BUB@&>OJRkD?W1E*Xh_k`9vM?2(S4E0IteoMYX7x3%v9_kY{ z#{K#-N9kH$L}&2nsV5GB;i|?vYdE~L)MuQiq+Svs7;4Rz6q}8D_xS7Gq50`3{A66$qf;;d1XJx z12$EvG^cg`+FbrH_R*@!<#e%heW0)9-n=Z;16~S4`LHLgivrfA^H4Oe9BElc976)t zo8a>b56MJK-iy%`LI4FvEFa)upbDwNoR;lsDjEFbdP9o@a{&GuMN{<6{*7GvCGzLX zMtd(5@?mo=W=95EUFES_!#U#ykLaz*848;Qai5do(_pXY&Z+>8^4#d7d!l&84UvJ{ z$>u|{l3}k$V{x@fB$7Bk%`|FFfDJz}4^{5x%>huJA35W>|EZLHw3;RHFT2wQYKt;f zD{53ZqebhYGhfTQ;YS2js6sElhi{7}@N8>DKMRO U4fl<~FFOEi@!aN7;Z8jA9}fb6DF6Tf diff --git a/test/constraint/parallel/free_in_3d.png b/test/constraint/parallel/free_in_3d.png index 6c7d870375e5ab96044a8960fe075477e7f9cf37..ee78f87ee76a20f0b2041253d5b0a6d503f2f4ce 100644 GIT binary patch literal 4304 zcmeHLX;f2Z8h#TN!3g3oAOk2Winv5jM6fDYWKmf<+7XZd2G`mQn~qizAOSs!qEJ0m zA}Cl;L`g^#0%;_06$McwLxljc$*`6vQDcY@66R(UY8VIYoav7_#~(TOoZRpG?z=q8 zd++f-`*`S0Hk}LrdK=ceZU(^mtA0A#=szX9>CFHJDH~kB{L7&W&s!qHn%qsx+e1!! zcFtV0+4k6+eTjT`nK}R7P3mR$EiC+|0Z;0Mb_v{_b9R;a0zFAna$!M%uuvP;R)yD@ z0nkq&SkN&<9}t4Y!7MK#29D@12AXZ078qEu0q$rT!&>_9wCEY3@jN9wG-yO2@(3$c zTK43ZNSWa=B0}4caAXdlvWD^~YKDFV_n7EtS^J>@YhD=FP3L2A5zXDgjdi9ldU>#pX1O4K%~HTOGUCyr%%AZ}OfRPcH*x-(3O7<p!=%=A&x>0c@px?i99nk{Ijoc zy6x1+XPdxUrSmwcb>prQf<2dAlN```i>`q`rGV7((=3#v%W!FCfhrEmB-py|2; zhW#*E_(Xu}!|L7Wx{n$Gn}_uApVb0*EW7>IPLSdg{qzqSi4RF$64Mt+TR4{B=&~wO zkf+ZgwZi7&7@3qz^jy1l=T2x-{y{`(@WF3^W_g~7IWnBn3K6DQ+^o($a-*#-IG@YC zN#_x)&QPOL7yp!}X^ddJ@}EA@G>!J?1krm&c-{4}1=*-kDLU#)gXGROBmIw@3EM8pyG7L167$K5Z{sBN$rwORjJDvJDIXsYX&#FNz4hLkQCj#m+};G_t(MMe$L`pBZDoqW*o!C zw8S?xM~niGBiQnqiZpUsz?U~NZ|%b39E+NoXoq7+ao3CjQ_v*rIM`xujkVu%u>rZm z3tVWG+<7|12C7zvO~X!X;RoXCD2>-JkhJq{YiW`6Xbr(aUf7u5jECg7;eZ${3fLF$ zA=rSe;V4Qc#7v!*uXxv0ZE!sEj@#uSuk=>uj(6<$JyAU;S`?F1xmW8~VL(It1Y>>g z5Y$uoDHl!Q>3XZT1Ti^Q>F|P)DLSeqN)rr3-JHC6SB=!zg=cb@WJ3VErN0@js?dn$ zR&7ZBcx{_t6r({HYLeWIs9-Bd)5+_^so- zyb}DWu{F@+y7F-tnxUB;J9_PMh}gbE+n4m%T`0^O5DtNDMkM-_y_UK5KWc@iz80*C zxRfa>Z-}dV^0(8R0xH!j^FEgL@}z}7(|h_>rh>Xt7Y`;C=IDLa{nV3tjp5|AC2XrS z#~GE&aZvt>N!F;~rp$U+#xl7rRL%$nB&uqE;){6qWLKcqT{dK_%D>pv?sq{bx@7ut zB_Kv#rv8$jPAv-2f*vcjPj&5NaQd+~NLy2Q{Cofgp=%0tRo4bhVI>{CzB$)@Rq<6< zm&3Y148qNmJNeI#nLk)>k*v||_)7+XR-b3)Zy2k}Qoml0A#^o{hy>CkU(y^LBpCWL zk1vK<8;N{_t*|x$;ca<+a0rmVY9oKv{Pkk*ANsvh2l8&nUS`b`jMQ*8Q*xs5xl{|x z)AFCNB$h0!hc6ZMw+x9|YA3t@L$Js;VX1~Fy=Vy%?so3DM|$ZnT;ip=# zA1s#h356D0Wm%$UF)cHh_-f3dpAV*H$>gQ6;>F+ZGRzA5#OFcfpd~ zns_NoMrTQKhNACA?OdfFC4oiiyd(qM#+8ZT2gBpR53qHu(4PPwbsSH+xlV_tj@qpWidOtUbMxRwVQO(#l|6LPyF&Hh}g&}(y`F0 z+*3}bZ0|{se%+(+Vr*?2vSVd%!>Wdd{8g{U4ZILfx&4E9Nov>gFMvBmrD5Ha@iH*s ftn_=l(o->*!kW$ literal 4285 zcmeI0eN@s}8pkgvidw0;mZ_tyZaPgmk&ZJu>DV;7Y-8C}qY$i$TV{zNR+w)nIBrd5 zIrgHcy-jV_t{`R+zM*WETKF=gp^b?)mNcSb84#c{KTADQS1+JH{5Jl?U{^S)v(9>- zFg$zRR{M~RsDlor2P+TVqwHCjJ9ghn=n;LOG_1dMP7CaNhvO@4m(JBZJ?HAm;;>-A zYy=~RHr(b|0>Cx>1z;6}4+lsK=$FFbCSdVe0t}=Zxd0l9jsRv(f6yXLa9p1lk8js% z<*vD5+Psm?-D(lHTF#20N_`uGcRdZ=9lF1E#nAnV`()1{pNwJ~k~#cs=dwZz3lMO< zWfdf(&iQi`Px8C~NN3D?wK`#vd>)81pMt>rxFk~zqpiuCj39*i?`?cXR;a@imKcW0 zKP%m*12%dGYv-K;02l|1W`jczJAe*n%c zeT9bT=U|=@pyj>CF_GLk?{Uo3`u~7~S|kSKAHpzp8cld5@La-0!e|MWT`MN7#pw#Q zW_-~Q*Uqqqs4FFLA#9sm!?LjiBOGnDAUHkiSMVf9x^Asr-+ki$lnebfsRR) zoagkpyA#|xl`L0nRh4UPQcNpZiuQuc!bcT<*6~X`j)<2#(R!mh1@@049`~IE zS^r3z%~h??vO6n5hyRpGl~nNE`VE0o#AL*CmYU#Q!9DRc#iME&nxx;8tiNC_NyRoz zFo^#I!ad>VsKZ*8&OXn5yzc@sJXo9oJCg}PMX@=3`?pL3c>X>C#GOTAeg4P3IHGUS zXE1WX4EVEGhJJXFvUHOku)V22Svp2Os@U?{q7jelR1OAY>3#bOK|-h$w+p9392-Kg z?6N=r&-~wgjKvSoas%20=pk08T+MBmj~n*O7-AT?(9WD5T)!PASyBS#5%LidrxKb( zA^jy@*1mo~BCE-8@wBHSGJDyNQ`FC%*-grquJs{-MZ(DHa6I1?0b2yeQC_wGV8{Fha^# zQ%V1}reg%xex%h{x4OUGz-NGgDtqGcl^%efz4nDvQS*+*^o07i&(%r5H}ph}#E^i% zWv|gW)Kkr_?ir00Bc#rK-Nj6s zf1eB!bpMZ%L1MyWCF%kGK=VRKu7#s4_ zKy#dIdveOOqQXPW z-8|M8pmE1Ne$>ue4T)m|4nHDfjDePw!@$4&&?UVh&JIUuvi*D`Fk-~{Gre(nDJH9pT-J+zfFbG!h7QBSf7>x6u~oiAM{0!~yE) z_M0QAajZ7GkHQ4~-DprY{C7I19nBpPYm(YYV{%dy!tt@h(&{>cPH9S7*rRk1Tz70q z9R+7NpY9^?4i);eUgU0Af+V<%*CQu9xfg$Pb9bW6*D@c)hB<@0roD@{W>tAS%e$Bq zlgbs9CzH6R&@oU3(cD2*vr-O$WY(dE`~~e2^xj9<&@eSh1;z(iHD$* o0?5`Amer_y*HZb14e{d$_Y7}6FAV-B^tS|9;~(f(yqb{q8^WT*I{*Lx diff --git a/test/constraint/parallel/normal.png b/test/constraint/parallel/normal.png index e408b3fe6d805bc9d204b01b7dd790e43d7b9d91..599c82bd97bf2d94813ad1045166c7d474efa1b8 100644 GIT binary patch literal 4686 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 diff --git a/test/constraint/perpendicular/normal.png b/test/constraint/perpendicular/normal.png index 00d4096408f232b1e6547fcf3be2155904bb5332..415dc8862bf8ef8e363552d15fedf231a5115890 100644 GIT binary patch literal 4910 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 KtvPucA^tyPa1uHI literal 4893 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 diff --git a/test/constraint/points_coincident/free_in_3d.png b/test/constraint/points_coincident/free_in_3d.png index cc9d7e92f758bfe84f32ae4c5bd8450c4492f01d..df5a660e0e81c60c9c9b3da6edf17cc0009e979b 100644 GIT binary patch literal 4241 zcmeHLZBSEZ8hw+H@{vW5SVRmT6^k=V0*F$wDg}2zVCAEJK?H&8qN1>nAOd3eNR-u5 zm8`Ya5FwPIU>g$>%aByokf;=JVM|p^Fqi;kF_j2Gvq=mzW-o%B(k+zz(Vf{Df86`d zWZs$kyyrR3IpAZQgmbYD_tl z^)TM~NFR8z? zeU}IcJRdQ}?E&cC0wF+|EgsPP>1g2SEdb!Al`{xsN|C?@3x9Vn5(7M=f2BQ-*B+K8G9evZVeHxHF{SIu zM^K_>g~i)A%=gg4kFpZKhc(&&7%V-3VtBm<~%kY zq{cxvxYyrAg{~CYAZUeI!2>w2pOG3`a%;lyrX(XVgP>tIB@2lmib~mTeDh>m$qOTY z6{ax)LJU7oyRLn=q@?S;gE#VQ@H9V&g_eJ@^FD8+yT;6Uk=4a7CC5zLP6yv|cr5RV z!ceW9^6II5&=brbib!n|bIIl_+yP3~clKPm@5#{f>eS3;p5(aZc1>#QrMN;?in++R zEp+D&a?#YYb;v#67@guNZzC}-9UD}={k?XqKqUd@*0o@XJ+beiGc)l)MZ+ zvj~^poMZ2VU3nUn6_7^%_uZKe5D?CLKw9@xmsucGFy+GLs`ytH_j02U?gI)Wks6s80ib+2 zhWp!dXn-4K!Sthe&f(y6_Wrp6&1)7Zi;fAmYJ35$92Ui2&h1=3fvkC~7l4R>nTe7T zqg&|_fyqHXMBM+Rra&cqMvwz(*)ddRf0#4yuYQqKwh9A?e}@NF7$V>(*qeZK>DNnP z`M^%U_P*5jr}b?1*xeQkfd2FQ-A>72c20J03`17#> zRpl7Iz#}Ko??gtM8h`}-Mx08eYGIAb9(g_ z#I{ebqK~wOkPDaNPJW4`0QsuzxEHaXioE}*jbRxYuNsFVwz4gCne~Qm zOo{oW?ufz4T(m5Oto)ifRwFLZkdtG0(CQKi@`TGefl8-9KX2{~c-pBuVsOb$i%jOkf3t?KC)LVlu$LBO0$jb zx!N?U(R8<~Sd!Oe@Y0kVsTTA5#m!&+4mh+_KO)JErDmC=Nu9&s7WV3{8JR|Q7rR4T z&>9h9I43{UqxQQx9$`r`b-No&*tib&l!Dp&n~TwT=+CN4z2d6hRI-Z*{1D(UisAYc z5x!Cd`H634BEa$hgB%L3!B^=C%h?gKq$%nPoa(OIUUIdiiErAbQ6)(--GJ{9j;@bi zT^-1B*9Ux}!tg}wT%(54Yho0oP+NCH{BgMlt@g}RAcQ3}C1}N5#sd7ul zbQ3a-;j=c4Lnxy?Q(v#TcvH7xVnVTjy~IKw;wm;*n6j7VKW4HK;BqhZ^hC;EiwIGdu~JX`?{DC9W8IX4 YXb)ktJ0VU2|J4AZ!ehf4e-9o1H-UPteEl_o9{+6fW98~5H|dAybT9QpCKM4WrShXrHHPq&6v?mTR|}(_eq7S&s!e~Bg_<^BIZvxI*KT3t$K+XvvE68PklgP&n`7KLbmewUL|nqcwnm3xopa<{1MLE?E^UG^7FW^nX=k-&+5~7%v!`w6E?S8m>NR zC-CkZ<5n`oMd1_b)|D&RucCY})S3yq=v@(3!Y!G_%fqzLzx8msP7PVAXiNw_46D$D zn|N$X6aZMW8fD$41$fe90qxS%I1-Wr8~+Ggeo~Q*W%xKf;0p&rill}}7LZE7;0#Ns(yt!FB$E64M@ldeg)Y)QH^0)Q?w^my=*Sf;K^qUH&D#y;V z(&7#qu(RP*$3l5qpNq2#`r8@v0O=-0DeRt=8Y7psILZrXOn5`TIxq}O`30Y(c*_p6 zFN7~_#VseQ!$Am?rrMHXopu19U9|}XaN6?bW+5N8BHtmZgRCi3ahDKwP5}4^7a2ux zCHXc-6;4&oAYB$cMg(+S8=|+%+xlD_Q&12kF$Cb~VOevt$*0RIJ0${;_7pqE(CmBq zfO2h~jLJPtr&!7tp~!STp;@R0@`7iP1s^TssQ}nT-rQ`F;1kHmr6<0T3k1OrS}MkX zj14k=!A~-UlrPi~XoaAafq^Vsn>DA}k^;QtenEXl766n>^5$mg6ojY*14DA1;)6iL zI4==E`{n$icr@slE1ara@6rN%s$xM}ejk06ysgj0Hu$E;L~Q`ff2Vki&AS>Yc0C4DSFKK(p3_%_y<(h^8;)$*LAPQyK=B{ykew96htGxghn&CqrS zSBz+oJMXWk?=O3w1Mm}Wj%oUoWK820$u-fv$r%Avn7LBro2K)~8cm$r?xVoSk^h2U z(&s4eeyG3#8MkOJI0dKscq(wHd^2-ejX;AM7;Iw+;2Z>k+Y)2KLEJL5hQZrAzN?*s zYP5qtD{+c%fAv4n>CO;p0JhLbcZE=#K~X9{FW0{GMpDwBJR@w;8oI1-euDUYx5@U~ zsw`x!E2Wj)i2RYwlO*^FL8jj%H&bdl62HlbR<>7pm`x{#xN`f08z!7CkK6}E)bNQs zYG*{~J56fx`tuGM>}Ibbc1Q$cbfT+jlw8@@#BSoC|DJi8&#L8MBOL6V2{l)-#t1Is z4ul_A7sNePiEM*2IJEH%WNLydPvI{j0RMb?TNXi+E^0!Zkm8*Bvb6P+PBLedCU~lIqZ7atC`#|Uoj*6w(L!dABX|4U&R~; zq%AUMhE^DM!i<^TqTB@lrI}uF%l&H|U>ZIUFZ3c;9Ke8q7cw8`<3`nlO*3s)xehBQ z>|ACzJu8Y;xn&QtmjP(6jM%ytUTlgenVC4|u%w>yVw1azzcv?4b220$k?#yP0zi~0 zDs1J#OeR{+3||Vmq_7uUNpz@nkwTdHf`~LdJ0~QU8;9Oi11%XcuX^S`q}g6L%SwD9 zBxxYQOBjd1pElc>{?jn}gTfi{#m!C#+?5BE-@Oy=asu=1GCO3Pi;^QZQYaW6(qyI3k*$f(tfo|;;q2>VJ zE9F)`_FB}$l0yKFx@kcx{(%)dfQwJ9y{eA^bz!gI%#8bsLE2VG6K4l^K9sYL#@qXyUDg_(EQ?T| z00B!vww?57-ZOZ6`0>D}XcdwMXEDJ$A;w0OmlQk5?JT2s)$IBhuc~Ht6!IBReRn{W*t*iLB05*Z=#(6*JW*XH^k{xP_N2qh`xYkR?r_5j_Q{Ff+=)%z zcA^|h$!Xh4yWZA-*F*8m^|2xrbI3MyRP0P0Z|Ypv`I^u5Gh#6>^mcSbv=gPfW9+cX z3dx{LGFCNYu!cS&=P}{UPeayLFys5Qax{R|ccp%3qpdyTxRr+# z!C!dxeWBSRsyNX!&$S_J%gB{PJv$;#cs=eD>fOt@BD==%{c*OKl{wz5wk}CZZI|v_ zib%)*Mta{;@ULs9!?k$x|0YTkSNvGNQgF9^Je%-nAOd3eNR-u5 zm8`Ya5FwPIU>g$>%aByokf;=JVM|p^Fqi;kF_j2Gvq=mzW-o%B(k+zz(Vf{Df86`d zWZs$kyyrR3IpAZQgmbYD_tl z^)TM~NFR8z? zeU}IcJRdQ}?E&cC0wF+|EgsPP>1g2SEdb!Al`{xsN|C?@3x9Vn5(7M=f2BQ-*B+K8G9evZVeHxHF{SIu zM^K_>g~i)A%=gg4kFpZKhc(&&7%V-3VtBm<~%kY zq{cxvxYyrAg{~CYAZUeI!2>w2pOG3`a%;lyrX(XVgP>tIB@2lmib~mTeDh>m$qOTY z6{ax)LJU7oyRLn=q@?S;gE#VQ@H9V&g_eJ@^FD8+yT;6Uk=4a7CC5zLP6yv|cr5RV z!ceW9^6II5&=brbib!n|bIIl_+yP3~clKPm@5#{f>eS3;p5(aZc1>#QrMN;?in++R zEp+D&a?#YYb;v#67@guNZzC}-9UD}={k?XqKqUd@*0o@XJ+beiGc)l)MZ+ zvj~^poMZ2VU3nUn6_7^%_uZKe5D?CLKw9@xmsucGFy+GLs`ytH_j02U?gI)Wks6s80ib+2 zhWp!dXn-4K!Sthe&f(y6_Wrp6&1)7Zi;fAmYJ35$92Ui2&h1=3fvkC~7l4R>nTe7T zqg&|_fyqHXMBM+Rra&cqMvwz(*)ddRf0#4yuYQqKwh9A?e}@NF7$V>(*qeZK>DNnP z`M^%U_P*5jr}b?1*xeQkfd2FQ-A>72c20J03`17#> zRpl7Iz#}Ko??gtM8h`}-Mx08eYGIAb9(g_ z#I{ebqK~wOkPDaNPJW4`0QsuzxEHaXioE}*jbRxYuNsFVwz4gCne~Qm zOo{oW?ufz4T(m5Oto)ifRwFLZkdtG0(CQKi@`TGefl8-9KX2{~c-pBuVsOb$i%jOkf3t?KC)LVlu$LBO0$jb zx!N?U(R8<~Sd!Oe@Y0kVsTTA5#m!&+4mh+_KO)JErDmC=Nu9&s7WV3{8JR|Q7rR4T z&>9h9I43{UqxQQx9$`r`b-No&*tib&l!Dp&n~TwT=+CN4z2d6hRI-Z*{1D(UisAYc z5x!Cd`H634BEa$hgB%L3!B^=C%h?gKq$%nPoa(OIUUIdiiErAbQ6)(--GJ{9j;@bi zT^-1B*9Ux}!tg}wT%(54Yho0oP+NCH{BgMlt@g}RAcQ3}C1}N5#sd7ul zbQ3a-;j=c4Lnxy?Q(v#TcvH7xVnVTjy~IKw;wm;*n6j7VKW4HK;BqhZ^hC;EiwIGdu~JX`?{DC9W8IX4 YXb)ktJ0VU2|J4AZ!ehf4e-9o1H-UPteEl_o9{+6fW98~5H|dAybT9QpCKM4WrShXrHHPq&6v?mTR|}(_eq7S&s!e~Bg_<^BIZvxI*KT3t$K+XvvE68PklgP&n`7KLbmewUL|nqcwnm3xopa<{1MLE?E^UG^7FW^nX=k-&+5~7%v!`w6E?S8m>NR zC-CkZ<5n`oMd1_b)|D&RucCY})S3yq=v@(3!Y!G_%fqzLzx8msP7PVAXiNw_46D$D zn|N$X6aZMW8fD$41$fe90qxS%I1-Wr8~+Ggeo~Q*W%xKf;0p&rill}}7LZE7;0#Ns(yt!FB$E64M@ldeg)Y)QH^0)Q?w^my=*Sf;K^qUH&D#y;V z(&7#qu(RP*$3l5qpNq2#`r8@v0O=-0DeRt=8Y7psILZrXOn5`TIxq}O`30Y(c*_p6 zFN7~_#VseQ!$Am?rrMHXopu19U9|}XaN6?bW+5N8BHtmZgRCi3ahDKwP5}4^7a2ux zCHXc-6;4&oAYB$cMg(+S8=|+%+xlD_Q&12kF$Cb~VOevt$*0RIJ0${;_7pqE(CmBq zfO2h~jLJPtr&!7tp~!STp;@R0@`7iP1s^TssQ}nT-rQ`F;1kHmr6<0T3k1OrS}MkX zj14k=!A~-UlrPi~XoaAafq^Vsn>DA}k^;QtenEXl766n>^5$mg6ojY*14DA1;)6iL zI4==E`{n$icr@slE1ara@6rN%s$xM}ejk06ysgj0Hu$E;L~Q`ff2Vki&AS>Yc0C4DSFKK(p3_%_y<(h^8;)$*LAPQyK=B{ykew96htGxghn&CqrS zSBz+oJMXWk?=O3w1Mm}Wj%oUoWK820$u-fv$r%Avn7LBro2K)~8cm$r?xVoSk^h2U z(&s4eeyG3#8MkOJI0dKscq(wHd^2-ejX;AM7;Iw+;2Z>k+Y)2KLEJL5hQZrAzN?*s zYP5qtD{+c%fAv4n>CO;p0JhLbcZE=#K~X9{FW0{GMpDwBJR@w;8oI1-euDUYx5@U~ zsw`x!E2Wj)i2RYwlO*^FL8jj%H&bdl62HlbR<>7pm`x{#xN`f08z!7CkK6}E)bNQs zYG*{~J56fx`tuGM>}Ibbc1Q$cbfT+jlw8@@#BSoC|DJi8&#L8MBOL6V2{l)-#t1Is z4ul_A7sNePiEM*2IJEH%WNLydPvI{j0RMb?TNXi+E^0!Zkm8*Bvb6P+PBLedCU~lIqZ7atC`#|Uoj*6w(L!dABX|4U&R~; zq%AUMhE^DM!i<^TqTB@lrI}uF%l&H|U>ZIUFZ3c;9Ke8q7cw8`<3`nlO*3s)xehBQ z>|ACzJu8Y;xn&QtmjP(6jM%ytUTlgenVC4|u%w>yVw1azzcv?4b220$k?#yP0zi~0 zDs1J#OeR{+3||Vmq_7uUNpz@nkwTdHf`~LdJ0~QU8;9Oi11%XcuX^S`q}g6L%SwD9 zBxxYQOBjd1pElc>{?jn}gTfi{#m!C#+?5BE-@Oy=asu=1GCO3Pi;^QZQYaW6(qyI3k*$f(tfo|;;q2>VJ zE9F)`_FB}$l0yKFx@kcx{(%)dfQwJ9y{eA^bz!gI%#8bsLE2VG6K4l^K9sYL#@qXyUDg_(EQ?T| z00B!vww?57-ZOZ6`0>D}XcdwMXEDJ$A;w0OmlQk5?JT2s)$IBhuc~Ht6!IBReRn{W*t*iLB05*Z=#(6*JW*XH^k{xP_N2qh`xYkR?r_5j_Q{Ff+=)%z zcA^|h$!Xh4yWZA-*F*8m^|2xrbI3MyRP0P0Z|Ypv`I^u5Gh#6>^mcSbv=gPfW9+cX z3dx{LGFCNYu!cS&=P}{UPeayLFys5Qax{R|ccp%3qpdyTxRr+# z!C!dxeWBSRsyNX!&$S_J%gB{PJv$;#cs=eD>fOt@BD==%{c*OKl{wz5wk}CZZI|v_ zib%)*Mta{;@ULs9!?k$x|0YTkSNvGNQgF9^Je%-^3zjurvFWapu$%_%$8J*@|E*$OMPzk9+NM6 z6|!5|5MX1-=i}Cer?`FR^#uaY+k?{Op)XCjyzh@lgtEF56d!?kdY$Np zvm3Ls7Q(ZH)n)fOh#HK<4$Qb-G~}gQghdrQc7kGmm={>`&75`!m@|a=f>a7QEMp8(V95-xImIf~|!mzy{GQ35Xu zL#DfFc2-0tmtD7}t;MJwTo-S%^CkyXQ`=h`gVV~s_Ra=RQOQ1j-2~sI`B^-rt%J5G z-r~1z7o_{A!Wridpf5)c3X>{mkg!NB9;kGDT^_5-UANnP_dBuGv{$O+I~0Z?DF$e?+EA%|a5OPUR11<`Eo$If#V* zf7<_&{Oda;|H$*t??sepCR)8G1@0iW0(wl1vl?!u%{zqEL+PzH|F-`dbvbuxmO85l z{LDQu5O8ubVzk(pJ%t2bWfo=tK0$mNmxZEHH_oZ?EPuxME`K(T?DIJe=zizQDGm4- z0fz1j9<@^++D{G|jgz9-9jzpNz$rSTmX_>o6ItUypvwYUI+_xn{rcii5ALpIEecfgZsxnN zq}_($fSQ7o&IC7t8SLek2X=GxetMz<)@?X?Bbt@S(fd)ey1Do)(d-Cf-OnJP@{r|m z^s-5>r%HwqP3Cg`K5pZxmViz$zyb52EEL;?0Rh_L^I!6xR*oRSb98vJ6&74Hj368} z1qN1}CX?w90@(SW1u4xekSBa2PkGdyNk|?X==ycpr?>fu*&fORiOd>A9}0&X*A_k( z_0yD#kHlV8kw;E!W|mj!u9bq|`n39E2ELTd5jj~Y}|2ouMYjxA#TR@cf6mnN0> zKNQn_FI}rrrQzp93rfRh39RFiG?M>ql5BQu2VCF7^%%;r7l``gy3G)%{!lFA^{~k1 zYo%BrV=W<1$bZI=U~kEMcXuNjbu0 zWo~Tpg$TG&A|%k8W0047*8b5?YA`t=xkVQ$@#Fo_x4kHSb0eOV5R0c>`!=RuOl~@IY2sdF6hgzU` z)ktxmmc=5(T)+^806}d-M`cl#0tHfK(}*Y`GH{zvV(Bw8ANn8kd^qRJdzSaNJ?Dna zWt%T-wPH)`Z0*b4c@K$gEX0yOZSTp;h6Je-n=(0Lmjf-!sn^q>m?OP(@k# zc$v|*xwmoX(!n+iCjx6Cc2&tgWWghJJlLrg3~kWxk^G1f$)Pi>O@h&5pygW``b<(y@Buc`%Ixe7y?k9UrIzO`83Vy5fl zLFD4zY^b5LoWq%O2S1$@wAVrO1r!p7q9O>LfL29lIdAYvniOrA`m+&wciR2uSIp)s zkZN?5{w{%a;v2pCqL6%_68TcJlR_X{d4rBdDeTBk>ncLYI6q_McOntlP?neDmWWHS zMmRZ-RKab*{I6(z10Qj5TSt|LCEerEjKAY%>=1B|$_JvO0KYlPhk1FzAMa|)!*Yr1 z0{kyX8qvZ;{5Cy}bbP$2?Ogt6-4-QZ?65Q)YP_^HlA#6iHvR_cZsDNwzy$zI3pT<# z4QxDUR%`yV*I6e3p2WDq^ST6>jMw|)nxnrD+Ioci zDs9gMM%>LU0DS)X?3$jDUF)KLA2RPNz7smyoj2Bmf`(M8hN$4VW1?~K?Svk4z_8z5 z(qL;|N2t$q_H+Z1^7Vk~CBmtUx~~=aa06khj|HuL${d)69cMUQ=)!>faHt^ckQQLm zuUx!8s1wON9BK&|M5)GAT+M{k3e#)jAH>9s2vXK)C&3@5Oc+<}o+5a`AdEhV$GaB{vOILkGR*QwIn? zNSm-wX+Hi^5Ndx1aFWd2kn$>Nf5z3b4-$KNw7~v99bpuH->(Z+D9D~QV}Odkp5|$B z(^xf;pqI=|3)8GFqN5&^lQ@vAD9O-yevtwe=f$M@e~cf9kL@Jss7?`BaxvF^R>w~p zD7)91DR2agEi?M{gMKE!z#f63Np#?INwPv|1RMiy8hN^l-m!*0Uam-U2Uec`4go#x6Ph ztYpT;8yw*)x6(v?x0B7&EFyBj$}{qQNu>WwVX9p~Tbf1S5`2#62^Eu7U%D5MHukiY z_tZ)EvYnZhORvtvbi6AaI{J7%;cp!kDrm}q8H=KaMl%#GqsN;0F@2ep6G3^EnY(LS z|Fx;KT+ACHa|&N#7%lU1Af!vd-?%k!Lls`eU490|qOVao*d!s5|wi}g)hn_DR8hqEV40R?qr8O326d-}$ zE^Y!IRU<)pg4{`mq&D}4CaF4HstT+h?obtrS07|1O%6%ba}#QB(F9VfGC$mTvhdSZ reGu{&jg>NqYYE5rpD%n>(1vR%exfqg(GJ?xRk2=_lGyXGk&YW}4f%Bd7^71av^ZcIQ z@AsYG>AD4@Iad<^fZ4Wn^DY38Uc+CshH|9zQ0iL%^fR|@-r)XYhPX+b)aYb%w)(8| zwxzl^+wksa%^bWHro9cHtk|@!_`8?7#7`&-_DNU6qkHDgJ^TY+*oB&w;X_K%01hw6 zwORno{tFig&<4sK_93;vg6%{EI5Qm&Aj=pO(8Iw1JW@9T4ypg8NuT%DC$&Fh9qdyS z1U#hn2VD#r>LrhThHxpDkI_gMN%!jIO&Qj~R*iM}!jiTb3;)x3AnME}yq?gjI(*ZF z>sYY@=xJ)e;oS7eu9SuC_T?ZUkMTP*wD8$fK-`HN1!(r3YQr^Cghm?Zox2A}ZwN~k zPQdY+5`U2+011!PCqw*oVmQ+u!CgL1Ni8bb%^p}TH5jEPfgy}fn<6RlJNViaAYyk& zv)%-nUGiDZJ*EIS?T?*|Yhk7Bo&rEL9KW#$S#=8wW?vmc@To`0lc{QEz$;l~2sq2u zlF<_ccB8H#Cqf^9MXSmulcF?`#@GYk`0*Qu#vH8C1=_!iA^3hdd;b*G3Q_USJ(^JS z%uMTXnn(1%ncH3VaaJO!sARE0R4nlS}RqgH&s+_;{;qqJAi z=!tNs+zz*@M;a~UQbxE=LARZ+!dhRUOL*jlaPqE@`<17~ElRNuGxX(=w15GHcbVkn zpWYtLe;=o14*hiMyxyqiKirIdz_d`Kl8?Ux+(Synxkbt8*o))Ljs$rv%Cnl_1|Uw~ zvW>2iY8RV;rkZX!ogx(w66@K86oq%Uv7N#eA#f#bXf&CVB1wsUTqWg8%g*)veMn}~ zUCUY@Ur10G?FN#CaH|$Gu>Br_RU7)O4{Zzu&hUb(L*Lr6)lXX#cDk@i-}MRtIL6Z* zE^=cHkDEDe(N5iR=k#M1GC{dG#bhTB=V55#Qf{(7uJL(;IYQ%-8EnJZa_4K8f-ecr zg~K9xg_qmJ*CYr5UAaK#ld9tV2dktnayCGLw~DKUwkh-H&am6q;U@jOs)uduQXKVW zpi;wOKK5s|d42(F`vu3z*S?7E20jumc5z1-$8lrl$#6SJRI>QmF9yt;9>CTuC3au`hQEnJqJj1(gejf22NsvCc02(90d#r6hBZ*ZytxqRsvo z<(zG+3;C;>B6QN+`T0K7gfz9Abd0_u8?{wY?W6GKpdtR`_Mno&J!g4!`-U9`(E2nY z;!OW7e{f;+e_ACsWEathWxidxecf3`+0N zQB;wOn!}|cqz|Ki*+!_mXfZl+B+;$ZN2&m!YU85?PiPE*cQ8%^2(FB#Gx@%+m|%}@ z^W@|{s*I7G53q_WOwGMjPBnp^;qfdiu7&IQtrx4B#WzJ-0?GSNIx8l)$`lF=)e`Ct z7)Da-A29qM!SHI9SBeM)K=!%-A`5pHKz^BPlra#tctRj3FZ3@%G*eu74a*B#?uP=F zmSZLLzwLHvQFX%^0}ywN7DK|g=hm>tw;jerlVM=+_CH{N_AM(o+3^4ZRNOAxyi|Es z4qj>Q9cm2LT{B$(#|0{@8?M7YO0IYLb~Ld&TN4n8lU81%eVG?M=Hopr1fZw# z=G^>ljXDUchXKYF;c5&*5(<2N_co?B{TULxQ}-m9YJqbzys(>%fSxJLG;DHJwkcJ2 zkR4&M(!+n12LF0L3`;62eej{nzPO-f?(%>tkz^6@{oa$9-y{5?nbSfE`;AO<$LlS2uh z%-lq>==Pgdzs>?f#fdueCACy0y^&E_B5!C2ZD#w)vYiX*^^zdjz1~m?i+oat>y%Ov z+}+>LPaI4mBsSjVacDe7r7dM8$wc<~$Gv5}Y5XHEWfpf@c!R}Xem3oh>n|Wx?v{y*fWio&E~GHpe(CvE|F>%pg_jf7D+jqhBxj>*5W7i z9FF4i+LA*(rVf&n*QlZorUzIqm67)tl9N-nPHPIo>7X4*Vm@+hC? z=R}bOoGDn@v80nOy+bef+!1EZae3pvUPft&+fvZzd0x5Z+&{OAb~mLw>i+FScSD1n z)zC^oaG`5q*GhfQ+o?1Jh;yf$|Kf2e@?hQrTv)FlT2vHpo}hRzlq93ukQ4glg5ffw zy?36nqtC|MFx`&x5!@pq1(amc9`b+iI%A|r9+>89H5-n%E^Al5uL0W}T{kl~5@UY{ DxI9+) literal 4548 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 diff --git a/test/constraint/pt_face_distance/normal.png b/test/constraint/pt_face_distance/normal.png index bc1ecaf02708b49864dd0a081eff72b7b7e6b30a..7379577a843816a5cc26a62d485a649f6ea78215 100644 GIT binary patch literal 4275 zcmeHLc~nz(7QVa?z@#XVinzdt7DtaPaXhsu*q}feN{fRiAWL|Ph;3NvLL>+iG^hq2dP9A-P8O86_5$d&s0;*!^p(CuwrXUgeh2+_ruo zN#<@)Q;+!BW}m2T_La;8Sggr12SAr1RG9M_sso9WtN^3Olfh^{AK;3v2{>?Z1PqLc z>umfVy~OvvM;Zy+;4Z2u@oiCx3(E$15wYDZ;pz}Mub{WXg&dU`Bz3b+sHvEl?dHGz1bG%HM_v+h*l9s0$&q@sLrb^Kdvt zD?f6isy`Gk*9jw{v%7s)>d?PG)xTFOg*k;{f!qRM%O?G|X8rm_t9!bk-FJJIRt5P41+tO=xXET(pvD*7v@&nq8u-fO zHCA-2->EpO4b6scU!w=yBNIlveleE-bb8^62m`GHqgi3u<_Mtk*;=5+a}J$dwRWWr zzG3|Rfa_gbdO{mo3I5oA7NBb<$4uYebA0NC;RcLW*Jfp-M? zg9y^Ieh_euKp_w_hF#*+%|Q_ifjBdjbGrnj7Zb>&C{w#6Q8Q!sJESZ9*;C;bRdm-Z==o+h zUp7gdmLRgH^p!UrzA2Lkghi?cag3wYIAhP~(@r@Jt@EF&`@#imXjgt*WkVXOQD-Zj z*mZhPo*iF$hM^hBkJiNw_n_rhZ$^Bof8J}rFp|wj(P81|!HHYV7-!Bk{%4hU&KK&-G4re#$OQeY5mrma=km_{5$kiYe2K zOSg*DnnH17`wyu@f=#EWP5R;z@$K?nE4Le+!f^d6ZyHWkRyHezyY2-&bk@|1QnEel zFK_NrSmgd}xf+-mDl@}F*N)x|m^&h7+&w2yW#o@q`h7cQsu%J{TN|qy8>5v`j1gt` z{Ux!FB&iHv&8)gOT8esxyYu&h7Yg^3TV83zw;Rr0cE2JaE-+0fQ?{uzF>xvmv#6y- zvuEVMJZZwux2c9fmL9@QneYMa_dJsp@a5is&Y_TESa`X4NdRQ87QRGx)>*zms zr|ZGhM98o4#xx6rN-2Kj`mbsK>r)HHY0}u=oTcp^_sCwgA9?`B%AaUj0Q|DJ;8(u3 zg*L{?XOq!-OSG?h3_1SVAuz579 zR>^7LKGg>|idKY41Vcl;61m5dO%j2eCc6}Ay*$S)5vPx_VctUrMQOBdz4a@Xj%HOm z?*wd)oz{83VZLkkIVPWk)xLl7BkgQQ#@}aB-sGucBtJH;1;u_Wzd<8_C4|QPzJZdS z5}cUJ-PlOh5{J?P!TKpWKsSDuhCfpp_-WI9{00H=9yyZz zm`OQA2LIYB2{E@7{q0o;yrgeOLGJjr8yvc0F63y0y=OcDj3*X_w=6t=Fh93>4vQqr z6=a|<{v9-Bg$M`~yeZI6^RctMB%_Uu$IsV|#^cRpql=U0QsMeMK3h)DOEiJ~j%Y8p z$qGz81JL5MworCHpjH>M^ovr?P5tSIm{eM5Z}&q4hAJ$t#2+wE270#ZE`CP6xpB`uOH+XcC)Nwq;Dc2BILMbwq#fYit|-l$QKp4ijePKRN#ft?H3q8T6YC!c& z+bZ47pWNP^slN{a=`Tg`k^6r}VBdimK9x3RCFurWzwWMHY17IJtwYj4vj0sE$@D6B ztk`y5!i311g)wKojP3S&vHk}BWJ4?_^Y2f!_&==Q|8?6}ldl==-}x7AzZLOk1h_i8 KJLRrMzy1&4YODYN literal 4260 zcmc&%eKeGL8@^{44N52*S2rdiGqzg+nWzMeji$=p|{cX#9FrROD2aKaz1AS z=fO{wJd!@%)3gv^_2>-(0Bt>17e3lX!@wDB8{iPRIMBBe0Nl|u2A32u7Vz_sbb|h& zhXmhtV@8T{y~@4h^*2Qde#8lxU)xZF-{|F}`lk#<2G*&vBq?<{muvK$y}yO#+hn4+ zQ4iNqfP;Bbp(a0?SsE9Yn*IE?IqDkyWq1tS>G|MA#T)8{F<8z;{Nzdy^RBY&aj1$! zaXXpoLHwiI6N%?qvzNhVlw+;>sOqia3;8j4;9PE0m-+kha}MXw6`HWj02Pe%hZe9! z8LorMt{Yp`9|jzcX=+jC>jjBflZ)ZEhwi7)2Uweb`h)#`Ms4WU22TrAB@sY~ZzsHH znUBg&f=lXp0&uZF-HGB2F?nfVy1kC+ifTa7PxVFJ<^cP@nDs#v-p|jK%!5=nR4@Wl z4%4Wm)EbptwysTWAqK2M)SbvV{3?KiAzr!Ke-;Jpu!HZ*cFVUhP-3=roz zqMAIJB8car_-W8?i3%R$km~H`t=m!AQTNiAX>)*Rt@gyk3}v@Ar*8gt_UNmU>4&lj zSfE)kP)(l9Ni;Lr9uh|EfeuEpO7X2L`xcd*phVo~v5=#x-J7Q9Wfze`*w_7(u93)AZ6RewfR<-TO$AHQ1D2>@Xne`mD}+JSt#~BUNy;l5s&Vqw5kl zbOxst+QO*iSarH>4RY!9vgE}C&-`IkdtdY12GU3?gI9CQpJ`BDH1P8DfuP%pA^%OxA3XO85|y=UL2MIa(ed&(^5lXAgVL7Liu^6EX*4V^ z!ppm=vQut9{HiT|g;h+Q^YAEz-rLc}8_4?N>e?2Zk6d^(k|f*Hr`mh-bY~&HeRfr4 z=BkJ`A6|to5}1B?U4klk_ORnU9MU3j)zO<7<^{#yl#tJ~sp5vN_lml5*fqvi5m6nk z%3&7|JoS@#EsZ9EI&9L>nBKAb$InNP$V~h#a^~1Hh`HBdi#r;PT9v&pI7iz!MwxOA2v-MwlGWY>$ zSKH`ZTu)O&m1h%!Wq&u@H%}+7<3&MFS8e(@=v)FlLK_lR8d9P9QLYirDGS44#;;6> zzTimIOvWoiz9OHo)!wz0hH=%Ws@AyCHk&7psrHnyp2n~c^GfCJ%#g|R{eF>bxoC?euJ19Ya7uj$eJm!4CN<)3gFQ{5wCv6RT3qTcEu-Y~{)V-CuL%+y{@ zT|FiQb*fQ9l*7A)oG&pmhUkqmq51Ju#_uVa^-5YF&Xxd}{DtNG$5C|6=aAQdHp!GKQDatK$ z;r>n&>Wj<`Plm~7Kh=eSTD^Lgp8XiHY50v<#fg=M`z~ATC>mH*44e~}KM@c-cp*K+ zTmQOyo{c!RQV$I}!tOwujim$f-F|tz!B01q`T&u@6;j6j^C$dU;QAjOxG(i6xO=;7E$gC5%`s*?54T*%I zTfuUca%4-JreU-eJCM6MaRHUbe6IOs$G#`Guwc8dS?rLQMPX#vLqw|0(#Ib`WKdIhfNW@Rbcrg3(kf3~S9bgM!0SF`LsgZm z*|&}v+)O?L;OIS8EC8!@10Hi;UjP5MhX1+sk6>LH2~npAeTY2*@Yv$%misB~)c*kfa*7iG diff --git a/test/constraint/pt_face_distance/reference.png b/test/constraint/pt_face_distance/reference.png index cfd684218a8fbed950d235aefbf45661264e26eb..8b064085e884f1b3bd6ed093961f83ec7e939656 100644 GIT binary patch literal 4339 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 delta 2513 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 diff --git a/test/constraint/pt_line_distance/free_in_3d.png b/test/constraint/pt_line_distance/free_in_3d.png index a083fb9b0aac0836adbe38c83de832e31bbbb1c0..db351dfde01e033f02d4a60e598aa85385f99d74 100644 GIT binary patch literal 4403 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 diff --git a/test/constraint/pt_on_circle/normal.png b/test/constraint/pt_on_circle/normal.png index ace08cd9c29bcfe2136fe47af0b6d4263047a2f8..ef105be82c4e2987bda30ec5cda4f8210706f0e1 100644 GIT binary patch delta 3074 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 E-!#d8Jpcdz delta 3088 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 diff --git a/test/constraint/pt_on_face/normal.png b/test/constraint/pt_on_face/normal.png index 1f31b2ae4af7bb81836cdddb64f121eb1e571fd8..4722a97364254179a44d284e6507ef6a0e4afaa5 100644 GIT binary patch literal 4758 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 diff --git a/test/constraint/pt_on_line/normal.png b/test/constraint/pt_on_line/normal.png index c0b5085e2fa34696ef4b3492d3c4090394a002ae..06d8d70e8aceb8b831792592599100c7ac15fa72 100644 GIT binary patch delta 1758 zcmds%>r;|>6vuxcAc~roL^2h-Xw7CtrR6AIy4Y16oy-htWz$BJ6rCck1a6z{tdojQ zX=#OawG^X_+^xW;GO@KZ%O1Rinig$nm^W?$i~DEnd2!C0Gv7JqbG~!lEg4->x_o!t zu5FuRvM-N+%uF9?UDP`Ki?Cwny)L(-&jQa(@XC%)lg7x!(Sp=n=jYy$lQmS}a13!T z9`#YnN*?%%5CjK8Uo$@}27q)9T0&R}McKz#kL~Ear1(p8L_2eT`ZES~3F^a!a8x4E z^=9w61c5-Q_rBd6!nv73?xbQXA_%=`MLZa&IiK1X?IB&6A2JjZE(F|6 zXSNUDifGd+9R%G@aTI$pX}~7KCfxxIev25_Ft6Yz8Wc@OLF7veRAcW7-Ltl~W)=8# z9=VMJJrLxI_VofIwDPj|*7E}uV1d225P;{mkUpB&iW_n25hB042{myMahGo6R5JTU_>l0E?3NIlzNw35zyoKCE zz4DW0OlCPd+Zhr@yj%jKbwA=cA?*B|_NbI+Id~r~bG~!EnRD3&&dfeTds%|1s}gCF z%%~Ggx#KxU(|S)z_?;YT;bCU{)ffBuje>fnp|L(8Bdyl9zIaVxD6d^cTRoMR!PboQ zXH9vL-`6!gNx*J%o@p&%hAe}v49A{ZcWk4h3>WoPxmC2y_pd!Uf+qMsYVYS>5kG{x ztvmLZ7r8`3$#0=NcOFCu_8Av0f$0N|m|*-onNhpwaz-&;&GL~^=Oh+&qT!{C)aFy+*V@or<1{%=VC!-~VBjQKtp;DEq=FB9 zc}cddz679)afv$}ad|eW5)0VcXmJ61U{C2k!~3V{Y0ZT$fRo`iGO(0dBVXnKw)=g> zC_9cN=W3kKvfN{Wf^oqA^kxeNwIb829t`zhkY{Gc!7dBM?OZs3vUe5u3c&%M^R)^N zAkEjo?zxAin*96?EzV$C`BZh9^){=l*_iD%^n9~v0DUl!Nw?LYx&XZH@}~btL(A+U zI9cj+!<)uC&eJXY{nbuv91_Go#0@F(aVnv5w5U*qKmk84zP0*&t+Lh;^VY>A#b?KM zu|`Pb*?jlie1lv->dUQCt#6Y|Aw#R8)xAa!!EtSm2m8(S!T!gc44GcSYM;HpN;s6P zoSIEZ%d~?bNrbEPuC74>SK$Oo!qx@*CfC*C*vpim4_*y|YHxF+ux7!2CJ4P=N-KH&inE zp-5t}uAET8V=*`tCBx<4@K0FAd%=o4fj-4>mj(RKBw`T3&HzrTZ;&#e`uiC~AU$ZH zjwX9xckl>V!vX}Yl^TWMU+C8oyvStu|{5f!$GP+y*pdwj*^Qv@U zDW)1;m+la(l&3vZ8H*;m(!?$L73}({3!(<~yMEvCu0+$AK0}$47yHR9x_wxri&5HK;Ws*joMUKV zC5|ejI;6?SP!>jvv(ICtet-9~K!z*Y{9j%(cs09t)&4{i_Kk9Tkm7{%@4y_p!Xmdd IY@z@9FRJ28qyPW_ delta 1763 zcmd^<=~vQO7{@OtN{QQ0ZYVCfwAd)qqQ?xfERUr%jx&ZbHJF;^T2thL37F;RaWte% zvlL@0O9@O7Q(1DFv`w-`Gzy`Nw6L^NN>H4i=giyr3+BFf?wfnQ&+~lF=iJxsPux#? zZm$jx4f!$q!h2h6ill}W1*Yu_(-2B7r%aZOL+vT_i>e)k>DAOI6Uhg2pd~~KG za}_HpU#~UPgvFkZOHDNaZf}I|ECDFp#;gx#vezuuamF8hexbNIYiOR*n8IpU3Iu_s z5(qdF?^yzut2KCEl@Msn1_`$3ufePl8KE(2vVx?tCP#P^0f_e|^82U09Q|s)j3?ox zpU;onp3&8y|8#g(tEEo12y`)`VtXZ(xxwEV?F;DsXy5i@lPd=HbArpFzUE7>Rgqy} zWTl>nNBcUImP=p_K76tp-oD*Y?eN0G6d-F9A5}rN>OHc|r{F>fiwtvQeQ)ky0VOdI zptNzUteWM%$cZI2v+}wt@b$X7bYUjA1#pXif(s+L0zobs)Xb)FML%W2)i^Yh;Yk}n z$b-*abOPjE&<5^=#sJ`aN(x8jq)srsTGg9MK2$C8rL%>)T?b&JUVLzjd>%3C&8H_A zw6DI751Q+A+By%5zA!Ru?kiVPhZlDxEpJr^o7zbO{2vt@sfH-utCr}m8Dm0LNpu^m7A z@qOn^Mfux-=Sm*@Qc3PekFd^GU6{W<9+B+9r{_PMixfq2*~EV3cMOE{b4|LmZ*Lqq z1+g%1cLWzev}`B{pRLj74x)Q#-J!ic|>EVVyx@FvLCNM@ODrg8^M)0Rq@S z>*ZJFnaEalWFVOgA66V{>7qDNV*m{Jf3v`hRgYR%fwIK@H)F62cbipjv+RG8>|-;Y z#}LG10^p#WfqWw;vv7;OEEUg&bC0A?ltXg)c(X#xF|0`>KBQ?qf3|lW@MkNeadu1u zKwUN3)%U`I?j~d`*Sbl59~%s$*fLv4UXz6qADx=c9lj%sdv4&EfuZ7my*H=HlgTsV zn}J%YNBO$iSORBa9b-VjXHsqm2h8cXX$+BT=@{!;x5u+pjXp7#V=fNqr*I~uDd|JK zL8_uqxHM1?^*dGCB#&qT?A-~bF_87^*l!03TkXIU=Ucwng~0ckPnGqL;q(zqasdT? zB^Ep`avi`7^@vQ>x9(DgC5mv_G-TFdo%TtOz zZ!}PO!MjLeS~2C9xlGL}>I?nxU&pE0!!A}mEnyIC6{(POE8tpZEvmXU&re1GyRKU_ zt?8=Vr>!|x`|=i`qu(0V5znzsa>SbMq(r4crAcVN9Mqk0alTPDvsa6clcczSoi802 zlvNe9GN(vchgAc$o}$I=CRkH1(qugXO%bB)dcF}hwq3%ztskf0R2!4Bb$P}LGkWw` z06$}D50#P%WgS_V_nq?|c}GcpAC2Lz+PoyLRy4Ifk~%d+ zFyLS04%eQ|Ho_XBvbp#H!w=cPF4)?gq@JFa5=7CT{r7OgtGib&eYysyPp4$s;ulx& zN~hcI^kKDE`wVA^E#m30y@bO`hnbmX@icc{(Ged_bxpc``1eo8T)+kBg9XUXPE5u@ dCfnYAXdV_36^h5YI7R^Igm2v$dSf%W;2#$kEXn`? diff --git a/test/constraint/pt_on_line/right_free_in_3d.png b/test/constraint/pt_on_line/right_free_in_3d.png index e67bfacfdc0c3508662d3755e9d61d240790767c..fca580fa96ba0cdef71493b8f3e7fdee37dd32ed 100644 GIT binary patch literal 4316 zcmeHLeN>WJ9=@RX5$RYIeQVjQ?Usf`j%GOYp*c=zACr#eC=?#c%)rdl6a}+dkFKuO zDt^x#Co5NkK9KxC-*Q$hEE~(0jtbh8x<+ck5DF#xTH1-(qGrzSfBnI^hkNdO`Q6|1 z+~;{-Qn&kfT1=Zi4FF)_^_BZh0MPyuA2SnVrY@Az1%OqFm-~iYu?2(DJ%>Bt*(VzwC~9ay~BKGc?}%59O_lJP*-QPr)^n&vfFz5lHZEvP02Fy_2DvIZ@_U;{X3%_sZQ*M6kwV>|QcLFLdQP!d*s z$V{(|*<~Fy&M4rB!|6@G1p(v&3*t>d%#5k>%L)8+4T|NJI|&Lk*gK}>tp^NY=9m#7 zm!TZgBw1IGu&=5FkuTwtBpUQ7L_cA{;C%o*S6@e)jmbo)o;Ak!_05@@c>x=- zK0gj*7@m}KuIza>G3mMQ%g$_y4$hk}u}q3i)gkv2NMq`TGf5{y$wP6LWKDro ztbvoVRSPOCL~N(K|FYVDcx?ASBVNw?jxau|kS5#`|N5kK!9C#xoA(2vMf-VeE^uNdz{=D)ay*Hs6G`I1;lfdVJOrD5Ptq zaquhK5t^Y4+B?4v+AXR4#t1CDIf>{a$1xM@_TQT4`%#8!E4jT_^)dq=X~>W_04+cL zF_tv$QCN`52C9(;8!Ub*o3P>{0>xn%y%4j-cM#zz;G|A5&tSIEpu>YYeJlXu^GR1u zZ+N^QcGtb=O&^A{$4|UD`xvssNC?* ziztv0lKd)uvm!YOMwtiR%976$*a)-;!KF%!-#?nsz*1F!pu|}GUr@b^7OI2vnlZ)x z95@I79Pzz@`1h6cj(&>Ry`B{)mbuCVu1vKDRM(e6GY>pqoJATGkwofR6W_5p|8dj*SP;T9123G3GY#$K9h1p36)CepK|bWV_L~)8G^I3Vo|XSHM6dyErvI{#i4o_& zjE0Pl0&i{87T*#(Z~6`eT`N*E`92yS1&?fPdX3RW76P6do$5V``WZlLNpz|&(#{^M z)_*v3@kTq6Qs7qpDB%(TvMwvvq?Hn$=8EF zD65{1e~E@pAS*-_(mV0;Zc&V!9^}oXem-7{K0cSomnmV)D7Sg_NV77>2JC8YW~*HD zhH^KHGL~-uw2`EA*2JB-GqR_Zw`qXeU4!4Gmi5(4zs#$38qK;8AD$$Hs}c?h>-ykf zX-%sncv#!v(3x4T{W*GwDLceei_Qy4!9Pb#tDlTTviIDWg^O%Vq1j zOX}5G{R2hAl)ci-aiJpDO{QfYUKk%MTV&Z(;(0Hc))km?C62yReQb5eF@=Dn1EdQC ze$hk0EOlMn0Fg8YJacbMw19g<9+uOq81n)o&tt~sRt#kD!~1nlqZ02|3*q72rmXXf z45%9KweN4Go+8T&>W%Ua+EAi(hN~_sQ(k0)zxJ(K`5Cmmk!b-3^3ukh{H39!UzxK8 zkWNGz$@6&W<$*iYSt62RrK+nBzXVv^iA;O8V_3Rb`=s8CE`_($CbfxOiv#4U;LZ7^ z(qm8QOq&Wfdgj+iy}$0S^&_`ycgB*8tcwDh#1HE+ry5o@uj+QVv2xKpBIr4Lj6Op) z?R0CpYACgEDZH&vO}rG!l(*I<{!+b4siYxq$~v0-q=PEzET-Q{+!+m?A;|`jSjopI kodGW~=$0R)gX7p)Cp=2R#|KX#|5^Yq4A% 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 PHpZ8MVMpuz35EX#=m2A^ diff --git a/test/constraint/pt_plane_distance/reference.png b/test/constraint/pt_plane_distance/reference.png index 7c7aed06256d03a1bfd86175657d04152c65e8c6..60048a47e16c5e0a6b025edba7c361b5d9a27317 100644 GIT binary patch literal 4417 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 R#2R22--K@oyS|=Y@L$CAtCj!& delta 1960 zcmZuyX;hQf7QG2ch@=cIB*-9PDr!XqD*`g(w3G@W7Q!H)=tBhsia;5{mtYI6mFa~N z3kWJwR0s(&RS<~y3Mfk8nS=<0#8L?*2@ykp5FjtXb}fIr`{%56?_THLv(G+vORag< zMYevnM-Td(`nE#ClO#hN@%!5+4F4@l#15=lCBLdsz)tS|b~r!z z;fV&5qxp7D*V41B0)yftEC7B`gve0<9JV2ov`ol!m@(Nx*MRH*Ga%naY#1g(x z0a_WDI+cFqa_E|Bgc;GLauYUn$*BnhQ8<5@qbdq|?#Of!rns1|S~QsHH*^(1N^<4eG>8 z3$+uJt1%sdmqIPQ-w|r)SJ5!=-3EIX;_L1Jc6k31^JM3>AI^B<7^gLf{yqgnhuyD1 zb^8iO#V@14?@!5Kd1rHw;6~g7#nfgJ5*XOg0q8+sfj9niv=Pq`3AklaYlP>_{Mduz zkiRpeg2bFLDOE0xnFuu&bRe+r^@ZDxYCk_Oj!>;BA{Hlvw+ho^c_ABI1XvPs#m2K0 z{e1{rI8h?%z{v*NnGvW8E_@JyHD}ev2qtX*+Mn^OS8c6h>y$d*qFY1NfktGX9bMqP zQmt~OFloXq1xKQv`iz&o&w4R&_YZO*0SXYJJT-d}eCx6B`KXaE#uc zoXd4Kc^nR6r+EkulRudJ<^hQYy=T5I5lM-Y1PW8AaK(lsy4&Fs6WLKW2nA0DqxZ-)@%In z3r&q#tm@6jvS03yY86dkt$_E(up z7Bh95{B)Ax#n*ADj|7r`L^`YwpbFif--oFWQqL%Hc*|}zvHQrKI(C>Xk{ag#i6~GD z#FL|8rhj8yeA%edgvTg=I%S3*uzm!HZ&`fnO`(7hTw3#Ivz){Zdvi@2aCqJ zJXO~uR9JP|wpoz-bgfGZcj78<+KnD&w(n8F;sI+|wE3!baNL2z!EwKaf}uJ`cwGyv z-*jkx1UiHT^VPfPs0x?M?>>~?8G;j6&0=#>fCiU`W1De%s}ayIx#*H0rQ2_SNHEz; zx475GO1oJxNf-73P;IuC-h1v65)cgVTO3;8L}#PU7evOWYtRlbUC0>Su89=NMXptn z8Y8ojrmEQo)BL2ZcsIi5=}Aa^@w{{=qh%7sx$R|X3ht+kGcFxJ2Lt6UsnIQVYR+6p z5WB1&4(=j2zo>&Rf>U#s@>(18KB6(&D=m5D+dRtlQcuT7#@b5VRUL6P3nvs2!H@+^ z(9;Evqh_|ruB=W}heNXXOGuBoMWgA1RU~;o74x3jzh|yrR)_=5oD98s(S@)t^VkVe=|1U$bzvK$kDT(}y+W9KYJ@)hK5;BG9 zVKRkZy>hndXQ?m5p69!#rQ4|i6(Qnfu-j}{o&phbLUpfRg16!{Kv^QU(B ee=HJ%U5Fa=7B*yi>gAKmXIsXIO&Z!9i diff --git a/test/constraint/pt_pt_distance/normal.png b/test/constraint/pt_pt_distance/normal.png index 1b9add3f99832d36e8d6ecd7dcf3ce67dec046e6..3f6f8837d02cc8ccca8e1c587f686cb3d88bb102 100644 GIT binary patch delta 2515 zcmZ{mc~Dc=9>-5^5+H1Xlz@PQ9Y+vQL{yfb6={_qiVKUF@Nj#e1ho`|kOh6xqEC!h zttg9-+kS!*d@DfGa&h*`X&fK|k&OPV%`+UB025hEn zF4zTneZOhL&ZO+I-uKMz+9kDb{u4mBzlg_lS-nh~#8mMjDZ=t zrmzw6FrpBqAk(!%W*h+6{I4{)*}xRGMIA=mg3qDSHFxqcfX=)M8yYULm#=JU^8%s% zBm_8(aRzkG1L3L>O`vfg4Gjz&IDmf4xOXMe(UjV6dw`=&egD>J+|&mW=MynEq!(Fu|D$bJtA~cJ8wh}%$+#T9LBde zNT@U8P2zC#jj_Js%L#c2m2q+zB!7#wo~XYhwy@93C{D!BW;J!%RJi0hwXEv6neTPb zAv8WXFZWT;HM_{5tVW!4S+I!G=p+#g$k(mzOp7)Ojki+1n$NBmx6`Kd>ufpwR)T92 zl;2+G=TBmDyVK)!AszkS<=D>G`C`~t(NUI{$V3mQXAyhvtv`PFDB)$zF^u!tqOyHI zxInMPGE}(gV^W)It#99|hq{6Q@xG~bWhHa^MjQGsN~&g9 zgqWWg4!%!$BlYe*;aVS(cPF{m^QYwNnn2WlP>kmr8mDaX&2XuaWj(*p?)SZDgm}V*P zcj*I*LxH*53w6VU0>#N=lo`p=x%XA`#$oZ^kj_vYS&=Gz|8~W(09N;Tlt#kfB z3_E8_3?Nk%g>#|Kx4hubnA;?SFnXKHzwd4~OTfoBvtz=lJoHYf;u0{cd2 zbMGn!dbIoPQDNi0a8eAq&YlBm0@;Av0u1a*>7wOTXAMYhaTw^3+J=S|8vz}5$6#Ss zLk+XP)j@5qA3jjPIAk2@$!s=X$OsL1NY@x*tM$df{U}|tKWpsp+4iCI=bjTKssvz` zFSD%WI@=c-e~E!l@)6kFzxZtnk7;7`k33%hL*XXV$b~I28xd+Z-3?c$xKs;%1Lx2u zyrXg$E{7a(z_h*MQugjIDt~JD8m{OsX@Z0C+Gw*8C^ok~NDpxA7r2;y{D*nc?&gGV zRefJ(G7x^{VvF_{VpO34YJL@Usj~*hr0c*d^e~I>?f;x7bm~UkFrJy21zAlG|HvXhShq#x>ZN<^EmfO9Ka0}F&_{;q(kjsI8; z7JqC|)*Mvu5CDyX>LmR?mBww1LDuv3A_4NYUdaK&Fd&Q{Asc2m1Co>Kj9qeJ412U1 z364bJRL6BQP@nm8sXr7=v2wN~B7klK{9fCNCUNI{9Nh>=b#h&2ypMD4C)Q;!&qGL`g0KTS5^+0j4C!oeR-Dzv0)@gaHjpRuNUOVsy`B^2lPvmcg64amyB>C=B>z3u6fT5nwwc2~-W%kYq=5_b?JfckUrYZo3dixb%*2O;lPw zE9G7Bo-d9qm<^Wg-A!AH=&un#vFr%mlt7*+jZ?h1bIW-8N#33tMyVPiA7UiED#O_* z)0-wk_{Flt!UyMn^=K)Q6fH)*G?}l{qN%x##^Fb0>n{o9{D_rzXV>%{xR5$2>UY{M zZBtsZPslnfQyW-)5f7VU+vfxc^|O}~h>?fJre+TxJ*F>&gC4FMlqt)|sg2h%Qx3jh zTQ;#WE2W_#N)La^XD+48dt0o4`f~zNL4KR#Q>s|M?w*hL_`)5ad7QSQrn%>OYvi^w zf!loRrxpp}5lEs{RuDQjSP+op0{Z>rR6Wt#{ZVD)%J?N=yxByVY22;zoCq;Zx~?y# zH$bw7jTBms+H&IjU+rTJhqWUTT<^yD433DSil@l3`y$F6VR%~;9z+gHJwl0mm%)~h zGl!bQuKxyWPg9XJ$(3!JMXaKf1FlVvw)$jN`fK?yQhRJDB7XPbJmuMm=A-;4bB;Of zCl9eD{OL7>lSPmrX^-Cw{b4$ejk=sM zyaaHza(P-f^mDIhzDN0;r}A4<0;5UBWZ7SVJO8XzM0DvR_ literal 4451 zcmeHLc~FyQ8h?`z1d&4#K@mZ%s9cL8mz*AW0u@mS31Ad36_lfj$Q8aI*40JgRiO}( z)m22Uhy*YY@+lptB1A0&L?BR#L87D*!jW+F0}TVZnYx|bKX#^nWHOU^lJ9+f&+mBN zoZaQVRdx2F*#H35?b|l*1^|tlcqu6&pHv)5Z2@4e(e}+7_MD`>YkeQyS+%gL!{v2a znEv7AzAc%no<>}>YT3$E5}h$gKeTyXrr&RsW*H>KPTJRalhyjYDeChr8C)|}0Hwz7 z2?c<-4y^(VT!|=6+0i{1)*5EBm_WTD_>PeHhsTk4^dF))SD(w* zopEe>cHGF*#Q;auy3xcAlHnZBtbzNe)u>iqK`}D(=VLRGiqRV z8|qm)g58X99tq0xy=#pE=JPb=4c^)5^@HeHAV*17uumJeWfZ`fG6c=@Z`d800kV7o zbypYe5rS^F=MkG`u+0jgV?#OsI%k#TQ7%(osib| zSw409{k`u-g8tjx%%!q1PZp=+gHw9k07&{#L7pO>QKRzPP_WTd#|_x49!|h~l?=h8 zobKcwW}qxzS(1Au4R#>f^LVR#qMf*FCidmO?BLZuDPQR zbgsw{tlE3LTKqo23k(i>WhcV@PjTFk?q$ zcU>HchKD|WMY4v2V2X2*RnnR8+MY9>%t5rUCN#x~Y8vbyrFn6&L;3m*x*(ZvvE}x- zYgw+efjw^D*sOsU*%suMHHevS_$u8gghZHk+y1&oUw)~iw>o5)=CDj4d9c>>6b9+) zPy%+Pxc6}lYx@iFl{cc!4D6FMPE=s4uryB1t+>5KVFB&$?0z0!GAu5y99A;1Ia^?8 zFZ{OX&Ykkp{DGykQ*grNQkKh!qVA}yNT-2UeBXeFNEfu9yh`%w7UN?yi^BZSD(*cw z+SmR82}QB!JY^FbR*$xSeB0VGwF(m7Z{n;{J;MapQg{kG@@Bx{TJkU3VjeK~F=tSt zh+&O!$~JXKPV>|`ER%Fcl9IpRX(YiVl@T&)@Wz^RjOZI2D@m*fRU&q&=m*tYDAbx10!9A$#myv*<;0 zVQ;KciT!s6*ADKqHu!Z*=-5{-uCBMlBsXVgZF)!=<>4$Bn5l#a5w%>b7uPH^%o42DexBz|7S2X z4Wk9SStvj}&R0Q{ckMHs{#y?v#RzJ5N>A1UU?+d=n07-!7WCRmskSW{g2Fp?ue=3m?;3YTn^laxq*T(0t-4`*Q&5iTr2_Rx5=0s#?s{i z5lLIwbm$Q=zKvqNiW$I*X;mNI0Egt~io3jX~{=&b<&egG# z&aVdGrtUg=RX`9H#A)F4%o%7%TZ>f#!Ru{2jX^gRUcYMMJ*DKZjX^k4BU&z0t1{gH zx_MD6akJu9MulV57x!~a;XIKdH`B>r5x5iC1_!wXpg@^TB#~iQ2p}6uL)uSha6^H+ z@*)-_D&+>dgl4IOq%IsK!fpf8+9P`1VSHItGml5;8!5>DzIjvEG4Ig`1<1I1b}pm0 zwNBc@b6|?CIk)#c(~S3{xc4u_QDY-eV@8Fp_I)E=vp^mr10%3X&_Y-RGAP53KI0hi+9ZJOCE+sE=BeW{k z-+aa#OwGA|hE>Prcj860=-|ChmW?ZC3y@! z@hdLh>A-p5qU22RZ&}vT^ZaO0G8W+UqUJAXM`^*w{0b&mXU8Gks*F^|J+NzYr8U*HPt?FiFh)v2KYV zt4?|icfUfs)z2xsRcCnkUWGVsyqS5xQ>qjAF#LSq2|YlYylRRT$?lC`cnA2e|LxE; a4qi0%pR(1iLjF4eV7rU^=KPJsgx>){Vl7Gl diff --git a/test/constraint/pt_pt_distance/reference.png b/test/constraint/pt_pt_distance/reference.png index 3ddc43bb4ca36adce2ee48fbdc6d81141b271b71..75611b42f5a638756882188ab81db77ddc391a8f 100644 GIT binary patch literal 4535 zcmeHLdsNbC8vZ~qle}eGQ#q7QwdJiejYb7Ei*dYmF%-P8ncC#F%u4YB)nqoN(`;i_ zrj?Ujlw@`Aj$l@{X{l3!si>8TiVmhC6NoHSy0VR1|Li%t=X4I7?;Lo~?|Z)YectzZ zzF&%`J61z|sX72a!}%Mh9RNVR6<;+~`7hPMnH>P=Bsx1e>^hn?%zbgTo&CkhW<>hM zC}f0@-#*Vp+x&jf5WO&i$~-eYHT~X zV0r9KVa}}MO*bpsL2i7{%0R?8XR566?aN#{LqVHB*!zYrbDLv?xKcwl>wXu^* zObgpjrMCP4z><{dB!9rdE66cl29)eJvr|68BsUQdJ*SZ`!8Pky&J=AX>`yZ^9_Vu$ z2gdXIt5zzp`Vu}gRA?ygh|ly;^!@)nJ=}>>F2OYYo=D}vns=3KN{_wc4`HpI;dz3w z&8V%UhT3#iD5AS1xgAN8z3j}vv~h|HV?&st>WQ}DM08y7o8G?@MDQr88I4?9;dHmFm3$p=uISR$^smRd3NP=b3+8HLVVHc=dU zy36pz1id1R<*+CL^#F!&-_P&q-M)|Oe!S#feTHH~>_~Gj_HU*rBn7_arMa{)S}Km? zzKDnEXWe5sH(Tc3XE8)XF3F$-9bD*g&0ePXBV0RG-=nnT#M9iac5&trjMdsAVmuV# z-qRVBzkLh;XM)90ud4%M@>^n!GnX_b?$;UV_xB$N^i7?LgQm|nL6slrN=+z#7GtnK zMS+1Zl<-}|c*=^ArJ@?>6pt$jusisxXz8$ykLY&;RpK%DWG&mXOf#d0V;kR~iSg$b zW7M&`YHIYP-e?LuZ1l;R0rc2FW#fr@w$(60v%BhF19@lYu(!Yw{<8Yz1T2gvfxNP; znM+c}1GDpSfR-{d31TQg&$PgTN3i$W^J-nio(XEtP1e*@m6(^rofM~=`y;B6Q5MrZ zuaGF|AB{WS4Tdb%xZqaYeBakn^6MGd>a*5ZzYZzI=yz$M^mI)C(bwg1a-i~f*clp5 z^@p)mcM(D{w--Z3vgVvZv$b##8k$|NsR3wf` zHMt6(x8to^!KC|STBhAqFnyM$YjJl6Og}0t$v<3_m_Wo#NtlL+Cs;))sZ0-KK!C*} zeAJgvL^mQcxTf4y4yxy2P6AF=)FYCG|UF7r0HyntfJ5zz5{IW;k_>&_SU?KFFuk3^!?Ppum~6B&@`MAj8|p3uvZ z6F|H{v`J`9KelHpu3mwRa~@(t3Z>lA%R0}3s#(&Z9eI!y-}pkPUWuo*iR;bgLl-Nu z+px-Uc0rVjstAy4RbTl~696QOcQmxexK>keatrZc?4L{e`a3~uHy0??^b^EtHmVP3 zGG5!W?5J0B?3QU||Cqgch0pk@R$bY~eB3|Ga!8-k@Yc_MPQ(9E8fas1Hl6_h@emJD zz;@CHwESpQeZWflpmUdSiq0+Ht<+4`^kVMevC*&_zj*Zv56O$U@El%iiTFH*E*#NGz%J8`@>rw;@h7`P_@9TflW00GV3C| zEB)_rx_1oV5zC@pPKXIt7ZMlSmx_Lv811?ZUI_^$GXAZl1 zAP;z#I<&ls24u@68)*-s4RCkWL7E%UAnTSMh<9xEQ-!f97w{1K92gs-Si4~CnoRjB z%ju;m`>Kxk$Fxkpf0MDwcl+o1XQAq z5b3Ln02xJTx%dzYuEE&f%NIu&n|`f*Km`PD-c97X|M;cbIrPPi;oLelri(E8hv0W( z`pHL}BC$jb;L`NG33e4(M+72t#rUSiyxmQ@G6wW=za)mQS2DJ+J%3>#23V;#w%n*N|DN~sMIW8+XDu^p4J&akd2Ob%`&MQ)1SIbwrHuIe z7$00vy6W&mYtmp@PKuS>K%5ojpdwQz#jQ+fyNo2!xYX9TU4J>}FQt6Yz42}PiIkdM r$yI%DZ=5Z~%Dwv$fA$}rG^J`gxpLunZ-xAQ3;@ns-JR|@5|8~88z?+l literal 4518 zcmeHLX;4#X7X1qKVyma?Y*jr~0Kn``8=bZTfb<=|lxM(q*gvE<1E6_elhZn{sEpSwuTM9*=p@u7 zxNTadaqR}~`kZ;2abbGg`#96LiED`$YBYWx++$vL$W!~V$^P8Bj_0*3U43r7AATVK zD=K$}13*}bR0E6L2?%gp#S~C2X=pHK2@`;OC>`LK&OriYE%@}^e-elpzArdS#82zY zuB3Dgyll12mN3GPLiko0zhqPw=axb)ur0j*qFWl#5@DlXXy`1MU80QmQgB0;yPqOy zDcS+n)05aCmslMJKzYU8Po*^!ltqsO%o9_2lW6e=++2eIaljbg?Du5x*a_eTvVO}c-SiTJ zZjU9E^%C`L?q=$zqJ+T$3TZI0tyGa|JjAXl#|S;ZX_C7pYQ6mHYvHL zyHS>T2#*zIk_uar?n14tb2q1AyQ~%~C)b#*&tbF*;`E}x{w*-Lm!BkXO{K<&JI`XP66>;I21%-7UCk4D#D+h!fK*+y*$dKj*+E`!amzZ;;FYk<>SQ$GYIkMk!;4V5erPKdAH>& z>_(y(ywPR)+t4$8hJuDsI?QUj)=kp$Vz%79G_2*BP!6~-BNK}Q9_19ta<4^wCc-T0 z>sWh2?2>6C_J?_-Ql1=^sDss-lYo44X0i-HU3Y#$90>l-kx$rXGqj(#Vsyvkfj*U^ ziX>@#;mnL=m4B}$M~6`stSSU8I8RGOOr8*_JAUkx0+27xn1420;h+NasIjx=-OpmaFu?yRY zh?y|gjt=f@n$Jfs57SkkkuzW>032$l5)tR511vLS_~S-u;CT%kQ8AY3XA;v7Kheeo zj$jrnap3sx?lLg+K&2t92A*G%b|zM-hG&if>iIm*fYK!dRSB|U`Yl|2lPf8f0n1#9 z61`}#G4wK6SH-M!H*-u#v)Fp1rQ7azjC6w$f}pRM=}p|=;!VuOfm-?sB)ur`^s1bm z!nl*BpxZToFx%!(V@;>ohF{U3%9@LUQ0^>{qtTjY%}jMw`F^(MGNRnB6i|Z}tYjKq zsj81mkA1M4mx=%`)**yb)%B`Cwurfg5Q+xj%cIXBXrzc-Z%~V&k+zQiT7*A~aBPP$ zU9LidWPCiRtsL}Zs>?hF+Eop0y5mZKfVMBWBxpx@ z6Jaucn(K>!xt(LgG}o@k!~)B-AT(cs>Jd8i)Lq#R>EXv>!>b1?%e_N2&hqw21e(BH z--KCQ7HKEui|xxK*1TNrTCK4PWM;P&)9^M4!PdqtF(i);C{g)-JQ~Ts1E0H1uy^U8e3T;b4(K}mHajsFD1W@ zZj~PVjm_#Shr*5uvlwPvL{wdLdQcW-OePeC4VU`xo1r&r<>{`e`)aD}*R;~(-f{ed2e; zY;w*eDMlZJc0yH6Jlo?8hr)>qOv~MEMd2Mcd){qlWk*_2vr%lr<))B8h3*ShQ}hYx7MZWeiWnfiTC%^9RYifI2r)Tk zXZ!HX9G4eGGB2^)i#JE2q7E8h6619B)m@iXMU^Piz1(?#x*@N^`JL%TtQEg$u3b!i z_8M{Uo~JTChOBr%3hEG5joXSCD8b{kV3}G9@k|K>+E${*ZJyw3X82G2d@-t4z5}C` UcvrO@{{8|sIeR)4tS7|(3x&oyh5!Hn diff --git a/test/constraint/same_orientation/normal.png b/test/constraint/same_orientation/normal.png index b4a7a1c076ccca12141a9a689b3f37b43e6b8fa2..7bcd4c59ea0425d118cf4ed2a1cd73861fdbc00a 100644 GIT binary patch delta 1973 zcmX|?30#ud7QinbkPGHgiBnnP)-svsGuKkoOzLGd^J>gJrpccb(lSIYNFSPJ%PSu- zX<1@Z>5QpCD%6K;(Si;z5BbryPSLP`Tfs1_uliyWy0k@ zZrdoEBEoj0UwPL%b5`BDuw`JNX-mSAO%7r80U!1U-A{DS__;d2>9)1^{(KS_zZd{-*$y%Qv^D%NtP4-(&F5NJ^9mOGiO9)21zKg{ zYwa!yb8=!lK`~jP`CpykSGl*WQzfVd4vn(!9t?0iC#80Bnu*Rl9?6A!Y=JbE)N%Wo z@dN?^^Z79Vd=C)-DRsYw;$sH5w)6Sl;=bbh;-x&9L+vAs01M|(r|NXSO{G*MVUT4I z;eE!LRXjYh6(UG%W5F;<)L)o!fH8S{iMYEEqB&*bRh}>3KCZdA8zZ`eB{BsXx zv}~_KIIT&{h8HsIArTMB@xLRPBYgHXj)u*~SHC;64AnTFm7RPqul8fgJe0ztyT&*D z@d5(Z48{=~(tb>Sfk&3if=1CWAlJeJaJ|rj;xW}&M+^V9Nv^XV4Wot883w;o%fN0N zak$P@FBwwrkXnJQRi2`TeB0$eoW_Tqwjd7EGVurzBHTg=t#0gXiJ~>-QM*=ltpbvH zF^7(?BmyUAQU4#+D=!S$1Gc#be770J7)RHdU)TLHYRQ%2h#<7P=q(*3|2dsp{_{CWS!W$)eo_k$?#Ob4taKz9K)n{1;lvIR3 z0o;AW20t`pCeGpK2H(=km%iKcTTwmhD}$4 z;S-*W>5;nEQz~t7k+P7Xop~qKkw38HbjjFc!}zhcQ|&WfYsq*0pUjD-`mg^y6j*a$ zPBfh{4adtA6=G$1MORvwY$~ZT*_5IFtS@aWw#m4h#NkY=Al>}czcI^TpJCB!`k}9< z_n<&vDy}!0m5fYOTdYcVhX{kze995pe*DAJN98zTf=^jckz7bk(Zr!LAsUg~OL3UK zatvu>0;c*q(*kFNmTCbVoDK8E)#3b)wo7X-6Ff2eMhiPW$zGKDtD-3$637_6$4C(c%hr9JUFERt@R`}b6tOMJd& zP?Odlx?%imBeqgJ;6mR|fupXqLR{0RQ%v<-huG?Ac#p+uFxc`{_S2s6)Jo({Qq@ z-umX!QY>i53B%IY6&-f30{zc%$~M&3h}iwo(f{nxD3m9lf- z&_F`A_^I?=L;Otd^=es$pEyS_VYEDQO@U;-QqG---g7Da)ntneh@%IaDOqb6mm(9X z7f9U32}&daC!zjiW_6FSR`eRAZ0|bOW&J-|Lzwgr!QZCQIf{1XuS*uu&1s>IajL|%y|n&4 zb@$`R5)^Ft`^B!Z5XW{s`gt^toY?ZtxPs75|LKkn^e4~07cb3m{$Wd3p2GP{=JX^Q Y$r0TbeHIJfm;^=9K-#x!`fA@a(yWe;3N4K|b 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 literal 4358 zcmeHLdo(mmOkNiu4WrXZI$m8JCd4^c zR170|oa6cHadWy}6^4u%WO>vtCLAWlnET^knL4U?0wL%v5{QIsuSxIBfCNiO}>RwySS1bIqlmhot0d zK0#|SXOC?4T+6mB$}Tch(<^X&a!qhJn)f;kXwYHs^ON-nyOUc5z~#yOa0~$V z6p&ZDqNTw`YZ3}vl+*%LT+|96uUQDd12H9FMuX5m0{b6YBsgs}R&MXZ5(=ku{7h$d z4BV?8&-bIigsv%OWMWkxzAa8EnE`rBGXGUPYs}xd9pxuu{88ug|Sm8>f!72@sM1Ogw%g#ad7cIFb9Q8 z&4Dk89Q+J|f^aMVI$z#juE4Qw#EKB$e|d2qCCZ~k4p{$vA%SDw7~H$#kUQw2WlD%3-BjN>&7u4Y4>ab(=-YvC=3b@8`-_t zMIAa$E_d5|04Y~`%wqNyQMIJhb0qsniFzWX-oSE2#N_O-ZT==M>LB6Nh2_|(Tw8vY z3%cbOGckp(yR8mr*A_C{-x^f=xh(H(FGYgQ@+$Y05RruB+>Q#p5h8zPR6g0mizAty z(6$olT>$2X+VS{q0m1@(iv=bYRztgAuLPRoS>c$j(c14%3TJ+agCxT!p!oVrrJm7& zV|AGkt0c}pf-#}q2+DJ2Kd-Znuhg@Z$lYOC{ZN^KDWfdPus9s)Wl4- zDzHIZ<>GX1$}fse{u*;SZ1$8fWmHTZ*jfmNp*_+WX%M<`C_%6GV2#P$laYes?)S$O z@Q{9lDz_q`i?e&R(_3RPB?v?FydUV8>+NSS7E+TN$r^==!fKI9)n#jA@zBpzRWkbRDM~b_`(uiD;F@DkE%O2r ziVkLW10f1%>&Mz(b$>srS%Hg;d0(&Q^8-uMgMEy20km(P{vgxgY5{=f{+ldP18C=F} zIklA@$AHeHd7XXiIx5qd`@X?^@a09Vq=xwr>bzEn*x#pJacQ46g(eeOHZs89c3#Gm zqo3&c=e=+FAJP8)5+ChbYeX87PxmQHJH-EkVU{KTLtuC_i6(P70N^SHq>+;weSpv3 zWk%BkGcCNz*c;ifeBZd__JH(A`DE4|6c~OoFSot8NpauS_nTr-i8+U}wgi z57rStK~sJTSF}L4OKE;zu^`H>b)p-2V~-j_Tb#lycjvS{Cb|ReJBko-`BrkCGjzcgs{ z%aCMZaSdqdm(znBh~jLO=yApD1!(tfB+J?KK@8cJEXaqmJz3iorLzTXq$6 zUrDO=MRCG8Q0lKMEigckfy82=1pL=FA;;H{2A8qF4T^XMGA*xB$nidBL;<9o15$Jz z_NEm!o1B!BMOG6C!mToddF1Sgr<2ZSg$8Iy6>^f-mlfpL;}jVVBzZS+ zrmi}XYI;Qrn_!$d4SvYAl%?~Y1-Yw?o8*e2V*e&oM$Ibn^l1Y)oNN9ntE*zQ`9Z(2 zDw(2#9F^%mwor;|nwVkyb`w6WDS|s_(iL9AwJJMPQ#9<*W-wJrDJ|7s*=@=9iVv=u zfvtoMR}(5c8p8KwG@0~wxEYKFv^9pnTuNV<;pjjLo|hNtP<^j9E7B&Ozab-J{?@3> zQ|dWWaO5?|_L8;jhPp91C~gW3ud7aeIhdAW@-PquY~9~5?w>Pq)Q1T>E92-^{BXYV z&R6k;Rs+J}zz9aLDWQhE9%MW)K*Ptj+|W(+9XI)*;9F*PZKuGv6Q1UscRpC{*nN9= zK%M$yEMFI|P9fH3-C9+a(X`DAgi7^_Gq)zh(wqJ|yd(VQKH}@ibizfjN55A40fAT% zH!)~?F_X=-s*HRN8+JLu0vF4)9Lhwy=~UoPzgDvUFfxsKnl<7iIKj2*8Cew?>bss1 zT_Y_U?Uv|PO}I!j%sB<1?c*GcX{|%mI!q%)BOcx~n8SUPI-YMjHWdRuu5U`1?JOAi zs>mhy3+YC3av2P|z2>^Mliw_Np;+Q_A2IQN{l@`+7ySWg|6WITFXaCQIDEjyqF_Ji G!ao4XEbr0) diff --git a/test/constraint/symmetric/free_in_3d.png b/test/constraint/symmetric/free_in_3d.png index 0ebaf5a199a7f6dbef185da769c72a180cec3d97..58c2ecc2fff5fa2427a8f6192802cb3b8bd5dc32 100644 GIT binary patch literal 4378 zcmeHLX;f2J9=}NltLzv+6s#T8QG@`pjDVpOM2o0^WkT3uWwC;yZNnCp1ausz5-S}9 zMZ{7?g#a?fU^MV33aDifAwiS`ijru6AP|tyKpzNbTuzyDW+FZbmB@BjX` z_tJK3b5~bgq6z>|-?G`&8vrDJ`lGA}->D4Cehh$C_ZHXBcE;xRcfL6IsNS%)`}VQZ z2Tb<&umx~f~BH?*2*#feo?>x=j{K{q&|;_IfCnq(D7j| zEg<=K_r~x2wB~jPyVbNN|K(FnU)ZL zpY*xhZfqHRoV605Xz6}vf6lnx>+wq9wDQ~pUw!;08G!P)&Nc#D@{>c@0{bMaE8i&w zLeF>0;BcOM0&w(}!iO5(Op7bwA)uA>E487syl?=!dam-LMZ%1n1)hoYidmZji1+!f zQ%mlYJ?RWayeCCSV~qCw&5 z1=`6Y$|qtUou>ex&2vqD7j3d^!SiJxa>X1R@qt7`2@0fI%~lRoqz_~-5ViRx_q^Gt zd^@&Q7(9Z%XjJVJ3(oK-M#}?1?g^FG z@_GO%;zvj@R+Bei;UMbD!85yVJ#?|ew(Ay^BGCZp;==UjiPW@rWxdz? zS^*%#lAt^u#71;s6)?{Av{8rhLztzTXUftVDUji=QigT#zyaHk@~ti&x+1%|fhUzv zWiR>3>1OsORP;zs>15@^OKH}*=9FPrFfE9u&;l#Cs1w%7qeaq_rd5*#HuR`Ok+^EI zzhk(iqr5+Xe>P72c2Z=VCQh2SFEmkfHdK}p@%cU?={rk>^nhe~o7I#?$@ftf{D#7S z3xCHAB=s6im8l{1L4~~UiRwXP@wP5tZ2)yAd zR!^uR>->|e^H!u{W>1xf2y8UPCx;MGauZu7syLP8dDsDAuc>Qh(BA*#?qAfpY+&dN zSTU^F$k=66bSj~$WGemgGj2#adJqYtWyCiCF}MM~7~bO&nvO2RQPHRlE4Gdwn9#;! zkJFioof{R}PeLhFN8N2J)QC6|)ut)5P!Y6e&hkaNYe?O(NXYtR&J$iol;F#Dpzn#G zEqQ99m&*^jsZYs#+v2KKwobkHR*9NP$U5;rbkh=iY`Q7tJ@zG)W4IZ28hI2(936oH?TRw%p$eoICBRZ z0Oifbyk^bJs4l;^Q`l=3Pcx?2wk+YE4Z!AiKm^PWXt1bo5_1l&b+jC&3th9Ab2rEl zK*kx`Fmq7TU%O_)iD}9Xam+~Ef8ix8-;XZ4HX}D77RnkSpWF8AtE%sY!95*?HqHqXJ zRFaXW{{=6mm#K2T#UxF8S|V#LliG*(t!7Ke;@i!fM+w}|M(_HknxwIqqhou{h`6J| z-NrH=Cy~eM93wL$apeQ<+=tRiCxU-2YVc}M5|7z+xC=%ScBJNI%v0vI`3?E}sly*ih@8^MNtC0910xucl z?bOGIza*s7H7%TK$Oy2iWsFM<+>XhR)*lwt$44b|OS_%gv`2a4xQRS5W1v7%#6fiF z!SEBiwRjag^J5}N7FT)XhBk3ckbpl-+BY6XrC;VJ16GTeOJqw(mZf=Cj^vHWTTswn zM~v{|xX=)%bQZ1eX-;A5aJK&;pl4sZ?w9b+8^=bUS1Frxay%Sy&&nIaIjl~Ps0UZw zOJ($?8nXD&zjeeoV53^vRv2%7nERl+n@tMPm@>Ctnz1e8#eQwyOWAn{aAYU>`$4bc z31P)d)96t=j>K!abxK0V4N22Pwe@0}gdQcM(T(88;sP`K5-(#e0{VK!ErL_!!{dh@ i58vkafA1~Agwoo9h=Lbv>tXnv2iW4a&9%gZnDPgg(dEJb literal 4360 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 Tfl-k9lLiP`9UfF3h|l;Jq=4R4 diff --git a/test/constraint/symmetric_horiz/normal.png b/test/constraint/symmetric_horiz/normal.png index 009a0106b2009a210fb10145c86f4296a16460f6..d497e0f9c92c90575f962909c72011949f8a1c06 100644 GIT binary patch literal 4362 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 Tfl-k9lLiP`9UfF3h|l;Jq=4R4 diff --git a/test/constraint/symmetric_line/normal.png b/test/constraint/symmetric_line/normal.png index 972da941b47e17a4c23909efb8dec67aea6324ce..adce4f4f3edccd6aa8a8e8f9445cb577a9774853 100644 GIT binary patch literal 4431 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 literal 4413 zcmeHLc{tShAOFlHM?#jA(8ZQ(s2r6$l1EvgjC)kHIikcGH4K%0Nl9(4mi*SH#4zz2 zWHDc|Mbfa{BW zxb?+f`TIre#KU9dl823?S-#}ektur-E4D}nXB&oEdwP2VP&Rp>2mn$IzcL`Hg<^oH z0tJ9lv?MTygOGq<9G=t_DFoK-!y~|Xfxqb@=ciY7=wy{jntm~BxJUn#&O~0w+=GYB zj`3nU`Z?aJVhp@3bj_)gZHjm=9A$=7BsI3(L zTvZM9-#!e&fLrsuIkXD5hYO(Oxs|JB{;cG_#O`!H$+pP?o%?GDyBD=mlgeOpn*b15 zhW=cetD^{+&Im|hex_HLm;?GiZS&m9Bhx!0;+F`Q@dwJUlt7U6>1NSI*xFB~QiH?* z*r+~R%7FHpPO&OT;fJSlOH-NNWD(BXoFrlbz83 z+B;X|kBP7l9?thyfs1VRV^(oUog(POHK8l-$pNV!&Ckye=LC*7Y+(hQl>WRhzgv9T zKLja-`&5xvgTOd}PZ5rbi-BQSv}LEyJOXBRm&!=^A*Z8@+``c0CTMaeJY9sqz&=Vc z75-R1-Z#bb{Ff5Q6~zrU6qVPn#DnStC@kdRD!Wu$;I*F88pbX^bzGEW8W_FH(f4?S zJO$Lk6;#!Z+H%rglhk$7?kD=P-BEP zzZRO8L?N3CHn*)@59aysOx`FUZ|WE)<_#v5mf9^3bW~=rDy|%$#nm7j@W0@IJ+%yP zt1t~g1zdZamCWUVWd^I~01d0)=K;c2Pypb-%wOjju|Nz+!O#3Sfa<=~LshhI1P1i_l=_CQ56>X#PsOW!e8_j&BLU=8`gyh1(g?#T?FZ zLEx1_F~=A_Jv@_F!=77zL*jGNsBe9Q-}mWcTId&l;|zQ+2}n)`_!zlGV4y=tAq%f~ zOL&BSF1eP-!Iy zD3fI3+)Mn#anJ*lB407PZ?(5@=qE5&&ohy31v`&5CG~-!oq|N_$YLJ zQbctd$Xd*ik$VUbaQH6^=*$s>t2V|bd+^WEae?{5XBQ7tWt1ZdpzaH2xQW>T$hR9S z7NHFA*h;HYwd0TnxwizCo34+;2e8nsB*1CSEq77_ZRodH)OU(Bc~8m!2m zLqmKu01D--#*u}k?dbjvL?C5N3w>38Et)gcY+@v&D%DHhHHd*Vg}CgH=c7Fgc9Gd8 z5ShY*JiN=xJ*u_~fgp`NcsaQcgjk_4X z9PiP~4G#9HXbU;*lBQv!7yGKk6lkB!fa<&JI||Kt{fs*_0_-VC@7aQlah*gjS%0_;6?moW(2z2o;Jn%-PTDt<4wvGsrn>q_kPl%!oEcg%19D!JPM%TDC0 zvvpoGx%Z`$eM=GdC%xP=E`9@k4opJ-*(RoHUGPzwToawa>T53kZ3hss7s;t&_eEuK zwH%83qlx{Tzq?;TB{+3MvyCbxXsP<)HklQd1ICY(mbhp|E@5H_t?T_u&%Z@Sax1tkabG2-hishH{@7Y>! z%QFca$aa1+Wi~J|_N@3h^Y@1Bea%N`!^HfNLS4molPJrSK}W95=$*m9osBwqxuaDB z82Bh%q1h~7swnYd8)&`effZ{Ox=xSeblU@W-iZFtlsM~3^liE6V8N>m zev~?*`82F;O-FzX(3v^QzSWqExPR;2fiFa53J)O*5pSqJG|! D0MGxo diff --git a/test/constraint/symmetric_vert/normal.png b/test/constraint/symmetric_vert/normal.png index 0ebaf5a199a7f6dbef185da769c72a180cec3d97..58c2ecc2fff5fa2427a8f6192802cb3b8bd5dc32 100644 GIT binary patch literal 4378 zcmeHLX;f2J9=}NltLzv+6s#T8QG@`pjDVpOM2o0^WkT3uWwC;yZNnCp1ausz5-S}9 zMZ{7?g#a?fU^MV33aDifAwiS`ijru6AP|tyKpzNbTuzyDW+FZbmB@BjX` z_tJK3b5~bgq6z>|-?G`&8vrDJ`lGA}->D4Cehh$C_ZHXBcE;xRcfL6IsNS%)`}VQZ z2Tb<&umx~f~BH?*2*#feo?>x=j{K{q&|;_IfCnq(D7j| zEg<=K_r~x2wB~jPyVbNN|K(FnU)ZL zpY*xhZfqHRoV605Xz6}vf6lnx>+wq9wDQ~pUw!;08G!P)&Nc#D@{>c@0{bMaE8i&w zLeF>0;BcOM0&w(}!iO5(Op7bwA)uA>E487syl?=!dam-LMZ%1n1)hoYidmZji1+!f zQ%mlYJ?RWayeCCSV~qCw&5 z1=`6Y$|qtUou>ex&2vqD7j3d^!SiJxa>X1R@qt7`2@0fI%~lRoqz_~-5ViRx_q^Gt zd^@&Q7(9Z%XjJVJ3(oK-M#}?1?g^FG z@_GO%;zvj@R+Bei;UMbD!85yVJ#?|ew(Ay^BGCZp;==UjiPW@rWxdz? zS^*%#lAt^u#71;s6)?{Av{8rhLztzTXUftVDUji=QigT#zyaHk@~ti&x+1%|fhUzv zWiR>3>1OsORP;zs>15@^OKH}*=9FPrFfE9u&;l#Cs1w%7qeaq_rd5*#HuR`Ok+^EI zzhk(iqr5+Xe>P72c2Z=VCQh2SFEmkfHdK}p@%cU?={rk>^nhe~o7I#?$@ftf{D#7S z3xCHAB=s6im8l{1L4~~UiRwXP@wP5tZ2)yAd zR!^uR>->|e^H!u{W>1xf2y8UPCx;MGauZu7syLP8dDsDAuc>Qh(BA*#?qAfpY+&dN zSTU^F$k=66bSj~$WGemgGj2#adJqYtWyCiCF}MM~7~bO&nvO2RQPHRlE4Gdwn9#;! zkJFioof{R}PeLhFN8N2J)QC6|)ut)5P!Y6e&hkaNYe?O(NXYtR&J$iol;F#Dpzn#G zEqQ99m&*^jsZYs#+v2KKwobkHR*9NP$U5;rbkh=iY`Q7tJ@zG)W4IZ28hI2(936oH?TRw%p$eoICBRZ z0Oifbyk^bJs4l;^Q`l=3Pcx?2wk+YE4Z!AiKm^PWXt1bo5_1l&b+jC&3th9Ab2rEl zK*kx`Fmq7TU%O_)iD}9Xam+~Ef8ix8-;XZ4HX}D77RnkSpWF8AtE%sY!95*?HqHqXJ zRFaXW{{=6mm#K2T#UxF8S|V#LliG*(t!7Ke;@i!fM+w}|M(_HknxwIqqhou{h`6J| z-NrH=Cy~eM93wL$apeQ<+=tRiCxU-2YVc}M5|7z+xC=%ScBJNI%v0vI`3?E}sly*ih@8^MNtC0910xucl z?bOGIza*s7H7%TK$Oy2iWsFM<+>XhR)*lwt$44b|OS_%gv`2a4xQRS5W1v7%#6fiF z!SEBiwRjag^J5}N7FT)XhBk3ckbpl-+BY6XrC;VJ16GTeOJqw(mZf=Cj^vHWTTswn zM~v{|xX=)%bQZ1eX-;A5aJK&;pl4sZ?w9b+8^=bUS1Frxay%Sy&&nIaIjl~Ps0UZw zOJ($?8nXD&zjeeoV53^vRv2%7nERl+n@tMPm@>Ctnz1e8#eQwyOWAn{aAYU>`$4bc z31P)d)96t=j>K!abxK0V4N22Pwe@0}gdQcM(T(88;sP`K5-(#e0{VK!ErL_!!{dh@ i58vkafA1~Agwoo9h=Lbv>tXnv2iW4a&9%gZnDPgg(dEJb literal 4360 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 literal 4240 zcmeHLeK?fq9)4z+5YuYqtAy1RPU~xvWn)b%RtY7W24M> z`bI^ZW6r|B&MAIHm6#ekWA@17ya3xMjC0_Ae!$*fRb9S&b9}9(%d&O#nB&pLHuS5) zQwrOPii}0sssN&<)>2!89Pl&&46=F&0uOP~2L){Ywz#69sQ>&Wg_kak757#N&k=m- zd!j>A0a!~agNoMz!1j~sr9eNMFBw=5o|!Bnj}F4ep%#06YRt-N|4qixj>5ouvMRZsi4$;x@b3v zD-4`JoVJv1dt)Yt_p%X0-_?tnRBT1ZTRYkTDARL6Zfs~*9S^^hz-45H(#pJ;=2nCd(LCXAu{}6ReAZ4V`r0l@b+6F1VJsWDuUqOIThj0>1x}v4y_cV zK{Ck-!7|1xy6}>^7M#d(xTPq>9;KeXY2cjEZqx=yZ6>N_Wuq$w*3;kP#rC3JK{t17 zCLvhmzdj~@lN?F9p`DWj!BuS;aHj&8@s0y9>b?}+kD##j50wS;;8v)@6b9>c7p60z z0rs=s0B~Q>f5^eJisY^xWdF9VY(tB;{EVu=sHjM4H19G1lrw5?@c(MHD2_B(hZynU zB2DIfj)(9Y4*zKdaQJ><5%=II(&=VD^P@$l`aMXXZrTHbURs81x{pVbC5#3GZ|*B> zpEq$c`gFt%0esszh4KtrK-sAI3gYHn*ytjGGJrhWO_Z09CvuY%2mk#DAZ}RT8^*x2 z6UzU#WZk=S88rO-dhKrvM)4#b;n5BG1ctqsK;ltKk`j3nGe&i($njdUF~P!sV*!8G zs9$}_pXt#XfgvVRvGtJ%1y;Q5#G*$0&%`L#A$C^oTF|w_^aXwNPS@K%FMK_ZEghY} zQ%1?gpR^UY_ZG3~m6rS;k)cr+9VlJ_h>vou;(C^vF2RJQ!aqu z&nL3Q9`{`lKB&-=g>g#Oj0hd25Z4{%E0j1>*iP!c+ zrg*k2{X{`ye=dLQ|7n~~=&3v~5Q0gY;pW$Uk>VUIH&O=8AElW*rPm6ZT z>+C61FIF@2cCTcGo8Jaq;`_GMTVX90K(CfOfHdgwOSAA*zQ>aQM-DK_X1CFs6uPLRgFe1JWSq*aO4X@(0_}A?8g_E)+_?PL=R0lcFWgeS*62AyJ#S z3UxPJdLf>}Y!pZa1#SN}AgV-LA0JDRw&u;mjwcB=U=79iq2xwtYiXY-CU>}*octuY zO(e}iONwMANfBg1YMw!zp#XQfcBJ3uM2DV4r#mXfYoNqzdx2TglNpt+FXBn@r)bw7 zN}oTlW$A)Alh9No|4CT)KBLMwegC|{;ZeJ!f~_^qjxt=QD4)-+Na1Y-IW<^ienjTj z&E~N}A(5#akjH*HAn7g?8BH?BlgglA-Y^Pm*Oy@F&QnZE#BP1V&+|CfU|nmt$l@j^ z+tMMoj{W1KzxWPRHp$PED_LC28ut$7x$$Ql)!`2QE+^D~l5>ZP6=!rh a2Nqyp{vZ{5dRqRc0qk`1b}ezir2Q9?bD44g diff --git a/test/constraint/where_dragged/free_in_3d.png b/test/constraint/where_dragged/free_in_3d.png index cc92f24301e6d6c7fe83ead446d4a5ee7f4af639..7ee4884d2052ce8d658088ff381281a3e7c51422 100644 GIT binary patch literal 4257 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 Y;0?!2ukJTS=2KvkgX_i;dveOZ0F?gcXaE2J literal 4789 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 diff --git a/test/request/cubic_periodic/normal.png b/test/request/cubic_periodic/normal.png index 76defb2f3f5114bcbb0311de671c8a7f0a1cbce0..c113d921a67037f6f6445cfcec9d0e5d4de5cbd9 100644 GIT binary patch delta 3453 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 delta 3389 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 b(`$&%UT;yLuHIkpngd*%JRHmHA^Lv-kc>+0 diff --git a/test/request/datum_point/normal.png b/test/request/datum_point/normal.png index 9d2eef7705883bbf7fb43986c76e9a44d1ec3f4b..6184e0c940ba05ac08a763c92ef2984ef54a5681 100644 GIT binary patch literal 4205 zcmeHLYfw|^8UB(G4N|&XDxk&<#TIr8tO+2Ol@PTGa@~5#5}-h&E+8xri{X9=7uRM- zph&NCL(LELDU+P(rwxq$dbFn{B0RXLi~j{y68GIp>`@ z-}k=H`#jHkn7{M$&|kN49RNVzbMNl`03a!v3$q4((iqNq0)T;o=kA>clZwX0hhm4^ zO^$c9?A-dHcNA@3Zo#>2r=EM{6TWPz`(U9vpX|EUJUg#A%u^PgnSAcq)$&+0*wN1C zIst&+l!XQcmK*@?=$L>VEC>lO#_)#@A@zW{4;2A&b!`9x{}ToERoB^9NB7n#<-+_Y znJWK|h;(Vtz`UToQBkS>ZLDnzce+UUly)-pW~?(dFCzb%^oyX}|G2s4uBq@W2r8`F zq;&|+Rn_ZuEC9QF-g??0icq#0j9DxPP(rC26ew`kuIWu$poT&jYn2J1VnqTTit6Ai z)Yr;h-+pqv%ol+6dpd7RF+PtzECnLZT{_;O1491P&7zEQv8FZfNppRnq&hu@_cF0)_|~k2 zU$4bJi)1W!)W=)LeG48o!*szC3gmwyd`Al!CgQ+sF1`f%o+Xlb$KsHKgk_Fck<=Av z0k^JrBN*Ikxm0$Rf6r!nEuvaM3)-VafqvG@EV&pMR6Z);=`w;d{CmA;EW!KsOO&~y zlED0087(S9fV{)mXoJbysVL|O#)k3df_dYBU3z|hS!6j(N}2k&2`w0@Hwdl;&|;8! z&h`9>yqS#ju&rukX=}FBkODcYwn-9k0|R!y2&8R>BiFLRn`&*y^k^4(VrVZvW=?^t zJOYc0dR8$|#fv428s*B2=LCn;emOQn;Ua3A7w{j<>kGe-KpS6#VH|E{R`%AZbgTR` zm9w#p&*&+N$&m=eK40D|X-g-Dwv+EoX*!Rwp<<;;2jUJ`M+%PB!)iI4khzJ*DKKFL zHqmu$82AI$kjMe(Fs;8Tm*2)9EQcuQTW)iM!v2YV}1jRCMH z{Ahe=62>^nN<(!HPkTDV??0Ds>IrDxSv#gwiA&S!Mr7^LPyllrdL zN4US#!vEV%6C*h$sO<<^%UyYs#at%@z#IQ}-TDp;|F>Z1Qy`@R9s*DkgnAXfIgJL` z(Lxx0G;=KsYAEyHH7LEdUYwTxjkok8z+f)5-OBd6Vk<{bJN^g&k0mXEoP8RzBDMuP zt>EW55@^y^2%y{)RJ3Tf3BVVtf^seNfb#>mVe3eo^2hJH0?4q#5T*}f&F#=4U|+FA zaO2%vJwOdxmW{W~2z{)qXA!1IVC5K2okMg1hbYmtn&$dm#^7Cr3RrvPu6Mc<`a9kb|mnziw2TD`ig zA%k#lJvb@lPUO(L6VGHW3>{@`w^GLIy%f+<(RXkL`k?489d+I7Fan&onLs5oZGgGo zo5hRDGYSAZ{seJ_Qwj3``hCZGN}SbRobNfeOAh0~f0$^=zu>C&7kZ6fk>46qeT;;P zvx?Kt`1PnnG{C0Ia3XeR^3)C9LYj2E zk;MIM;XIws?T`$QcRl_)mSH9Ki?5Il^HneS{qp3_isVN_$x|+ui5G~MXZq(#lzsjs zrNmJFJ#MIyH(5-SDL;0}Bf3uf{KQZ{dxT4n+1}|-b1X~UzQK+-7f_N3N*szt~vff5w2FoR@@dK2903&;r4U~ zutx&oP@^>u=U)&KN$+_St6N)YhcBV0M>A9ivj;b;n^Gp|1QPMHr0F!(nKcY=GbfJQ zHtXe1+uv4~OkVo3`*? Y1<6ABkAArs{2Kvy?(y4QwTqhlPY<7wBme*a literal 4187 zcmchbe>BwT9>b49II zD0GfZ8wQad4Ku!FPf|+qbB&p?XB0IV)-+@=?w8D*8P;U?oO}Op=A7p|&-gs=&*$@c zf1XL$wZk2?*laNX0Oj$m>mC3!@Kb*}+VBcHD6I4_M&{2yk9^9iU@kwSb{bF#r!WO~CdvNCW7g|3{l9NKRtrehO!DQkqqfJ^7>9 zhc9ibU`rU(7~$k))+>B_miSAHq)>x))WzE0`eA?aT$?k&_?mvaUX_SnqaKkY!XrTqfsNetvLBS2#A8|F$C zEf40A26&nP!r@ewl_eJ7+eMbZ!dkuoA3#_pL4uTx4?gAss?HFlEihFC3r-sgN!aAo zj#3G{V~=41Skakrr;Oo{?bqg&UK}R`!r<~)= zU>%hjOU>)7azFqK8m+RdNC6rTIkuHWF9H`8=h{BQyG;P-C%J%_qFkq-1(vXBU3u65 zF!h>K9Q#^%EL}iPPgAKGM(;zq6m2iOh&Hof=b{gU{pn;0kF55srZ_$V zoT|36{uTg;e}yQ3;LmCM&R0Q&DXC^?qCe{Ay#ZFLvQe(ST1SbAEi0tl)&`C#x+dEn z4~S4;Cyea#)h*eNjeG}Pry)nbc}?nYk1jOAgVmU4ab%bWC&zl9{oYiR-SKo%wx*;z zO49_BRP$&|B&euZ^1aESi;%_#M6OSWEu1x5qD+)8t+1_;u{KYcN_LHGtgM|uatdej zleb+6+Tfm5TjWA?hkfUOPt9+gFU;{sza_CY)BtiB<7}L;m5*g#r_wV0SzY7ntn%(S zoSFEr46(j1LU(PYQLI*Cpe6M!g{1W?LzJq!uKPZVg>vlh)Wb2lnVKfs)9x5|Q_Miz zFUGrCNBz!&lu%E@$W>G6>$28VQ-<&csRr4PvjYV}Y-UO%v9`xNa^Gxfsi|vmXL)M# zVil%-8nwzjD$#0VmS>uQZrlt5OfS|u4E{X3Mb+^Cbs5F>w(+0jit^YY)GG+1IBf<{ z`V8tZ`YF`z-LtJs&4|)K=J@Vd`v)DP)_;}24SS8SGn@qI_A{MDu(07nIkUN~W@buj zFE6{XUv3)H8_Pd!HcI6&r&}RM96Q#1^K3{d3}Mb>fGMJow=xujoZ7emvMLRM@BqRf zbM7F(^CKV4jvktJ8ktO*ZRV=fR1Roy(Q1k`Zt?~q{%&Y13M~8<{+wx{lcvb#{ey%w@T1Bv6%^l}@@gMaj zv-2QTB%aK`$Y)BLiCFK};chs| zgBCE{F-xZiKV7N`E6Uol-C-ITDH)b>qbmN%i3Vt>R1ZO4y(Ne+if955+T6Z4FZWUb znZ`pi z5=lu=o)qna_LYt7yrKmJeR>7Dt9KA-(NA|BLqOu|#JDh+^Z;`qfNSnp$I$f2)w#-& zq1J=$`#3Ya!^^;BPB?!-NKYO7(7C>;`1KKz76>%NBQa$f^bMq_Ylv7$4~_u{+cbn8 z>Anc4vf8T_ZFB%&wqS=u^_8o1fS^jGDfHlb_#b+J+9~Zd>1GMF+kV1YnSs6tE|g~k zYqzG*67OxT2jbBmKaB82t|su~te8iNa*6?j^^L~(fz{t;dtD9o%19~z-W=-ak zZwmp z#-VZK;7vBfd`MoC#HPJ5&e8*wm+uCglZ2NH7EtdGZYgo$@HusZ=^~x6cjNq+=Z(H2 zJgJ`$gy=Rd#bved0PhqtJO@k08}E&^*n%$#hf3+uVAmGt(E3}O1Dvgm=dFU$_> zd^Ga?Y1t3jbWc-&pq@m_}X#T$*+3#xpamz|3!rX3ye>4Cd-|TQL{3jvqzc=%b%m4rY diff --git a/test/request/line_segment/normal.png b/test/request/line_segment/normal.png index 69711fa2e62145abfff49fffa5316b47018ff774..a7b1c341a730deb665021f7bc262b0c9ddd0e48d 100644 GIT binary patch literal 4246 zcmeHLc~FyA0)K>?$RVtNngZ6!+A5NAugal9ks5Rr3E_@%%N3LW8jggex>^d0ju06m zV^J&+2q*y>Ncd0(umqw4Ndc2^XoExo%7zFS*+j)Dot4s=?H@biADK6k@6CMg{oe0- z-`T(K_te!{rvm`c_1f!x2mlyH`P0%+{KJYQKLWrY*voy_;k3&W{38j2XyenvcXp-N z1s{T(FLsqPs^5o)WWTJk=$?}Ro6<{z;ljs7#{tBxC za{( z<2JCQRf!qmtP6piwbjldyc1&7ta`oPnbH2zr;K6a4ZpWIVv-%x-vU`vCO*An6LIB2 zS6fX$G%)(mZXqWwouCPtv=%3DO)y`{0dx)Z4i+S>Y)9k@0Woc_$4>%N?;iY~CFs>3 z?yDjg0bu)O>xUrD4GV5c1vTHkUw#HDqE{cFeo}jP7SqQVVJkc;Vp3e7Opo}$F4%GD zx$g7jGaOX_(&!@`N}7L!V~OfN!ttlT;Tq7bgP5f0yUesVOk|s|%y6GuE}AUcYIh@f zuqDyAK@yzaT9TDAIpkB=QY5hg!VabI*=q1@k+X!gGLJsj%5guLrOVS&lOI)k-uQ@Z zYqtM)+pia2q-h47(>4Z3T72x^s@@xj(zD{qYlX)R8qXI9%TyZw@@mQA4K3rT;o4SC1#e8*V$4r&T}KofVt^*HD?8Q*1N|t+r#4H)M)Oi( z*14^XW+e68(a_Nh*>kzoo~!D-4K;v8iZKrAJmlL@XqzSVl@At%E<7k!CQyFpf^b# zzuRG-#8)q8Y+*t7IfiK5CK%kbeY>D{uve$po^PdG7+odyZ4o-^TAU9pV>yyw#00i#m8S(aIMu7N`LTwHUq2HWEcn ziw9DU0pi9>Z?hJQuoObKimTVJFsuQYS5Lo;{-Z(ttHOi{#a6`*maBlg@VAsECXv%s zImZ|Y@7u)hBsMl=kb68}iMD=LFjJutz`nbf{L5Cgk7Q7y_y0kL6eh&LCjvm`OJS8? zhpT`yj7SCj5PO$!P(hjhD$wAGc*jt)iH8h0z#d)n=4ETT7*55<@303@!8=7E^)4h1 z`FrzpmoRQ=@25J}q<7i_kjd{{>4SF(he+&f|2F_S``ubhrkfqW9Sze!_th2PD=V3F7r>5s z1XUC}+^onkZjO2AIth^!nhw)M_azt5dtI|o-*>=>&vVT&zC9l3z6H<1`!He>do{+l zWn-*OnLj|5v7q9(k>t;MwgS`6e2Fe%v{cRCEVE53LCTqef$p#?fjK62r#^#0R7(mr z139RC7{k=7SZ%Hff?BVU>`Uew4bcFX024n(Re>RRu^_??OCgu90l8jS%D9gH$0^H|EiDUU-J(hx)4UJH+4%_)4ScuLb<6^L+rsKU@6KpUz* z!T5d(2mdsBI~ZcD-Hn04r!^9LCdCCHi%zI>#o7-EM%VK#y$QUZ=bx8u;w<#j4-v-F zw>7oo0h}m^MCTD2rUi4U=KQ%pKc6k8XI*KKMcXQBeluPrbIVQC&KIwqXaZmR<5*^1 znRCw%yn~yxuv=fZYo(!k@S_OVXS4XtOlhs`X!K+}Yu;kMJMbSRXBiDMvS`YD`^?x0 zvy8Y&mrw$8QkKx48Oi5V-;$jq)YUs_4tX{7AjEUeX~Ox$nRJ0|teG^;ETh{qKY}C5 zNM=R3&Ri13aCp|WlBg_NdPF{r&^Y?E13y%-G+!PE7xy^L~0-Mjdb5P{^B57halEh?`WP#H*lGqx-sbF^MfwfnhOIog} z3>miRQf28;;m+q6oM%rirIw4nY|v7P#^nX(aOTDw22vM1UXIm=jL0v9aA$uCpvi0o z>?R(BWr@X8g6SFR-D!Qd{I*!>bwSbX(X~@kkG6;CwU{9E+AZ4C8?>5|Q5-<@8E1OD z+`N}%!yPo*;YlsoKIwO~YmQrTQhpa7_KT=pao2q<;_3#D%QnNiV+$L^V94gpC5`u6 i6IfA{|1T%KR_z%1g3@)6SE2ac0K7c*yI1eVX8#AbP?XXD literal 4227 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 Avj6}9 literal 6138 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