Page MenuHomePhabricator

D12807.id30784.diff
No OneTemporary

D12807.id30784.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -282,21 +282,13 @@
'rsrc/image/icon/fatcow/source/tablet.png' => '49396799',
'rsrc/image/icon/fatcow/source/web.png' => '136ccb5d',
'rsrc/image/icon/fatcow/thumbnails/default.p100.png' => '7d490b01',
- 'rsrc/image/icon/fatcow/thumbnails/default160x120.png' => 'f2e8a2eb',
'rsrc/image/icon/fatcow/thumbnails/default280x210.png' => '43e8926a',
- 'rsrc/image/icon/fatcow/thumbnails/default60x45.png' => '0118abed',
'rsrc/image/icon/fatcow/thumbnails/image.p100.png' => 'da23cf97',
- 'rsrc/image/icon/fatcow/thumbnails/image160x120.png' => '79bb556a',
'rsrc/image/icon/fatcow/thumbnails/image280x210.png' => '91ae054a',
- 'rsrc/image/icon/fatcow/thumbnails/image60x45.png' => 'c5e1685e',
'rsrc/image/icon/fatcow/thumbnails/pdf.p100.png' => '87d5e065',
- 'rsrc/image/icon/fatcow/thumbnails/pdf160x120.png' => 'ac9edbf5',
'rsrc/image/icon/fatcow/thumbnails/pdf280x210.png' => '1c585653',
- 'rsrc/image/icon/fatcow/thumbnails/pdf60x45.png' => 'c0db4143',
'rsrc/image/icon/fatcow/thumbnails/zip.p100.png' => '6ea5aae4',
- 'rsrc/image/icon/fatcow/thumbnails/zip160x120.png' => '75f9cd0f',
'rsrc/image/icon/fatcow/thumbnails/zip280x210.png' => 'dfda5b8e',
- 'rsrc/image/icon/fatcow/thumbnails/zip60x45.png' => 'af11bf3e',
'rsrc/image/icon/lightbox/close-2.png' => 'cc40e7c8',
'rsrc/image/icon/lightbox/close-hover-2.png' => 'fb5d6d9e',
'rsrc/image/icon/lightbox/left-arrow-2.png' => '8426133b',
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1495,7 +1495,6 @@
'PhabricatorCacheTTLGarbageCollector' => 'applications/cache/garbagecollector/PhabricatorCacheTTLGarbageCollector.php',
'PhabricatorCaches' => 'applications/cache/PhabricatorCaches.php',
'PhabricatorCalendarApplication' => 'applications/calendar/application/PhabricatorCalendarApplication.php',
- 'PhabricatorCalendarBrowseController' => 'applications/calendar/controller/PhabricatorCalendarBrowseController.php',
'PhabricatorCalendarController' => 'applications/calendar/controller/PhabricatorCalendarController.php',
'PhabricatorCalendarDAO' => 'applications/calendar/storage/PhabricatorCalendarDAO.php',
'PhabricatorCalendarEvent' => 'applications/calendar/storage/PhabricatorCalendarEvent.php',
@@ -2825,7 +2824,6 @@
'PholioImageUploadController' => 'applications/pholio/controller/PholioImageUploadController.php',
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
- 'PholioInlineThumbController' => 'applications/pholio/controller/PholioInlineThumbController.php',
'PholioMock' => 'applications/pholio/storage/PholioMock.php',
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php',
@@ -4839,7 +4837,6 @@
'PhabricatorCacheSpec' => 'Phobject',
'PhabricatorCacheTTLGarbageCollector' => 'PhabricatorGarbageCollector',
'PhabricatorCalendarApplication' => 'PhabricatorApplication',
- 'PhabricatorCalendarBrowseController' => 'PhabricatorCalendarController',
'PhabricatorCalendarController' => 'PhabricatorController',
'PhabricatorCalendarDAO' => 'PhabricatorLiskDAO',
'PhabricatorCalendarEvent' => array(
@@ -6313,7 +6310,6 @@
'PholioImageUploadController' => 'PholioController',
'PholioInlineController' => 'PholioController',
'PholioInlineListController' => 'PholioController',
- 'PholioInlineThumbController' => 'PholioController',
'PholioMock' => array(
'PholioDAO',
'PhabricatorMarkupInterface',
diff --git a/src/applications/files/controller/PhabricatorFileTransformController.php b/src/applications/files/controller/PhabricatorFileTransformController.php
--- a/src/applications/files/controller/PhabricatorFileTransformController.php
+++ b/src/applications/files/controller/PhabricatorFileTransformController.php
@@ -3,43 +3,36 @@
final class PhabricatorFileTransformController
extends PhabricatorFileController {
- private $transform;
- private $phid;
- private $key;
-
public function shouldRequireLogin() {
return false;
}
- public function willProcessRequest(array $data) {
- $this->transform = $data['transform'];
- $this->phid = $data['phid'];
- $this->key = $data['key'];
- }
-
- public function processRequest() {
- $viewer = $this->getRequest()->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
// NOTE: This is a public/CDN endpoint, and permission to see files is
// controlled by knowing the secret key, not by authentication.
+ $source_phid = $request->getURIData('phid');
$file = id(new PhabricatorFileQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
- ->withPHIDs(array($this->phid))
+ ->withPHIDs(array($source_phid))
->executeOne();
if (!$file) {
return new Aphront404Response();
}
- if (!$file->validateSecretKey($this->key)) {
+ $secret_key = $request->getURIData('key');
+ if (!$file->validateSecretKey($secret_key)) {
return new Aphront403Response();
}
+ $transform = $request->getURIData('transform');
$xform = id(new PhabricatorTransformedFile())
->loadOneWhere(
'originalPHID = %s AND transform = %s',
- $this->phid,
- $this->transform);
+ $source_phid,
+ $transform);
if ($xform) {
return $this->buildTransformedFileResponse($xform);
@@ -48,35 +41,26 @@
$type = $file->getMimeType();
if (!$file->isViewableInBrowser() || !$file->isTransformableImage()) {
- return $this->buildDefaultTransformation($file);
+ return $this->buildDefaultTransformation($file, $transform);
}
// We're essentially just building a cache here and don't need CSRF
// protection.
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
- switch ($this->transform) {
+ switch ($transform) {
case 'thumb-profile':
$xformed_file = $this->executeThumbTransform($file, 50, 50);
break;
case 'thumb-280x210':
$xformed_file = $this->executeThumbTransform($file, 280, 210);
break;
- case 'thumb-220x165':
- $xformed_file = $this->executeThumbTransform($file, 220, 165);
- break;
case 'preview-100':
$xformed_file = $this->executePreviewTransform($file, 100);
break;
case 'preview-220':
$xformed_file = $this->executePreviewTransform($file, 220);
break;
- case 'thumb-160x120':
- $xformed_file = $this->executeThumbTransform($file, 160, 120);
- break;
- case 'thumb-60x45':
- $xformed_file = $this->executeThumbTransform($file, 60, 45);
- break;
default:
return new Aphront400Response();
}
@@ -85,16 +69,18 @@
return new Aphront400Response();
}
- $xform = new PhabricatorTransformedFile();
- $xform->setOriginalPHID($this->phid);
- $xform->setTransform($this->transform);
- $xform->setTransformedPHID($xformed_file->getPHID());
- $xform->save();
+ $xform = id(new PhabricatorTransformedFile())
+ ->setOriginalPHID($source_phid)
+ ->setTransform($transform)
+ ->setTransformedPHID($xformed_file->getPHID())
+ ->save();
return $this->buildTransformedFileResponse($xform);
}
- private function buildDefaultTransformation(PhabricatorFile $file) {
+ private function buildDefaultTransformation(
+ PhabricatorFile $file,
+ $transform) {
static $regexps = array(
'@application/zip@' => 'zip',
'@image/@' => 'image',
@@ -111,16 +97,10 @@
}
}
- switch ($this->transform) {
+ switch ($transform) {
case 'thumb-280x210':
$suffix = '280x210';
break;
- case 'thumb-160x120':
- $suffix = '160x120';
- break;
- case 'thumb-60x45':
- $suffix = '60x45';
- break;
case 'preview-100':
$suffix = '.p100';
break;
diff --git a/src/applications/files/storage/PhabricatorFile.php b/src/applications/files/storage/PhabricatorFile.php
--- a/src/applications/files/storage/PhabricatorFile.php
+++ b/src/applications/files/storage/PhabricatorFile.php
@@ -784,14 +784,6 @@
return $this->getTransformedURI('thumb-profile');
}
- public function getThumb60x45URI() {
- return $this->getTransformedURI('thumb-60x45');
- }
-
- public function getThumb160x120URI() {
- return $this->getTransformedURI('thumb-160x120');
- }
-
public function getPreview100URI() {
return $this->getTransformedURI('preview-100');
}
@@ -800,10 +792,6 @@
return $this->getTransformedURI('preview-220');
}
- public function getThumb220x165URI() {
- return $this->getTransfomredURI('thumb-220x165');
- }
-
public function getThumb280x210URI() {
return $this->getTransformedURI('thumb-280x210');
}
diff --git a/src/applications/pholio/application/PhabricatorPholioApplication.php b/src/applications/pholio/application/PhabricatorPholioApplication.php
--- a/src/applications/pholio/application/PhabricatorPholioApplication.php
+++ b/src/applications/pholio/application/PhabricatorPholioApplication.php
@@ -49,7 +49,6 @@
'inline/' => array(
'(?:(?P<id>\d+)/)?' => 'PholioInlineController',
'list/(?P<id>\d+)/' => 'PholioInlineListController',
- 'thumb/(?P<imageid>\d+)/' => 'PholioInlineThumbController',
),
'image/' => array(
'upload/' => 'PholioImageUploadController',
diff --git a/src/applications/pholio/controller/PholioInlineThumbController.php b/src/applications/pholio/controller/PholioInlineThumbController.php
deleted file mode 100644
--- a/src/applications/pholio/controller/PholioInlineThumbController.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-final class PholioInlineThumbController extends PholioController {
-
- private $imageid;
-
- public function shouldAllowPublic() {
- return true;
- }
-
- public function willProcessRequest(array $data) {
- $this->imageid = idx($data, 'imageid');
- }
-
- public function processRequest() {
- $request = $this->getRequest();
- $user = $request->getUser();
-
- $image = id(new PholioImage())->load($this->imageid);
-
- if ($image == null) {
- return new Aphront404Response();
- }
-
- $mock = id(new PholioMockQuery())
- ->setViewer($user)
- ->withIDs(array($image->getMockID()))
- ->executeOne();
-
- if (!$mock) {
- return new Aphront404Response();
- }
-
- $file = id(new PhabricatorFileQuery())
- ->setViewer($user)
- ->witHPHIDs(array($image->getFilePHID()))
- ->executeOne();
-
- if (!$file) {
- return new Aphront404Response();
- }
-
- return id(new AphrontRedirectResponse())->setURI($file->getThumb60x45URI());
- }
-
-}
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/default160x120.png b/webroot/rsrc/image/icon/fatcow/thumbnails/default160x120.png
deleted file mode 100644
index 16d6fd4f907913415c3387189dd1129385865575..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1006
zc%17D@N?(olHy`uVBq!ia0vp^3xK$SgAGWQF8Y}dq$EpRBT9nv(@M${i&7aJQ}UBi
z6+Ckj(^G>|6H_V+Po~;1FfdQ>ba4!+xb^0)ZN7**L&L+Fd--z&1!DvpMYu8)R$f}l
zP$l5f_w$AD6sbT*$3_9sDSsNjY)s-2TGY5-AWEfa!li})A%z<X1@Fu@SC_XnG~WFz
zwY)+uJ0&u1{nCr8XU5)-68~(&zah>jxPd`XfkS|?iBw9-K|q0t1%+xkw$=Bbw&AgF
z*NU${oB#FE!KHB@)%w2PKe2J@(F?qPwd?2p|CaIV)BLG@AK4}{)l5IBv`_sx-<nq{
z=JmgmtA0JbbG}=gPu@HJo6l;7)w3kl)F{U6{i|@~;Hn=7<+Z}L)cvyATb<pZUdQ=!
zsdD1C_PxgLpLX7SF7En5YQr%-n_FeknQ2y;*16#l&5zxTXSG__>$NcN-nN9}`x&2k
zvu5l1rDw55c&oQw@e3`D`q;eKM(^}A;d?e0dAGl_=VULhS94<QTRwH$y<N#ES)1m%
zng6lsDR}qe-pt<Rt{Mlp+`cbgyJeGT`IgdSADRquk4OGUy4<#*_HxRtKJml<w#df+
zEWCf_%FLgY*YD;zt@8DWy4WQ>A;R$1MW!Er=gn1|w?}4L{e~ZD`{VD;&`F)^d~|M^
zl>gZc4EOi5re9^&`Et2&zkQupoz=He%dktYr@wyP!oV8wQfh-=L!{NWgNM2c{=e)l
z`WhX_&|dw^{PuFU+tnt!nbvGzN_)C3YW=hy*Rs{)z6w035Wd{is}sJH)xY6!-odjh
z9Sp~3&dAv?*GzDMX+T5r+6E?(2gj%P=Q&+_cZXxcCsPHcnCsaG)I1^^lH-}V0vcW$
z8@^Q9@JG3bxm@vLncjh2yIdRIHL?D<$eX>h@O$FVUwOj6GF5H=Tz&2(lJNEQ)=!fA
zA2M^Uj$#b1vGrHv*ihH8xL@sD3qyAN?x%;{SBC9pdiIY=_rR{%1%mPG8`C4%829Zw
zsC=OO1&{pUU++%mW*5DCzAU2Q{pO9bVs^IGe<v?}^zr91Ikn#A|FU}L{%+U&_x?&n
z()X`^kDh(Wbe9Uw-ViS){8yv5I`f?T>|DlmA_>bQST4U<cX55i%wtKjKC5olb@<2r
yC)tY0r9r`gg@aV8gTb+ZLjaYU^?f}9GsB|HBh&pj<V%4Wn8DN4&t;ucLK6TEKe5XI
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/default60x45.png b/webroot/rsrc/image/icon/fatcow/thumbnails/default60x45.png
deleted file mode 100644
index 145ea1eb636ff821dd906a27ae559c9844618868..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 762
zc$@+H0tNkvP)<h;3K|Lk000e1NJLTq002Ay001or1^@s6@^%PJ0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!oJmAMRCwC#nZ0h*KoG}g*6ZU=fg@Ld
z0wM)81S&d;gdP+STta$?s1X$uNFYQ<$qVoRr<e;8(Bv7QMT!s-O(GBw$R$y@*vpK+
z8iF|M#%Rs$SR>2w-fDjS&y06{XpDhTGIYQW*a16W2ke0VGhjs26OUeYw?mxmhdf{L
zIX#6?gJ}8d<15$ca&NyeBI58Q!#dfa=7U#eSX){BY{u>d0rQs?s}{<XdZH}Ai+AgQ
ziRuGA?1;`+rzQYzFM)YF51pGc?RgV)cAm^F(5+B9rIl1^WNGZtj6S8O9>9}vStJTp
zzx3eJ=_3R^-EQ0sI)75y2H@O$3S1L~@8MrP9;a0P$j0k6c)Ru;W~Yvp1}zTkQ7RYp
z%vudiUV}F&bg($nrkWOo76Z=ur$@?h$1UP%K~s7wIMF-+lg$RD_ZD2F^j^Moq20RQ
z?a~O5exs!o)}$CWEFAD5Wdh%rJ_UH^Ipja&n^6=uvcB>!(^Z3f(>h>QY*1jfhz5S#
z*oJ2d=VIT_!YIz4x}CsS3|P_F_1-S5ZSKbE<^rcRa(=Rvl?z&#(jL_zV$taEx3yVW
zOJ4aJ_E1C)BO~a)Nog5isEEQUNlyu2tct>;0c;>&ON*PSKn>e!rPZ*|7OXloJTkzV
zia1_02y`thp*+NaYYaRRT{?|!<^894eJo)SWy;*y<D%qRm^azurW=T%6eifv$k(!X
zN@IRV%v6D<W%w||>k@xfEn!8iLAZz+HWb+FB*5}7C^29^-4<Rub4*+no_ohO;4uxo
z!w+8{?DOXssm(hk->!M?A5wWJ^xx7rolcUsN_c&8fZxbJP^=ra0Q)R5uRBUw^Zz8@
sqFDP@09VNzumg6$4%h+PY`+8;0Iwg8LNtyxvH$=807*qoM6N<$g3|6-kpKVy
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/image160x120.png b/webroot/rsrc/image/icon/fatcow/thumbnails/image160x120.png
deleted file mode 100644
index 90cc11c02d86c9654463b2148399cc4faa998ed6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1459
zc%17D@N?(olHy`uVBq!ia0vp^3xK$SgAGWQF8Y}dq$EpRBT9nv(@M${i&7aJQ}UBi
z6+Ckj(^G>|6H_V+Po~;1FtCPtx;TbZ+<G(je6~!e%z^#y&z@7uRx&&2ESk;nMZ?K)
zFPCkYa$MDi5Rum>>mA-6Y;H2|ZxX-lEqbt-_3=?Tk(P$`0PQZ;g;F`py+1E5xjA?4
z85^J>vs08k%bPk`f7U$Mn4eyD|Ip*f@4wgHf0NQ%?8hJ{GEI|#1qd8~fI<cy$shF>
zlen~c3}4>l-?#7beJy#-Q=d-Qsc#I6x>o!3=xzOdZ|2-~a#$gGI%J>!eM{xPPV;}p
zZ!~SUsFGPfw`0$ze{Z;dty!Ea%eZjaTjl%Cw`TqhRtb%KqsSGps$u80%l=(QIIO!G
zICfZj9KHWe?&8#sOXbB?d9_m(AI#p~sn)W&`R|4Db?4?*|N8OZxkQ=_<M(+YzLRyQ
z=KuQm_|fK#@he2XN}Zcuel=OS`B8V>?yVBXSXpH3G{c;(T&{BLaa;HK9q-I3@`rY&
zR)*Ob%IBZ9*t270l&#*IHqD#f4v#M{;oST=sxD6L^Xpm8{jJY_um2V=KK)16wn?w*
zbPWSD!h5-04zvjd{0%;-_N!RxkQ)1=*l4xWmKz^eEs^=bZN_Z*Q{LMpyR(6#V!{>y
zSFgRrm4Qzag~J>Den%bs#k4eZxj=B~owwUvHf1ZRryc$AecH#6o`z{09$a}cjIp7-
z>u)^|IpmvLnKS!gMD+QkhG&;$E!th`cxtP5P#X86x_ZqMk>bX>N(xM7N8evi-F9m6
zVyTV$YThhbqvqfF<z36O-~VRVPj~xyDP+n1KQl$vDZAdBxTo6L=f7LWf~_rjebGio
zmpo8&?Fc{Sejw&|_%c0D!OQ87R^>{(US+x{U)$XNijVE8m)Bap@7$!jcj;-P%1^N$
z#c$WVDs>WUYVh6W`^t2|YNa{x|CZ*ZPrh|zt>}E~JvH2))0gfyT>tlDR_%-Ug{q(K
z9z8uN_m7UcU#;G@HOD?begt&v?Y4;;3*MaA?j2$~aYe)H`dW3*-+@!lywR#ZZ8SCK
z<?VvE;T@nL<9Knjh}rdU9MdoHU#78&vYMag%?LBO6f82Us@lqJ`J{Dm%xW$UT@w^{
zyyeJn7TlQMecRytoPVK{CT6}&%Qh-4H8#2b{rDeC>26W`IN8WXjvec3zV4el!!UFC
z)wIpGk4w#ObH5~5`R|PRq@K>0-BzM~=jTLEcr<U>!?myWddi%?ra5<|+kxMHUFS~y
zIII3-dS`Im`O0`kRS{7&iEQh|lgd}W{PXfx&y>4yH#YEXJpb$Cv(h`FYT}ITkJsOq
z`n}=HX2Gw=`T8T5?c%$>KYDFOPWb%vw;Ag=mu`{QPh{+9@Lio?>b5CIo9jly9)aSA
zDKFBbYjs`Nmhevhq!VhuWVXI#?vzV=uU~zTHe2`Bx8FuiKhk_9j~%vW$<axemVe^Z
zt+!qW>Z9+hXsEMcaXFy4D5U@2zux|PF?L_7Cv{br9tmVqeqgZ8%ks<aM?8uGjO}8Z
zH*#q5M~iLV{JOt`W5@TD8*{(T``d5F&X_p6%-byO-fY?L-`~m|wbHF=bbMO8_v-sr
zZl$YpEW(Zi@)i5YFWc&S;$mI;f%{K)E_us8_jf7K(x?L=^2cfvY+fZrNBc)l|Igdp
v@S!2ml!pTd8i0U-G6qh`f**f$4>0h5tH?=k_Wcbkg&90u{an^LB{Ts57wL|o
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/image60x45.png b/webroot/rsrc/image/icon/fatcow/thumbnails/image60x45.png
deleted file mode 100644
index 9077e69586e8686ae34e77307f1e15c5d6c5b0c0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1179
zc$@*71Z4Y(P)<h;3K|Lk000e1NJLTq002Ay001or1^@s6@^%PJ0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$JxN4CRCwC#n$L?IMHI)sulmRAxGQD{
z4~dv83pt7qP_IIc(Un|s@Dvo|DgQuX4jvS|c@(^8E>Q#z23#-Zpdc)GSYkrNfDm0w
z7P9V->||%Ud%DW^s;W1$(M?vSmT5>AJf^05`b~Z6{is(pL&g|9NloDiYYlJ%+yFPg
z4R8ZoqZW^<fQXV)AANT>ALwUFt@mx9ky412`S$Dcub<>%X)rcmZj%|qe(~N3<R!n8
z!i@rwdVOgGy!qk$Yy7UwvN=xRR4n@xcNYEv5+0li2&@^nU^#vS@E$ZVZeUd9c#AW_
z#b1_@*vvp|oSo!k&Gr9k_ktNuzj$!?duXgNyh9ngUCgkv&mDw#w**>Q#h~0b?sZQi
z_8<EF_OjJmo20cvnS!+{=NAxL=8Sn49sF$Xt>R^TMxSoOKRy{csr1%zS&B*Aj;z+V
zi!<mH*VrcySdso)`8zO?WLyXFD2d2VpmBO@Y+>eQsOfxxP1G5(XNrzqfSTefdT6F;
z$j2WFaizjrI4E$HofBa!O6S+)qu6ktv#cbvxN<FW9dqX#kX;21&x7Py?QeMths^pa
zxP^_&*6ZpOhTdW+ylmNPDc?)H+a^qIZeM`jxD1^w!Tj-tos25^#j3_Jtl?r)d~$*<
z^39>ou^znu^zT}czFd=giHA)RAYc6wrD^jT+eXp53CeF;52>Jy*Q;w8!{mU)!Ugv)
z&s;?5-7zw5SyINuxX9YAkJ<Al*nP=9XLO4G$|ZD;z7HuL#gz?enzX2jVdE?);hUHT
zMG5((Mtn+OmljVU?=EtG%Eh;Qf>Zdt<x9xAH*omaS5VsN6TMVd3k#nG9;(0|USA^y
z-u(MVMCr2(MLW{7)(NteA8hT6x?5O4%utf~&l6yBF<J5+Ko@;b>}Nn)S+XnlSx4JJ
zRxuofvv9DaWwtG>Y|`0P{Ic}Y@!t@&X3@(wFmq+giuC20+*3ZeiN4BnYGdJQM`#NL
znnaqo;$pWmesSwo(!#4JzDG0(T)i@5ug{%cLV2Ivdf=XoygpThNbO>nwN2f69=}c>
zlNw`JVAv!?c7{}Yf|nyVjO*9tpnH8=pjg`~(YMHY*XmhmN&QReY2;ap$EzN16LNKB
ze$Pdg>hb$5^)p2_)r-EUwzae!ze1J`Jn&vNyd~(uQQOVBIVY~6NwTG>s_*8(#hFI$
zevgf(_7-%zZ655-OIv**PmF>CXGIrl8+RP=$R{b<>Z=`am7L`K>65do!O!qYUu}i>
zWjCmWr44lWQ%kB_3~wLB@T;c4Ge{4rqY&UhfMcchXM_ES?-?s_8lyY+!Tgk*8}G+I
zDC~xVVNHMir%?+o8udROM09{(W?7~KNAJJV1Ir4_pFHNxaRPJYj7fV+x4%sW%5^7t
tqx`l+&A)gW;0Cw>Zh#x$`m}!p7y#Z%ch+0IL<|4`002ovPDHLkV1o2xKfV9}
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png b/webroot/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png
deleted file mode 100644
index 20f08f955bf72d402ad77cde599dec462218ba4b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1654
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
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png b/webroot/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png
deleted file mode 100644
index 8a16eaf488e00f922e2ce0d77c0f6ec43ba311da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1378
zc$@)Z1)chdP)<h;3K|Lk000e1NJLTq002Ay001or1^@s6@^%PJ0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%1W80eRCwC#T3cuwRT%!x%+Bs)w@F&G
zx(Q-zOubS;TT8<R6G9)9il7aaCRM5^3Z>OP7(~*v7V$+2foPG6FPdZ%n_GnlQoKMf
z+L#hrq7+e+wp5a?O`6*#o!y!7KeMxI+-{m(XVab7{o!MVGv}Y3@BG(u5~k}qZY2?L
zi%FJnmT;Ev(iVpmWyYAJqpPc%ZZ_$fhSc&spUogJ231v$JYQ8+MFZiaG_6z?uKZs?
zl1qejt1>b&qBr~fo%B9&vA@}2(L?0uY7Y*b=N3<Cp;z5ggr=4jY^$zDWktoaO@4pd
zwyj&Y&|}rEG0dXQB?y86Q4|+MbguCNx{i)rh1csvWqJALFFHCd(y(Ovq{XevN$~4J
zh|V+gxSP0KxE%Nk1qB5tD=jT(Yi}P~EYfKuoGPN?a!JUM<rwKFe7-`m^rDbX8(~r8
zZpxB}$YQx#6diE8Wi0b}V(wjDR#r#}@lv`;J1oD!Oj_|)ThJpAnR{PJ37T75!R8bz
zjY`}Ll*mX{5<G;f_8}Z|X(1)TG#gXXK|H>0oq<H6MHbU(FAK-TaMJTBaZQIp2oC%L
zZFxSJ+fBtt1#e)uc<;O;<~_EIVcs#N1YV-tIdGId4Qb~)5M54)ysVk9Wov20!j!3i
zZ;t`nsn4kN85RdGS5{lcn^u-6>oOrpP)0ZAbJBdFemWZ&i#=!dCoH5=gUu|>N>%}<
z&wx!%MhHh66Sf2hGbWmuI!SPyRYgE=KXBWMIDOInF`T+p%*JE=qyJbn3cK!y<C9j3
z3X#kG_flIi5z)U1gwyBJ0!s}J(fDz-tsC0mFO7R9IbzS3#BM2R@C4<Qp!FQ3#8nJo
z!&;~fhiJ@cECgFbD`zH#1<}aT%Kih8Uf&K!&1MAiiy`fJnQxtdYf5yJZRZ#k&DKAO
z*d<FM5P;U(2kB&wQIDniw=nad5AJg(z&L5%OFO0iflG^#*uD0~9=P__8ZD-AR`hNy
z#Ip4WuBm`Nc-|Nb=jYkj!n`}uldvwuD6Whm?C*d_5140{q)HnH*PE{)_~H&s6+Z-Z
z<5So$HHG07tG^Ltr-xR?71Xr@MSl)7aN}p3ut;R|g~*DcL2i2Y9?0+4LHm6W%AwB@
z{_!-}%G)76uo~`98w@XC-<?G6dmmt!;lioeiO$~8%x`sh-rb~rkT7fSI?R)g*;0o3
z`k^$nL*7>lZQvYo$d#EaU$64mBlz042EFB*nqJNKKDklOdu3cx`^*!N3=%ep@`JhS
zb~$qwAsj~d%m8M0)gjma30zyANqm43>%qt&rh;fx#`_xs<HyZ|08TWV(WE8JDIJM7
z351~w2tM}`aO@Nu6vOk8#T>F+B*iFClY~)1fG|c-GMcoQu1|J$cjp?%F>@_Ugf&Tm
z=h849{^&EDt=omtoqO@ahx?#>)kB{h;)hrBdW~^*9U&XyVV}0pv$EMHD=w!?adl0N
zPf?VAy(p}z+Qdvy?K=MJ$MtvR)xWLh>_0ko`QYL5wLd#`-RPQc^lqoq$y%D5Ptffj
z@rQVpzS$ySo<MTVlSLsxIOdJZclU;t<*45)!N#hIi>;=MCR0{4)3Q-3+k$X3?1Xs;
z=MxIe%*w5Fg%FI(O*bN}C2HTSd~-U=6907-iT?mLVUF{~nBfhUm8K!%F}xHd`!5e!
k!db#u!db$0mcIoU0Lp_RQgVwEW&i*H07*qoM6N<$f~#YcIRF3v
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/zip160x120.png b/webroot/rsrc/image/icon/fatcow/thumbnails/zip160x120.png
deleted file mode 100644
index fbe19e59f601befc61f4eb320229d6748236e536..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1383
zc%17D@N?(olHy`uVBq!ia0vp^3xK$SgAGWQF8Y}dq$EpRBT9nv(@M${i&7aJQ}UBi
z6+Ckj(^G>|6H_V+Po~;1FtBoZx;TbZ+<G%NFkd88q~ZLTobvSTS%Hr?>GHcZz2HBP
z;G<%v?Dmp-VdokV;irx2$w?Ix#pN%|S6KMcNt&bcW&8y8dIlz531(Hd1n=#knnGgb
zw$IPKx%BQ_TKP$V+8_I#JV|?hX4}cL(~IBjH1^$_wpo+mzo?xz0|yW^00D&zoRSl)
zB&R*#ocFx-{#jj}T=}U<n=ejSQvdixCd<s8l+BSJYvbjvzYe;dape2&dFt2y<=nH3
zn^)s&Z|C#N_D{11%bTO!x4F+gdeSccb#Gx-)+x`52M-)?ZZChoEc<HK)-Nxv{EYXn
zsXCxib7WIc6MO2KsdMx0#7vs)y?s~G%WL^X<v-`u6g}xkF%do&s#Uao*PC^c>Cc}p
zjnFxj{{H>UAHRNoHZRdSy-Df8f!7zc`oiLLn-pGf%)R{c)R~^CIhw0G)>g-MUfZ~B
zm)g=GPt_W6PQec=zc>47Nl#v6WBc~q>N$3MBOQ7TrcYj#cJkxLLKT+-%f$^Wl{C{s
zZ605Ec(`oy?CgoBdp+!UZVT1z%RhglGuWe}!8u{+weNe^UC?@SY*Xj*Gg+E^kFwVt
zF1>%&W1+yQ;>C;K7S()d{;sxf=FSA^qZ6(!<$mXTr=>zRa_wf5*%d!)?se|?cyF$C
z*@-(li!c3J_SeLE(a(t8&&;={Y>QgHws3Z<+W|Y(8~!2&T2lM8_lk#@2p4{TxBcrq
zhj;(C>gB(^^;D_TP35};6VT7q2iE=EaVP8%Pld+02D9z|zBBJ!e=*B#QHxaSl}p!>
zw0CcMo5*i*;LwZ^PC*ZoY0DSeF6flFu}56?e99vZE2a|-D^ne;`E9JNwHKD{DwBB}
zz4Kb-`iXnepInrdET~{))}ORWx#n%3@l8S9{jA?rQvRKh{5z-cv*-8S95!MijP3dd
z=cYH*&H1Yr|0^=@e&n=j?d+iFzs~Do_C0#`w(8Q&h3^#=nD}Cwns*4_lW0uaE4Z`l
z?=I`to1bzwz1VzKy<Yv7+y-_TE9SDZk<ANd=6!q>YFYMX#h#6yOQ*gU-}&RQ>&!d*
z<K<qLT7PCXO33o{NRL<<8xu1{e4hMd{e6E<^?tkgtlECxVwTB_?V=a_-!+_7ot(RL
zn^J4dz21p6A4?t0SbQ{@zs=el6cfGDQ{vg(8+F2MIqePSOZX+u-~4#`)vZ}i4$YB%
zTm0LKNhu*Jc0<XZ(2mkAZGU||)-Gd8b2ew&*bsPp_K(XE0W3c2S@!?AB=)vNf9Iv_
z*!SCVg=@VGfN`*a>DJ}$KJ^UW^_u@z6sY^x-7ejK_V(8$&ssP2G&m>gOQ_f#48162
z`>ghK$-RV|A_4_3gzlVc@zfWu*vp?FAi&sesQ)UXw0`=vXq{X}K|#jf5A!R^_1~U(
z`Z-R4>D%IUdynvQbI+@;wOjlB$0PHkSJ##vc((Lm>Pg?FpF(BtUEEMSb<69ex?kQ)
z*}t5nzws8w43z}O_HYxo`4`tmT#vYBT7Mu*S>ccTw>vtF3P8ZX1OyZ^a7jA6`lEe-
ZA?l&&2?dA6*MTJ`gQu&X%Q~loCIHoEYfu0H
diff --git a/webroot/rsrc/image/icon/fatcow/thumbnails/zip60x45.png b/webroot/rsrc/image/icon/fatcow/thumbnails/zip60x45.png
deleted file mode 100644
index c66416c31882ee3a2fc2320e99d8ed26e8d0524b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
literal 1078
zc$@(?1j+k}P)<h;3K|Lk000e1NJLTq002Ay001or1^@s6@^%PJ0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#*hxe|RCwC#nNLp>K@`B>%r5P=fTAX~
z$jJop3t;fZAHC_NhL}Ji6*zg|WK8@D`XL}Ke+nT&y%?_Y5fEs^1Ak(o1zKt-npoQP
zz1eM3+O3i}tGi(*c^UT2>~?<p-n{o_VY;rvMQR)_So45AU=P>>_JEz-R2dIpjHz#y
zmy`I%1HDuNtIW<&6jcSE&j*}yI4u;QfKoE&bH<=pEWUj_I5>!xr&hlsrDmXq{H<VX
zMPU6rZD?pnk4B^VyOou?v2;4E&n6N}^lt20t1Oq+%5Q&rXBT#M_v&PK?=z$i4&mwe
zIH+jp*?1h%`v+o-+RWS>ghC-0=<AEjBod2_pq;XZS=rghT}c#0sS(tnK0Y-?TL7X6
zUY;u+fPMBT2jOrS26}sKgO(n&2!<f2x02}Cn3xxzoIDFmZsPaDK6*iWd%JDWwg6j;
z@e*PPN^N9xlqL&Zx%vG~5YV&=^gVR%+4*^?(9(g)bvb8sf?h59D1l;&p=&GVm<UMX
zUKN5t4O*I;EAD;2zdw>#SV+psD5^A4Gib3ItJS(Xfd&Er0bV_~tFsf(noz!zo<=F_
z$?!0xvWIvXKsj~}a0QH80vpc6g)1*27=icn+{L*H<d09_PItEut5z~zrsh!K1{OBm
zH*Q*Z#I!K!PJVocJW4ruRTmlI>!GsuFh}lTs+g=q0i%zO8GD$(71A>!U8$xhHR8z9
z^1K$Nd^{72frgQo(i125M?EW9?|C~uKgmx^3Ns*Tgk$tpeVBFvK~ZVVO;6*sD)d(K
zg(%GVz}zASbJM!(Yaigt*8@1r<S^}ggN^kKp{H@H+|8K_fGO%4k-AzGv}zN4+}aYk
zmVQ=IjBC<c-(%e8_&sc870SOVS~9h{2@?~~;C9z7g#84o?^oebBm$>6PC3_=9{?Ja
zmgKsrR0=M&UWVr{UW%TsN#D2}WiE))+&V(j+6gX`%|H<IF!ctkIS%ZfSlE`d)JR9J
zoy}x1Ed@khIVss>&HuNDO&z79qg)RBnqTyET^VPtwXkBA{%7lJFu!SKvk2_dM6Z~@
zMnr}NU&37M($}uGVWeIYu1rz6qvOUOT-pu5R2|h+ggVoqh=8wNy{?;2dK$M1cHo96
zO$P$Y3K+pk4fLEW$<F63u5jt!ephCV6Oyxmt5T1wQ%(g~BDgeQUUhbrZ5b}{Tr3S3
z5%WvQWQ+J5BkLS%o|y0j=B2GuhWp`y+OWHca>a&RLJK@X*~YczoC4g0T{DW$rUL0F
w$_cKu;0RzhHSZtd9<T@O0eiqsZodQ=0I=oF&Dk;s9{>OV07*qoM6N<$g2S-(b^rhX

File Metadata

Mime Type
text/plain
Expires
Wed, May 7, 1:46 PM (2 d, 8 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7431320
Default Alt Text
D12807.id30784.diff (25 KB)

Event Timeline