Skip to content

Commit

Permalink
Merge pull request #32 from MrLixm/chore-documentation-overhaul
Browse files Browse the repository at this point in the history
chore(doc): documentation overhaul
  • Loading branch information
MrLixm authored Apr 12, 2024
2 parents 3fac5fb + c7703e6 commit d56665c
Show file tree
Hide file tree
Showing 21 changed files with 84 additions and 22 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,7 @@ poetry.lock
_uses/
_outputs/
*.blink.src
*.blink.desc
*.blink.desc
*.afphoto~lock~
*.nknc.autosave
*.nk.autosave
40 changes: 29 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
"Fork" of Troy Sobotka's AgX https://github.com/sobotka/AgX with implementation
in various languages/software.

![agx comparison with aces and filmic](comparison.jpg)

> extreme example rendered with pure ACEScg primaries
![AgXc comparison with ACES and filmic using a cg render](./doc/images/dragon.full.combined.jpg)

AgX is a [display rendering transform](https://github.com/jedypod/open-display-transform/wiki/doc-introduction)
(DRT) with the goal of improving image formation.
Expand All @@ -16,26 +14,38 @@ smooth color transitions and pleasing exposure handling.
If you find that there was too much scary-looking words until now, just
consider AgX as a "LUT".

![AgXc exposure stripe test](./doc/images/dragon.exposure-stripes.AgXc.jpg)

Exposure stripes increment (in stops units) tests:

| [AgXc](./doc/images/dragon.exposure-stripes.AgXc.jpg) | [ACES](./doc/images/dragon.exposure-stripes.ACES1.3-GM.jpg) | [Filmic](./doc/images/dragon.exposure-stripes.filmic.jpg) | [TCAM](./doc/images/dragon.exposure-stripes.TCAMv2.jpg) | [Native](./doc/images/dragon.exposure-stripes.native.jpg) |
|-------------------------------------------------------|-------------------------------------------------------------|-----------------------------------------------------------|---------------------------------------------------------|-----------------------------------------------------------|

# Background

The AgX formula used is based on the original Troy's implementation which is not the same as what is currently being implemented in Blender-4+.
The AgX formula used is based on the original Troy's implementation which is
not the same as what is currently being implemented in Blender-4+ (which could
be considered better).

- assume sRGB working space
- clip everything outside
- apply traditional log2 encoding
- apply "inset" (gamut reshaping)
- apply tonescale (1D curve)
- display EOTF

It is possible the various implementations are not at the same level of progress.
For example the LUT implementation is already using a BT.2020 workspace approach
It is possible the various implementations in this repository are not at the same level
of progress. For example the LUT implementation is already using a BT.2020 workspace approach
(like the Blender version).

# Content

The simplicity of AgX allowed to port it to various languages and softwares :
The simplicity of AgX allowed to port it to various languages and software:

- [OpenColorIO](ocio) : v1 compatible
- [OpenColorIO](ocio) : compatible with v1 API
- [ReShade](reshade) : for in-game use.
- [OBS](obs) : to apply on live camera feed
- [Python](python) : numpy-only script and a more advanced library for manipulation
- [OBS](obs) : to apply on live camera feed.
- [Python](python) : numpy-only script and a more advanced library for manipulation.
- [nuke](nuke): partial implementation for [Foundry's Nuke](https://www.foundry.com/products/nuke-family/nuke)
- [luts](luts): LUTs file for preview in various systems

Expand All @@ -45,4 +55,12 @@ The simplicity of AgX allowed to port it to various languages and softwares :
![OBS interface screenshot with webcam feed](obs/doc/img/obs-main.png)

> Screenshot of the OBS interface while streaming 8Bit VLog from a Panasonic camera.
> Screenshot of the OBS interface while streaming 8Bit VLog from a Panasonic camera.
# Usage

Consider each directory in this repository to be its own independent software.
Usually each have its own versioning, changelog and documentation.

When any of the implementation has a new version I bump the global version
of this repo in the [pyproject.toml](pyproject.toml) and make a new GitHub release.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.exposure-stripes.AgXc.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.exposure-stripes.SPI-ANIM.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.exposure-stripes.TCAMv2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.exposure-stripes.filmic.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.exposure-stripes.native.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.full.ACES1.3-GM.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.full.AgXc.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.full.combined.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/images/dragon.full.filmic.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions doc/sources/demo_image-exposure_bands.nknc

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions doc/sources/demo_image-exposure_bands.nknc~
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Nuke NC mode encrypted text (commercial mode uses plain text) dbkYii5]i9iR:<Sl[ADfS[2Q7=0m8`N9Ca7AA:79TlS]]=P^RlkXH\0NfEG4<S1aXW>o@i3_]mCW<i=c@`g^Zi?]<NN;4JU=1I:26Pbm=d1QHCL6[Wf:;VY[NfJWa>[<oaX2ZLYfca_UAcEAkadJN>`MBB\hJ<7m`;XES0IlKcSoM0_n47`S<[=UmWLVILNf]>5@bZAcacCEW=ZD3_3KF`K<\SBGCkmkOTBoQXX:E>Z0N7T<j5lV]j2HIi]>@>B<2=6UQe7Y?3NgDY?;X?maWB6XETSf`oeN7YZf;7Aci8=2kAb0R^B8gD:_PQ14<n1=TZ]h?NjJZ4EMZoB15`4i5SAc<9E?L;I;XY_Bb3ojHd^dg:KaBU1l=Cl]\dbj<BGV2PDMUgbfj=S862k2>n83Cj=m[?cj>FBd:55nPdlgP7OS7ihOFHQYEkKQakG9ZZjFoTS]ABDh>O9efhFQQ<LJ`E_=ci;oZ?=MF7W3mjU5Ra<C@81U=L<b?GnDnB_`@=6WJI;m=XTFmiVoie9hG^dUVO7b0VIdGlo8R9MoagYaUVUT:=j[bM199H_35ZU[TdHJF`lg?T=0kL[lP5:CM<]NUH@4VRQ9H2LHlZ]aboXBo]0?k0AB=leHK<]3lncDJfZfPBbP41[U8iPnAU_\VOL;MY06PC3R=mPiOXjbi6:RE7\<`<`<N13UB61ZlF;c8MElBPQ1Oc:lIPZO0>RQ@1]o7PWGWe`8XID2U8;JXL5igolJ<EUe7=K=6g317:ZESo^5PXAIRZgN1K9d70=lP<HW3<SSAYl>\:^5mE\L2\e6[WY?iZMQ8gY1HLEKk\O?M^?`2T@]oHjS4cWOV?G<FkMbUnN_j9TCR\QTkP;CSnZo?Z@RY;K_:MoK8fh5WVC]=;c?jFhK?OZJ\[\D@VbXhecAh[d[mU@CK?35SJ88[?;EJ1KXjKZ]>M\IGc=c797[hV4kl<hR>mPBQB7iP_\Bce[X?<9Q1nY62XBE\>d4Gb\^ge_H\N=2RG9V1<FOlQ7YhTjWJKFRLKCK_;OmD9gn^E3B7\CK6SE]UdTXDW7`5aG7Q0IVXCY9O`Cme@nbN;US>WnOgha7DC\hS8AF=4=;gUWGlSNlIbcJc[P;GO:I]PQWnG;lkM<`@2ED][O1oBnallF@hW\34fJBITkG0j<3Ah_S=<J@ZZUG:hCT`b]:97G1TS\C1f=11d4UZ?K^N`Qf@bCL`Q4SlalkJ9Ek?@6X<GSB\WmUK`SUidT12ek8aMGi2SBJ>oZX^cJR>J@3cBSoK8==PQUgM:0nN70da=JkR5A99>TTGH4Fi^P[EXm:mV@[n3^8n\VP4T9_hA\NnJoff3E6d_gf2[Mi14ZRBC_i\ieKOamR`eAF>c7H1MKdF`PnJ_Iglc=XmbOQ1cKJYK>HWUOoe\l8m25[X?aR0YVNj4mViS3Xb8cI>W_MV_2J9;JPZNFO?d1HnDdYi;XDfZf\QHhIXF_XHk6`UZUfPaXUX[IWNdZTfSTXGRI]1Ygi2i=66UohKkZEk8nM=_W50S7V@Uh_5^BBem6fj=Zg:8aUodG\UkXmiPlk;[[CQ0[8d:=>PjC?T@>eQEUUV71WH40>i>VhRcJVRa@PkKa7ANV7J`T2><^C<D8:k1I4YdY:eGbQ3N0<74f3Qo<1`TcS_jnQ>_`W1Y\Jf6\gI`VUMH^=bgP;TPTJ^H3VBF:`g?oR=5C`47A<A=cXSng1]KO_eN\_dO<=9F2TU[4gkgEmPYmj=72T]bgiEolI:G_HTeIE:\@6lOD=f=CD0iDB5:7;fUS:ne9S^WjQ\FCk;]FES8WNJMXIP^__`ZfHXF_M_:g5[cY6SR?BgODOc2ORMLe`L]N8j3La:G515eFcBNeWRLE:Ib_TUTVkWD:SWE0H`h8A0XX`UEcKn\eL43k<iQIFeU^P0aI1[elhmWo[ho5XXJTiWITSK:k^4OHOmm75[@[c95>=@EFCm6mJnT4WkQ5?fOY_bGY]\4ESIX\;TQS:Ed=M_oEH>eA2_G=gPa`[LZY40WiF[AK5H;[n^ZOc:Q0L7EX8D5HA81URV7K8dTFXmN9_KW^0o=<joKa>LHkHnBNdbLNo:2<0EM1`AS4;2KARcnKT]c@@W@2G5lDH5E[lEBP`YPRZOiKH2[QCQ<:CF>>@B_MnG;]mT0F8O@eL\FXR0]M;P\]ROW:OR[@MoWU\2k7V1McT4Z6BKijGFEE0k5Z:E^I>;Z:PXo31@c;l3U@gkdWIiJlg3?K<XDE06k<VTTYTb7YO7oIHB8B@SWaei2F93cNel0`m>KLP\OG_D96P5Q0]nDeA4JLRP8J59e?`O=Y^a=7j;^Jb^_2ZPVUjHO:TZg`2J[HK^eMZh85hf5Vf4ZlRUkN9`IV0?8hi=;>KfVmf>H<8;OP<;n75l]G;M^eYLB^G9^:bd9n_l7Q?Io@kkQmFiGg35I_0OTOLAkeC2N@Sb\OY7d`=`\X4R=6HV6<CnTfCkVZJdj74?NLUBY9KSGD`Gl>2W8_a;[H:<D_X6H5A<]F6Eg990Gd8e?SX7ShnlLi9gJg`fW:OZRBk]b_XHY1LEEM3AO7[TOQ_6K]dN\58>AWfCbPa1]D9aoSdK58V4I;4BDhdOf8h^F_^J?33aQHQNcc1<?4:P=EQHh4LLDSTfZ[?cGHB37Fm5HFC@hXI6lBgf2kd@6gV[hfIcZ<B?>ZoPh58WUcaPCHmmQlB^Y_Xf^105I>FdHFo=b;`;g6MkJAlM\f3aFOj=IW@b5MBfYT[]YTOd0m?a7110Ta`C_XmSPdBA=F7m\X2L?4\EJZYTgUgNGAN8;Oa2lGkNAdf36:]Uib?Bj[RKlE`;4`CDA^noV8E?T>j@MlD5Nlni>6]WB<ET;l[;c`24`=eJNUlQERGoJcoA<43cmZ<9MWU\^c:7?=1@HGA54Y?9l5=mhEo[kM:2Nb6;mGICcBPN=YX3nc3fVl[_IPde<3c^G`HJNe[P^<j6ekj8:^DBCZ4hPl]fcTf7agWC:Pc_]]hhTMY\::F]@IR4Fobkc1eUaaIW8`IAeH\B6?G9l5cT7?XV7[gGPo3U<nMaj<V6lbT_3gToC;N:Se0^>Yb8a7[1mh^UmhG6RaGnRl:oSdDLc1AF3\Co_TkKl>b[D[91SQnm8P<feinS_KG3F]PI61^hedImnZD_UhE0F0b7I6OK5:LDW?a[`12R?[f[:;P5EQiJJTP2`URC:1ZoM=cZ2V=j__NRj=nV^CWFkFFXl@bZdEhHS55hoBkSHI`8mlimAcCa:hJ_1K3EE>Fm^LKkU4DTK0C[AL8l=?RO6:O8jn@@fTc@:b8]ICDkO?mjD>bnBQf`DI`o@4jF0A25lmJER_>5T:?]kENLOh32VU0fB3Q>GAXY11\?dYcoOdK2<5]GH_5\T2n5B`P>lUBiQ:TP`ZMR9<?if:Y4i?9ZW@K37[bWJA`EAcf>MZF<DSdWV]?Xfjlc5^CHQi3?f@3L[K`[;9A2Zn<@lc4b[?g7nm@TMBdIklXMY6[OmgV^TH6O1Hi0V:YCln@3hnfHQ_JU5i?XIe4`cXCOUfGYnaMAG]7NGB^Zdd1\3a<1IlFbe7BinSemR40b@JWT]SIUUndi8jY=C=I>WPLQ96iUEb`PeF`jD:VknL4GD50jJ^A7G]_Z]?H3ECLLidS1cm`VU84U;7::Bo8iX?V_BC315A]>A3[nGj]?[VN2^^d]\CI3f0F7SaL9n\Ed[CoWe27CTi\CTIb6S0hDQQhn]3LUjMA4bV0K@G5Z7jFX\R_6HR7;ANUR5mcSb_CJ1ZcRGTDhWRBRN`iIg=jIo2l2\J?n:1QmajXoBo:Z2CFiRfF;3`kOURjo=cPRH0h0i@PFK6<MW_jPHNJcTMBnIFBOo_XF7QfE0@HkL2Gh@=]a5>Ik>bD9ddAY6Q:=9M[6=YiNj4nASD^Yhj^4S03ZDPI^W:ddl3[Ig^<@_gQLEHbkJbU`VR6RElU8GnX2B[VR=aB?6Aj@niB=mlfh?d^IlXSCBhEZ`MJ<=O^eRbGGZi>QdffC>>[Zg3QJQ36:R6RjAgZ^^0GbZ4@DT0=hHHdT7[6SfZ:VX?mUmig`L=1EN5:kETi2Wm]8SlP7]Q]hc8kGbJ3Fm_]78S;hMolmcB9KnNEkVL7gBT]hQcMC7D8<S9<bRH341c8N:@ndEK@ZJK0a`6O78U:XOYA>\oUN`G6^HQZC9NOhbme0UU8Jne6l`mjBddUn9WH=g;bF0eC3dWa97`f;MlKlYPoo]E?J5^J0_X?QSP]CT<1<RdTT?LA<a=OB?3X24XPdoA^E=GD5]cIeC;gjN8g8lm9Z06mI7=9ViF_BBQMlQbRYR1[51k[Nc9SlU8Y6V3MZMk2gEU@>So8emoWaS:;ZPdBOPm\J]0J`FnIWokWKL8_aI1BWP3?1IblbCL0=F^PSMPLH2IeV=FI;2U2gSFZF@A=kZf\]Fl7Z\>5<[abh_FU=?:7Moaoka;AM\dP30=BNG=X`179RZ8n]FA<::Z_WCYLeoWo:2DMF`mkoZR1Wk0[9dH`4A3Ke2Vc9WPTkPKlN:I?2SincZJEaJeg\ELhE5MOkPnQ2Ef90Fl7c2kOB4Xn9[g@nc[4iZ1RJ:i6lhmRiYHBPohWS0LUbC<@E?0jLH`VPhW5aDjHVA9o:_?:CbX5]MXW>@BoiIcK6cfX3CgOK;[j1Ta]DfN4:`WDYj::KP6QF:IcF4AmVM6ZcH3=EmR;_EYQl=3;eLMP2OD:9W=T`lUGcn1FTfbX@:fj>L:AYSSSj[Z]\mn8\N3D?>524@X2TDEb>TH5T4EnWC`?eHoPcX66VNgeKEA>SQLM2hJAU8;2hojn90PFdd?lS;l^F=CA9gI4<kfWF4lER@[_BSBik@4]O^nX;ei3WEe[1dTPJVc38B2VKa1Ioio48e<[L;hXiGY?8LM[P_HI2OSFilKRZfHmZXDG4knnb5lkb4ma`QKHg@ERE4lUFP5327m<=K9>>7VDG`kk?9[eB?Rhm2mD?f4<_lJ_McH`l]7[=`^Y8Z^@ld;<XIJa<Y92HH6R5ZKUaVo?FN_]4?WIPbL0OA:EIiOcW>8E8C@XBmF[M3l`]b;XEd9QQeW^L7G`2BY3Zb3clj7oiJOGLWGZY7V:F<>R]<1e2jKA99GA`8iIJS?jLi[oW30b5j0MV8@BJSej2dVfB:Sa>DAQZTaLcG6HhROm8]oC?TY[L_nL5GA>RJamRWOW[L5;Vl7k7401mh0jgeFD<XcIlaNXQ10H5cUK8b5\695A\KLjfdFY3X]@RkASkWKZfRKR66MR1H<jeL07CIiBKcFTGcF80bT]6;l;P2FcIC6[eUEc5Kdk;40O<RGiG@C]do8<F?>k<_g<dLiGbGBY5>aD98\0XaR]hhhA`37Zm=bU[lZ9Sh<E4XRW[V73X\KbkVO3lAeZl>LE0eanTM]InBRe;F_TPkQ=iCkG_`I\7c68OYnh4N=13_gZ4B=<58ZQlkN`oHYFWh;LF[QVe=;Yf@J5=X6hOb_^>o0ej=K<@e@@Y9]bU]L^=42IEPZ?aQckYij8n5Ih=5_K]dGY3:jBL@]kM@]U2BEGe\16QoF@YfbJQH\TUED<[;6<W;1eh10hlhn\0EI3VSY;h9Bi96KW>`GOc8SL_]::Mo\:\mR\aVT?\L8OeglGYE=I36=<fRD5?mj<1`?1P9Gl7l9SG:lJ2mEFEklYV6H\]\H6?nll@HBMO?gBna:Ta@mfcQ?[6SA1?oUd\lYU]XbWbeIR5VmWf;SQMng5VM^DB@kkj8oFS2QNG76k7jW1TibS8hM7:njkB\8AZ]Z[Y\3TCGET8`;fJ=2`JY:o:5TA?3``ZFc5OY=[=PXP<O:6bQ?k;;9>T48;O2K<D\T<27@@@cK_l:\nM3;U<J71PJ\WhUL7dC3@7E<Ca=c0Sm@_Qk5FAZnL=7Y`X2N3KXU[>gZNOj<QOV[6WRbRRjY6=AhY]L[C`:K0ZmKRZZ0di]hEe<2lIAH_D56Uh7aIlF:DRf5=fOamVY;]>`ddecSN6dm5MlP`Kj8kjahfHR`l;1SF3?egFb0B^G\7F\WYG<<AE]JJWmJi`NXJ0bFOAMhYQd2QLl=c0GIg6mXOlVjiAX2I`?c7mD\bn<QCI>gT>]5LiUfkG8VJV:neT3nEF0PU6P?e3[R[0o^_O^XSSHnjCC^G`VNT9=9aZ>B0k2JZT4AhXkC>8o78@H@PNUQG2b60aD0]3e?V9[d>0hXDWTU7V`LLRnCDJSieCX:>GaLE5ne2cSAQbV1bfZ_VOUke`<oYQIS@P<Wf<fMXD06kY<EHLa`?W[@YL;WM[mlZi?6;MDI=@M84P[3DVdD^j:c8c3757Ym?fCo28W\g]:bg:_RTi2946WkNlQ?2KISYI1[D1`Qh>lK9E<k9^TXMM5ja9KFWAZiZA;49GFA\oDPoG[iG55jKTl]<iFPojW0DTChVUhA@jZe>8;0oo:\2JU4]hi3mgIP::SmkFRQRS;?MAN:G;^b@TLE5XElNNjTZ<]9@;a743\Zc97@=B`Co?WRUVS\J2D0kXMkHIFVKS0mBEf:GWf14YY?o:f2gGi<4UJThagR2aoF=nS1KURm^_e\Tac7GUI3fbWEW<eKo?1cKjgG`A6hZhn5[cDoMeF10@oAALWJ_@=L5hm059h?U8Bj;c\aYDj\D@3gL[FYon6o6RmIfNDagg:HG^8^od@HXf?Fm0PiRDg[h2jV9:PgY5>l0V]X5c7Ml_3dJfZSg1:PhnQQlLbZBG[3LUC2T9YRd;1@ZGWjZlo8Mk2\8g9SK@6N>CTN^3KJQTVg7\Li<?C2QIXF7L`CT:j2[:GSe\>?VU]BeZ77=33X4icGdbFgnI`EFMZ_VUC`ahM`h1gBaOIkcR`C2hBn_L6[oh@jf\0\Xk^d<ig<T7FW00e]3MbhUGGTYZEY9_LhQOX>MI:SGUSk>WDboT7ZD97KJRjTA\^WlW<Z>DS[8YL\:OaB^jKCaGmKL[;eY6h>CPd=]X6W;mBQVH6F\7f0UoU>;?R@GCg@KGKINDWDh=RLiYC>EhDo_RTVUbSd;WbWl3]nU3>UAnBo@c1OODbiIM2AYh8[bYH6QVkd:YPi32[`Nb:HTbaeXTCji@clYVJQAP]b8GP4A5LU31Rd6Q]4nd4g\j1ILBkiWCXfi5ATFgQb?jU;BEZSGB\9C7LnL7dC2OZP0REOSK9cbiDe=1l3<bhDoBna`Zg0VFInQmN3?dclS<<h71^GIS]Kn::@n`ChVS@iV_Q:PcYL8[3B;\9Yl9:PeU?<cbX[M5RDOX4P7Y]lVJT]c5fgX6FVgOXIlc[4R[bbbFfXT6M>P0bGM5W>_9e^d]hlDZ1Uad6cJVZo:9nG2l]oR\04`DkDmfUk1\Dcbj7^N[Z48Y1iN0]9o`hcYD<Dd_]N3cgg[JW^`PKPk@akTe:F>L^_ZQiM`^OnJU1aYSmKiNSEdQF\lDjF^jlS^eZcb^R_fmd3Y7?[U?m7TRm<L>^V^;XckW@5YMPTn<hkPlS^:iTI[_\H3mK6@kGLCm[\ShS^ZffVHKO92g7JWY]G\nb6?Qi3Djm?dJb3dToDb743l9j1cV9bCj;1TJnb<0`CP;bTSR_53M<Y@AICVY_[?WbETLCkTab0bnUjI4ZdSVkYId\\kccHEg1[g4bEYiC0D?:nik58dgNYnkohmWccm>?DgIo6Vak6bBMA3Yh\=AD12[iIIjaQ:^jYTbJ;oOXO3jbnR049bkXPMPjKD=Oe2l]3VFj@NUdX]a4:1kL@?:NhhP5I<8Rm7SSKEBWVh5F9]:Q^`OC]`b_9:kU;l8[?2U<W2gD4K1bKUA;MG\;HaWc@[4]\YCFDH\Vh<;k;m[JjcXch_H:eI9W<5jEkT^4N=\m7hKYQX@^0m7gQEIYI9M239alfl[@j>oWdQ`@TCcKg89lm1SfVBY\:ZL_O9Q8>MLVhSQ?d1`F3BdSH\2ZoQ265TH;f<4`^6iG6oDQ99ZAgII6P_J<?Z0;3<i<fBjd]_Ah[F>>W>a3:2o9[@E\a[T;=f;Meen6KGEJlH98GDN]]OX<JX\G83LD=AT:BObk;XdUOajnVbSMQ`iLCk_l@^>861i?6OdekhZ]G`?h\Jf9HV<7\S@aDW7gWR`9N^A2hc:?]N\76;HB8<<53TGh4A^B5eVI1PKJg8W0Z\2C\iQ7B9Yo4B<\RgCNRh^K_j>BYRC8mK`<ZjikgMBeFbn;REh[k`Oila:VLEDW083W?Z2PT0NiCkd9Hf@1K<05FlP[28f`YIlNNjbVE7e^McWi7?TZGIKJY9Ec4Bi[2`\j]h@X7k1XGLIFLbHM1Tm4;B9ADkm0R<bT?7n^E`MM::fPL24D4mhJkSf@]m8D;5nhIAJPPXe13d0;ZWSkkGIKeUi_V1<PLQ^oF11=PQJlfkXCo4kj19Jk@nj<08b=\4[V6F_e:adYL=65K@SV6HK_8Z>ISNlhG[QTIgAlmkT[MkNiJ7cQ6o8:CH>[??FgCHog3Vmd]MAb@\2:D\IbCE[^P^[G6m>AX\G3kK\eW8j]f1QRf069]Pbj\ELi7afjA8?\0G1i_dlUFF6Ug>L[EBR2\PA4Ub]]]4Q]K2E;SeK=:DQTT@PR\Ha9`jdEMfTJWo`ZAVAZZdX5MR^26Bh_?^[`UF?NQ@X1a;WRn^Mk]4VRXA>j13PmZnAOVBfEb4OeORReVgZ80`E`CFoV5hF^?0NQ;JmWI?9_QC^F3gVMdEX?dJ3E<M5Y99CPe@6DL\Bij75_kSLlC\=Cmh0Ca?Knj:fkSi5=R8AcNF2]IN]66DAYR^=M6B`_BZ@35>Fg[i;XRh;Vj;b>nG4e`=n=CXH=oC[ME_8V5IJHTGh6MIVQ=NY`PH9401Icn<D7klXNOHf>WJWOEENLn7hUF\2EVQg5TAQc`oH5[^cQiMS=EMVOPjEi^2Hh0QcLg56@MZHEUmTC7Oi][T`XPlOV[@S66`i6ZoQBaiU1<a^J7fl?UlW:\XZ<nYGl_jCche[7YDS^EN^ijMEg=f5SN[?LmR01SAk@bAgb]dgaamE@4^fDn8>_IoH2U6;A0L1N:J=>:<BVQ4<9e1Te>dD764Yb:GjojoM4`GPC=SH0D5D;C5hJm65]_TaMjOQcfb`d^Y:<OSfC8k4SL6D6fg>C_9=cb[@FV\?2`Cg25D0>;kIL6`XbA=_f:nIA_:@6Xkbn5i1<loFG`4eoKXbUBWKRjLeYU3<VH2MC@16B4nXNeF:ijgheRMA^aDPJhSG2Jo34Lfo99ZdX?YVS@OmS_<ooZgl44OCUXZT[XlIWB\2bf7CST1U7Od64DU`hTA:hb@A6Jo6=77ZVVj=75]1bP<?KF]^CPfd6Fa\7fDK5TUkHThQR3aIIT:g6Sf[iiS4ET5c6EagO:C:dN?bY@64A[<6K@]9]<nEnF9A06o1SUL\hQ6jANX=O@Fg0Jh4VOg`Sna:1`[BPCdAag;C2S6X]3VWEi3]TSAaCUb[3Q\EAalA?\Yn?d;@VdTcL>JbTD3QKUo2VSkN[lZeIe[__OAMYnmH50\N_g>>V6?og??L;X;ac2:Og;n@4G543llDA54l<3oI[I4S0>6S[`d`ogZ\5W9e:c`SejD1UfInNJo6l;aOUPXc`0VbFj[@R4FgdI_4LLD4`^=P]>I:68^@8O40Y\Hb]c]g;R4EKJLA`klRFJWkme6GbTb;nY]:Kcbo@m<UhZRof4BaU82:[I1Bkc7[9HU8m_ofeX;_E6ETJMiKc;MXE2TmV5i`4b]6VfL\eiK>`PV_eP0jeN=1P2nI_QD[g`768YZfhiBQDE2GfinI2^HXA0j6P6mXQAli^RGJ7KmWOBEbaA[QO8W?kmoi<_FoX5akOBlMfeZm8ik0Pc6V^?KYV789d3<G22m38kco::ecDi@@KRRmhPC?h3_aOchIm=hn]d7g4IFi:7YThEE>hdNelW[HNNTm^o`JjAS32^>;2NiCPEOgYULV];ioIn[WlVgj5:C[Y29j`nCJogK2XH20A:[jR1;WkFB8Em`aVK:_<@IC^^7I:X8M_1dG9[aV3H9hS2bb\W]KdIZ=W7lob7m9[=:4=RO1l`34nj00;ZfFGd@Ue3l46_d8I>EMELhY^8Z<L8h7KZA5BcmG;BR^Uj^5RFbc2kHd1\L7PGbgBMcOAiV\8SLCjSC0[U?ZVZgflFnZWTE\1XmVJcTQ?8_`8UI5Aj^n4HReD3RKSG]ZFY6_MoiW>n3jSG^69EG3KT;_MGRLYcPImFSW0aA\AE4@EEh4hCUY66RcPe:gO4N=UKWiV0SLNld0;jD:J]5<GkIQGCP?H6bXhGFXc^oEf9BWbmWYe<m5JSol4od3C7bf[RWe5o7SE0A:T_AnZ6G964gZ45h\1>HMlbg_WCXYFn2kKADlM>CH_O2jB>@alFY]E35ooQ:jZXS_NK42PlDWn3S_`D[boE:NBgdYQ`o<bPcWdm;9KW6Hd6eF3aOE@Z?mkE\RE;Xe5]T02^aN@cQRLU1;FnaM[A4B8NBZKHU`nhj:C>OG7FUmIgTELP[=3bjGOQa[FgcB1H6`bB:d57iO^Wa^BNZ160c;c3MhBd@j1Y1SO2N4hId6aF_AZ:BBghLT5C>`JnLGefk9\jL``cj\TZ[U7Q3ZO4gIIb;g<<LIVFaMA:BcoRoQ7kjj@EldA`RLb2Y=b6n@AW3PHX:cHHQ2kW9d9FOF6bf1JTTP9bBFSm1J:;SPBlO3C3F4`TTO1<Q9<1GY4\b2AlO<NoIlNKiMV6Ull<;PE4KVQQf9:1?kV26j8771MR^1ANR>?LoLc\KEFI5RdIhWYjaoOEUF[gSQjf17i4ga5BYBcB:g:9??C`Wf=Xl]1@k0[Cf4@fi^H87`WX>bMUhh7mO=QeY1g6Q_7bd3lSJn;eMNoL_k?hj]mUBkWmOGVIOEg=g3oE6o]o8;31EY4JIgLF>a^P4X6BP[XAYP_ZKf]UP@4neIk6\
Binary file added doc/sources/dragon.full.combined.afphoto
Binary file not shown.
Loading

0 comments on commit d56665c

Please sign in to comment.