.docs, MINGW tls patch removed

git-svn-id: svn://ultimatepp.org/upp/trunk@14420 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2020-05-01 17:02:25 +00:00
parent 11b493dec7
commit 86174fa387
19 changed files with 146 additions and 210 deletions

View file

@ -8,15 +8,9 @@ namespace Upp {
#define LTIMING(x) // RTIMING(x)
#define LHITCOUNT(x) // RHITCOUNT(x)
#ifdef MINGW_TLS_PATCH
FastMingwTls<bool> CoWork::Pool::finlock;
FastMingwTls<int> CoWork::worker_index = -1;
FastMingwTls<CoWork *> CoWork::current;
#else
thread_local bool CoWork::Pool::finlock;
thread_local int CoWork::worker_index = -1;
thread_local CoWork *CoWork::current;
#endif
CoWork::Pool& CoWork::GetPool()
{

View file

@ -29,11 +29,7 @@ public:
Pool();
~Pool();
#ifdef MINGW_TLS_PATCH
static FastMingwTls<bool> finlock;
#else
static thread_local bool finlock;
#endif
bool DoJob();
static void ThreadRun(int tno);
@ -43,13 +39,8 @@ public:
static Pool& GetPool();
#ifdef MINGW_TLS_PATCH
static FastMingwTls<int> worker_index;
static FastMingwTls<CoWork *> current;
#else
static thread_local int worker_index;
static thread_local CoWork *current;
#endif
ConditionVariable waitforfinish;
Link<MJob, 2> jobs; // global stack and CoWork stack as double-linked lists

View file

@ -327,14 +327,7 @@ Color DarkThemeCached(Color c)
ocolor[i] = Color(255, 255, 255);
}
}
}
#ifdef MINGW_TLS_PATCH
tcache;
static FastMingwTls<Cache *> tls_cache = &tcache;
Cache& cache = *tls_cache;
#else
cache;
#endif
} cache;
#define DO(i) if(cache.icolor[i] == c) return cache.ocolor[i];
DO(0); DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7);
cache.ii = (cache.ii + 1) & (N - 1);

View file

@ -171,33 +171,4 @@ void EndianSwap(int *v, size_t count) ENDIAN_SWAP
void EndianSwap(int64 *v, size_t count) ENDIAN_SWAP
void EndianSwap(uint64 *v, size_t count) ENDIAN_SWAP
#ifdef MINGW_TLS_PATCH
static int fast_mingw_tlsndx = 0;
void PreallocateFastMingwTls()
{ // preallocate "simple" tls entries so that they are not used up by other code
ONCELOCK { // Preallocate
fast_mingw_tlsndx = TlsAlloc();
while(TlsAlloc() < 60);
}
}
INITBLOCK {
PreallocateFastMingwTls();
}
int FastMingwTlsAlloc()
{
int ndx;
INTERLOCKED {
PreallocateFastMingwTls();
ndx = fast_mingw_tlsndx++;
ASSERT(ndx <= 60);
}
return ndx;
}
#endif
}

View file

@ -322,50 +322,3 @@ inline bool FitsInInt64(double x)
{
return x >= -9223372036854775808.0 && x < 9223372036854775808.0;
}
#if defined(COMPILER_MINGW) && !defined(COMPILER_CLANG)
#define MINGW_TLS_PATCH
// This is hopefully a temporary fix for abysmal MINGW thread_local implementation
// ALSO IMPORTANT: There are some mingw/lld issues that prevent TLS stuff to be used in inlines
int FastMingwTlsAlloc();
template <class T>
struct FastMingwTls {
int ndx = -1;
struct TEB_ {
PVOID Reserved1[12];
PVOID ProcessEnvironmentBlock;
PVOID Reserved2[399];
BYTE Reserved3[1952];
PVOID TlsSlots[64];
BYTE Reserved4[8];
PVOID Reserved5[26];
PVOID ReservedForOle;
PVOID Reserved6[4];
PVOID TlsExpansionSlots;
};
force_inline
PVOID& Slot() const {
#ifdef CPU_64
TEB_ *teb = (TEB_ *)__readgsqword(0x30);
#else
TEB_ *teb = (TEB_ *)__readfsdword(0x18);
#endif
return teb->TlsSlots[ndx];
}
public:
void operator=(T x) { Slot() = (PVOID)(uintptr_t)x; }
T operator->() { return (T)(uintptr_t)Slot(); }
const T operator->() const { return (T)(uintptr_t)Slot(); }
operator T() const { return (T)(uintptr_t)Slot(); }
FastMingwTls() { ndx = FastMingwTlsAlloc(); }
FastMingwTls(T x) : FastMingwTls() { operator=(x); }
};
#endif

View file

@ -73,11 +73,7 @@ static void sSeed(uint64 *s)
force_inline
static uint64 *sState()
{
#ifdef MINGW_TLS_PATCH
static FastMingwTls<uint64 *> s;
#else
thread_local uint64 *s;
#endif
if(!s) {
thread_local uint64 state[4];
s = state;

View file

@ -326,11 +326,7 @@ void Heap::Free48(void *ptr)
force_inline
Heap *ThreadHeap()
{
#ifdef MINGW_TLS_PATCH
static FastMingwTls<Heap *> heap_tls;
#else
thread_local Heap *heap_tls;
#endif
Heap *heap = heap_tls;
if(!heap) { // we definitely need a lock here because some Shutdown can be in progress
Mutex::Lock __(Heap::mutex);

View file

@ -433,69 +433,6 @@ CharEntry GetGlyphEntry(Font font, int chr, unsigned hash)
return e;
}
#ifdef MINGW_TLS_PATCH
struct FontEntry {
CommonFontInfo info;
int64 font;
};
struct FontInfoTls {
CharEntry fc_cache[512];
FontEntry fi_cache[63];
int64 lastFiFont = INT_MIN;
CommonFontInfo lastFontInfo;
int64 lastStdFont = INT_MIN;
};
thread_local static FontInfoTls sFontInfoTls;
static FastMingwTls<FontInfoTls *> sFontInfoTlsPtr;
force_inline static FontInfoTls& sTls()
{
if(!sFontInfoTlsPtr)
sFontInfoTlsPtr = &sFontInfoTls;
return *sFontInfoTlsPtr;
}
GlyphInfo GetGlyphInfo(Font font, int chr)
{
FontInfoTls& tls = sTls();
font.RealizeStd();
unsigned hash = GlyphHash(font, chr);
CharEntry& e = tls.fc_cache[hash & 511];
if(e.font != font.AsInt64() || e.chr != chr)
e = GetGlyphEntry(font, chr, hash);
return e.info;
}
const CommonFontInfo& GetFontInfo(Font font)
{
FontInfoTls& tls = sTls();
font.RealizeStd();
unsigned hash = FoldHash(font.GetHashValue()) % 63;
FontEntry& e = tls.fi_cache[hash];
if(e.font != font.AsInt64()) {
Mutex::Lock __(sFontLock);
e.font = font.AsInt64();
e.info = GetFontInfoSys(font);
}
return e.info;
}
const CommonFontInfo& Font::Fi() const
{
FontInfoTls& tls = sTls();
if(tls.lastStdFont != AStdFont.AsInt64()) {
tls.lastFiFont = INT_MIN;
tls.lastStdFont = AStdFont.AsInt64();
}
if(AsInt64() == tls.lastFiFont)
return tls.lastFontInfo;
tls.lastFontInfo = GetFontInfo(*this);
tls.lastFiFont = AsInt64();
return tls.lastFontInfo;
}
#else
thread_local CharEntry fc_cache[512];
GlyphInfo GetGlyphInfo(Font font, int chr)
@ -544,7 +481,6 @@ const CommonFontInfo& Font::Fi() const
lastFiFont = AsInt64();
return lastFontInfo;
}
#endif
bool Font::IsNormal(int ch) const
{

View file

@ -102,8 +102,16 @@ TOPIC("install_en-us")
#include "install_en-us.tppi"
END_TOPIC
TOPIC("install_mac_en-us")
#include "install_mac_en-us.tppi"
TOPIC("install_macos_en-us")
#include "install_macos_en-us.tppi"
END_TOPIC
TOPIC("install_posix_en-us")
#include "install_posix_en-us.tppi"
END_TOPIC
TOPIC("install_win32_en-us")
#include "install_win32_en-us.tppi"
END_TOPIC
TOPIC("macros_en-us")

View file

@ -21,6 +21,8 @@ topic "TheIde help index";
[{_}%EN-US
[s0;= [*/R6 TheIDE help]&]
[s0; &]
[s0;l224;^topic`:`/`/ide`/app`/GettingStarted`$en`-us^ &]
[s0;l224;^topic`:`/`/ide`/app`/GettingStarted`$en`-us^ &]
[s0;l224; [^topic`:`/`/ide`/app`/GettingStarted`$en`-us^ Getting started
with TheIDE]&]
[s0;l224; [^topic`:`/`/ide`/app`/PackagesAssembliesAndNests`$en`-us^ Packages,

View file

@ -1,10 +1,10 @@
TITLE("TheIde help index")
COMPRESSED
120,156,149,86,219,110,27,71,18,253,149,94,80,94,36,242,136,234,235,92,72,44,144,213,197,119,41,130,37,195,192,18,148,217,28,54,197,142,134,51,220,158,166,20,106,17,63,228,103,130,252,66,94,141,252,87,78,15,199,34,237,60,44,45,66,67,78,79,157,58,85,167,170,186,103,80,240,52,237,219,132,202,190,102,73,255,199,172,255,241,227,199,110,150,241,62,217,219,99,17,237,48,42,5,227,140,73,74,37,79,152,202,104,166,82,150,82,145,72,174,18,170,122,11,237,244,124,56,208,169,232,239,191,141,129,226,64,9,38,24,101,49,151,176,162,130,114,201,184,98,105,42,89,162,82,145,197,113,47,215,11,111,171,114,56,24,7,28,80,34,82,29,154,164,177,100,192,72,197,69,162,36,176,82,50,134,223,76,37,113,146,244,188,245,133,1,134,197,73,95,75,222,63,6,80,70,113,7,193,241,4,72,201,101,44,69,202,5,75,57,143,51,33,51,137,168,25,239,89,111,16,227,24,144,0,3,74,129,78,42,201,4,69,94,137,18,176,74,240,45,105,198,56,56,83,170,
20,232,204,207,126,56,104,20,10,226,0,22,131,140,39,42,24,167,50,101,34,73,185,228,49,7,61,77,144,97,224,86,189,137,169,115,192,4,103,125,143,128,250,199,63,168,62,3,56,129,48,156,102,148,199,73,6,62,132,138,108,69,150,49,145,130,79,50,69,153,232,229,213,36,100,200,21,21,129,48,5,38,134,227,70,15,21,51,132,203,69,10,198,132,9,129,171,146,105,210,171,77,40,130,175,220,112,176,255,195,119,180,75,187,92,169,239,129,206,34,70,59,169,144,66,200,56,147,140,10,176,192,135,12,98,197,20,101,100,138,167,189,177,174,65,233,101,80,245,248,41,99,73,40,61,13,80,8,47,82,37,64,31,227,130,154,34,71,1,117,120,38,83,33,82,218,203,11,93,215,91,18,237,135,60,25,139,24,235,36,65,89,37,184,204,130,62,130,67,98,30,171,140,65,99,21,75,202,123,206,252,119,105,157,153,155,18,34,91,176,247,63,215,167,237,194,176,20,220,241,136,113,244,161,138,99,26,20,83,104,6,46,20,36,167,44,149,8,8,31,148,216,183,141,216,52,
71,104,12,38,34,38,58,25,151,2,113,100,82,66,3,224,89,198,24,163,41,62,200,11,202,52,173,193,208,191,109,59,49,25,49,217,73,208,183,168,80,38,3,105,38,130,112,28,186,243,152,42,20,128,175,81,60,200,205,247,32,56,227,105,248,15,146,51,21,49,213,17,136,139,41,133,92,5,36,230,41,242,85,208,92,52,61,205,146,180,119,110,238,235,19,237,77,219,39,251,199,123,141,234,113,196,226,14,13,104,149,102,40,27,147,65,49,33,101,198,51,33,20,207,148,136,41,148,171,151,133,111,161,97,128,154,225,107,93,36,17,75,48,73,200,78,41,228,219,128,144,107,194,66,24,60,205,226,144,119,235,98,116,80,216,50,196,128,110,232,175,27,96,255,177,3,210,72,118,210,52,166,34,131,14,72,159,42,52,55,134,63,69,97,81,87,142,206,15,211,159,223,234,27,51,58,104,71,19,64,138,150,165,255,231,175,119,98,166,186,201,225,127,31,126,121,114,122,126,240,238,146,12,106,218,255,23,25,236,31,98,23,185,154,153,151,39,167,100,102,138,197,240,159,195,240,
132,172,191,10,208,246,201,224,218,87,11,155,143,122,163,195,209,161,157,152,209,161,94,44,70,135,207,141,247,182,188,185,244,218,121,51,25,237,153,114,116,176,172,175,73,187,78,234,245,3,114,111,253,172,165,24,238,224,246,98,157,99,253,239,186,54,243,113,97,241,171,156,156,155,218,215,27,138,207,54,17,217,88,17,93,78,72,99,183,11,203,113,85,78,237,205,210,33,208,191,19,110,136,182,204,30,73,27,162,141,241,46,108,176,182,181,223,184,109,239,159,142,158,238,142,190,208,174,54,238,4,51,156,123,123,135,32,63,252,221,27,25,29,144,69,99,71,38,143,134,187,80,28,21,214,63,108,226,59,122,243,242,234,63,187,224,158,217,98,91,174,112,75,252,106,177,27,233,107,179,218,194,134,187,157,40,11,125,179,5,59,90,218,98,66,166,97,113,23,244,85,179,248,136,94,223,238,88,135,185,206,93,181,69,125,214,220,127,67,79,95,153,249,162,192,54,180,229,227,93,225,237,28,75,77,245,46,92,245,19,138,70,30,237,118,241,253,50,175,202,147,109,151,97,129,224,
84,180,55,165,113,187,120,168,23,38,183,186,216,120,184,92,47,144,169,209,126,233,118,108,241,201,157,46,115,51,121,107,16,122,110,182,122,189,125,128,230,192,220,132,217,105,77,118,235,175,114,18,154,106,187,197,202,73,179,187,132,24,167,54,39,211,208,115,182,36,126,102,200,162,21,240,187,134,43,0,191,223,133,197,206,23,149,11,175,31,27,154,245,82,23,107,97,166,214,119,129,182,176,99,167,221,215,99,191,3,199,114,126,187,85,245,179,215,193,109,94,205,231,65,144,112,44,144,113,104,228,221,10,182,196,229,209,87,23,119,107,17,166,149,67,43,133,210,231,206,174,95,248,190,49,200,99,244,115,125,92,205,91,247,55,99,132,90,135,180,219,19,66,99,243,35,141,17,57,49,119,166,168,22,225,125,2,83,84,21,223,74,133,77,221,85,118,114,180,206,122,147,206,251,202,221,6,198,230,212,104,141,190,210,134,124,249,53,216,151,95,142,209,164,42,43,247,185,64,100,112,200,16,190,46,111,201,170,90,254,227,75,23,79,14,200,224,201,147,253,235,153,247,139,117,128,
229,178,40,22,222,141,186,101,49,58,188,38,175,116,249,225,189,45,80,165,122,24,129,105,203,242,254,254,126,212,189,51,55,58,159,153,186,30,117,81,204,107,242,120,15,235,51,237,114,72,68,46,117,233,43,28,85,39,186,180,166,32,175,76,253,233,143,154,92,124,250,221,153,7,108,95,238,38,60,92,153,106,54,171,3,200,123,114,250,96,138,34,34,47,140,27,27,231,3,176,48,46,34,207,181,115,43,114,122,103,208,129,147,8,177,173,200,107,215,88,206,171,49,26,96,182,44,125,176,59,179,249,76,131,233,232,97,130,112,34,204,219,131,38,207,180,215,51,91,232,25,185,156,233,89,132,237,54,8,140,220,10,11,218,35,103,117,73,222,2,136,35,181,48,63,147,115,155,87,69,93,149,160,49,26,165,121,230,116,249,233,183,202,214,228,249,187,227,23,167,231,151,33,31,183,42,200,123,196,18,72,95,153,233,148,188,88,206,23,51,135,141,60,194,73,108,139,230,210,56,185,178,243,202,207,86,8,5,132,171,16,251,28,7,233,89,126,174,231,120,143,108,209,111,186,228,
69,85,64,199,113,35,30,230,141,28,225,107,89,223,194,226,66,123,183,186,37,207,255,252,181,186,215,249,67,80,7,37,245,166,4,230,206,108,146,198,235,72,105,107,212,224,190,190,181,195,225,95,125,140,29,146,
120,156,173,86,237,110,219,70,22,125,149,41,228,44,26,135,150,231,147,28,74,88,160,235,143,124,214,174,17,59,8,176,130,28,141,168,145,53,53,69,170,228,200,174,92,52,63,246,101,22,125,133,254,13,250,94,61,67,49,150,210,254,88,5,88,11,150,196,209,61,247,220,123,238,153,33,7,57,215,186,239,18,42,251,134,37,253,31,210,254,199,143,31,187,105,202,251,100,111,143,69,180,195,168,20,140,51,38,41,149,60,97,42,165,169,210,76,83,145,72,174,18,170,122,11,83,153,249,112,96,180,232,239,191,141,129,226,64,9,38,24,101,49,151,136,162,130,114,201,184,98,90,75,150,40,45,210,56,238,101,102,225,93,89,12,7,227,128,3,74,68,170,67,19,29,75,6,140,84,92,36,74,2,43,37,99,248,206,84,18,39,73,207,59,159,91,96,88,156,244,141,228,253,99,0,101,20,119,80,28,79,128,148,92,198,82,104,46,152,230,60,78,133,76,37,170,102,188,231,188,69,141,99,64,2,12,40,5,58,169,36,19,20,125,37,74,32,42,193,167,164,41,227,224,212,84,
41,208,217,159,253,112,208,40,20,196,1,44,6,25,79,84,8,214,82,51,145,104,46,121,204,65,79,19,116,24,184,85,111,98,235,12,48,193,89,223,163,160,254,241,119,170,207,0,78,32,12,167,41,229,113,146,130,15,165,162,91,145,166,76,104,240,73,166,40,19,189,172,156,132,14,185,162,34,16,106,96,98,36,110,244,80,49,67,185,92,104,48,38,76,8,188,43,169,147,94,109,195,16,124,89,13,7,251,223,125,75,187,180,203,149,122,10,116,26,49,218,209,66,10,33,227,84,50,42,192,130,28,50,136,21,83,140,145,41,174,123,99,83,131,210,203,160,234,241,51,198,146,48,122,26,160,16,94,104,37,64,31,227,13,51,69,143,2,234,240,84,106,33,52,237,101,185,169,235,45,137,246,67,159,140,69,140,117,146,160,172,18,92,166,65,31,193,33,49,143,85,202,160,177,138,37,229,189,202,254,180,116,149,157,219,2,34,59,176,247,63,207,167,117,97,88,10,233,120,196,56,124,168,226,152,6,197,20,204,192,133,130,228,148,105,137,130,240,194,136,125,107,196,198,28,193,
24,76,68,76,116,82,46,5,234,72,165,132,6,192,179,148,49,70,53,94,232,11,202,52,214,96,240,111,107,39,38,35,38,59,9,124,139,9,165,50,144,166,34,8,199,161,59,143,169,194,0,248,26,197,131,220,124,15,130,51,174,195,127,144,156,169,136,169,142,64,93,76,41,244,42,32,49,215,232,87,65,115,209,120,154,37,186,119,110,239,235,19,227,109,235,147,253,227,189,70,245,56,98,113,135,6,180,210,41,198,198,100,80,76,72,153,242,84,8,197,83,37,98,10,229,234,101,238,91,104,216,64,205,230,107,83,36,17,75,176,147,208,157,82,232,183,1,161,215,132,133,50,184,78,227,208,119,155,98,116,144,187,34,212,0,55,244,215,6,216,127,116,128,142,100,71,235,152,138,20,58,160,125,170,96,110,108,126,141,193,98,174,28,206,15,187,63,187,53,55,118,116,208,110,77,0,41,44,75,255,199,95,239,196,78,77,211,195,47,31,126,125,114,122,126,240,238,146,12,106,218,255,39,25,236,31,226,20,185,154,217,87,39,167,100,102,243,197,240,31,195,240,11,89,127,228,
160,237,95,251,114,225,178,81,111,116,56,58,116,19,59,58,52,139,197,232,240,133,245,222,21,55,151,222,84,222,78,70,123,182,24,29,44,235,235,255,11,144,12,190,14,218,174,147,122,253,3,185,119,126,214,54,53,220,33,237,197,90,213,250,95,117,109,231,227,220,225,91,49,57,183,181,175,55,20,159,99,34,178,137,34,166,152,144,38,110,23,150,227,178,152,186,155,101,133,66,255,78,184,33,218,10,123,36,109,136,54,193,187,176,33,218,213,126,147,182,189,126,54,122,182,59,250,194,84,181,173,78,112,106,100,222,221,161,200,15,127,207,70,70,7,100,209,196,145,201,99,224,46,20,71,185,243,15,155,250,142,190,127,117,245,239,93,112,207,93,190,45,87,184,36,126,181,216,141,244,141,93,109,97,195,213,78,148,185,185,217,130,29,45,93,62,33,211,176,184,11,250,170,89,124,68,175,47,119,156,195,220,100,85,185,69,125,214,92,127,133,167,175,236,124,145,227,224,219,202,241,46,247,110,142,165,102,122,23,85,249,35,134,70,30,227,118,201,253,42,43,139,147,237,148,97,
129,224,62,236,110,10,91,237,146,161,94,216,204,153,124,147,225,114,189,64,166,214,248,101,181,163,197,39,119,166,200,236,228,173,69,233,153,221,242,122,251,3,204,129,125,19,246,78,27,178,155,191,138,73,48,213,182,197,138,73,115,186,132,26,167,46,35,211,224,57,87,16,63,179,100,209,10,248,109,195,21,128,79,119,97,113,243,69,89,133,7,158,13,205,122,169,139,181,176,167,214,87,129,54,119,227,202,84,127,221,246,59,112,44,231,183,91,83,63,123,19,210,102,229,124,30,4,9,55,34,50,14,70,222,109,96,75,188,61,230,234,226,106,45,194,180,172,96,165,48,250,172,114,235,71,204,175,44,242,24,126,174,143,203,121,155,254,102,140,82,235,208,118,123,79,50,56,252,72,19,68,78,236,157,205,203,69,120,130,193,46,42,243,175,165,194,161,94,149,110,114,180,238,122,211,206,251,178,186,13,140,205,93,163,13,250,139,54,228,203,143,193,190,252,114,27,77,202,162,172,62,15,136,12,14,25,202,55,197,45,89,149,203,111,190,76,241,228,128,12,158,60,217,191,158,121,
191,88,23,88,44,243,124,225,171,81,183,200,71,135,215,228,181,41,62,188,119,57,166,84,15,35,48,109,69,222,223,223,143,186,119,246,198,100,51,91,215,163,46,134,121,77,30,175,17,125,102,170,12,18,145,75,83,248,18,183,170,19,83,56,155,147,215,182,254,244,123,77,46,62,253,86,217,7,28,95,213,77,248,113,101,203,217,172,14,32,239,201,233,131,205,243,136,188,180,213,216,86,62,0,115,91,69,228,133,169,170,21,57,189,179,112,224,36,66,109,43,242,166,106,34,231,229,24,6,152,45,11,31,226,206,92,54,51,96,58,122,152,160,156,8,251,237,193,144,231,198,155,153,203,205,140,92,206,204,44,194,113,27,4,70,111,185,3,237,81,229,76,65,222,2,136,91,106,110,127,38,231,46,43,243,186,44,64,99,13,70,243,188,50,197,167,255,150,174,38,47,222,29,191,60,61,191,12,253,84,171,156,188,71,45,129,244,181,157,78,201,203,229,124,49,171,112,144,71,184,19,187,188,121,107,146,92,185,121,233,103,43,148,2,194,85,168,125,142,27,233,89,118,110,230,120,
114,109,209,223,119,201,203,50,135,142,227,70,60,236,55,114,132,143,101,125,139,136,11,227,171,213,45,121,241,199,127,202,123,147,61,4,117,48,82,111,11,96,238,236,166,105,60,142,20,174,198,12,238,235,91,55,28,254,9,192,9,68,250,

View file

@ -1,24 +0,0 @@
topic "Ultimate++ MacOS Installation";
[a83;*R6 $$1,3#31310162474203024125188417583966:caption]
[H4;b83;*4 $$2,3#07864147445237544204411237157677:title]
[b42;a42;ph2 $$3,3#45413000475342174754091244180557:text]
[ $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US
[s1; Ultimate`+`+ on Mac OS&]
[s2; Table of contents&]
[s0; &]
[s0; [^`#1^2 1. Installation]&]
[s0; &]
[s2;:1: 1. Installation&]
[s3; MacOS version of U`+`+ is released as single .zip file containing
.app application bundle of TheIDE development environment.&]
[s3; U`+`+ requires C`+`+ toolchain to build applications. You can
find a description how to install this toolchain e.g. [^http`:`/`/osxdaily`.com`/2014`/02`/12`/install`-command`-line`-tools`-mac`-os`-x`/^ h
ere].&]
[s3; Some other tools and libraries can be installed with [^https`:`/`/brew`.sh`/^ home
brew]. Following packages are recommended (as in they might be
required in certain contexts):&]
[s3;l160;i150;O0;%- gdb&]
[s3;l160;i150;O0;%- openssl&]
[s3;l160;i150;O0;%- libssh2&]
[s0;+92%- ]]

View file

@ -1,6 +0,0 @@
TITLE("Ultimate++ MacOS Installation")
COMPRESSED
120,156,133,82,97,79,219,48,16,253,43,39,1,211,54,72,106,59,78,83,146,143,131,105,124,96,72,43,124,152,170,48,59,137,105,172,185,118,22,187,180,108,218,127,223,185,45,26,154,144,22,201,202,249,206,239,221,187,103,47,228,44,171,222,127,153,194,241,49,61,203,142,50,154,81,66,167,140,23,156,145,140,48,78,89,78,103,51,78,139,124,150,157,79,167,101,43,135,160,157,173,23,159,120,213,68,40,71,36,67,36,41,102,83,78,17,199,115,150,21,57,71,60,231,148,98,76,243,98,90,20,101,208,193,168,122,209,112,86,73,92,67,207,16,153,33,146,231,156,102,132,16,94,228,25,103,180,192,63,39,231,148,33,124,70,242,28,145,106,27,234,5,158,38,103,228,136,252,231,43,47,212,131,92,27,4,252,250,246,251,228,242,115,114,55,135,133,167,21,220,153,160,87,50,40,113,42,78,193,89,184,150,45,220,204,223,212,11,207,42,184,149,141,81,224,30,160,117,54,40,27,124,204,147,10,14,191,197,189,56,162,247,12,104,10,87,214,7,105,140,220,185,240,226,20,171,
74,90,254,123,32,22,178,42,182,186,153,195,163,26,61,230,98,151,187,157,8,237,97,84,70,73,175,58,144,30,188,182,75,20,145,254,212,3,60,104,140,162,22,169,45,166,33,149,195,0,184,140,110,119,196,208,172,109,183,87,124,219,171,171,139,75,232,212,163,50,110,88,161,120,80,246,81,143,206,198,56,61,72,216,119,28,213,143,181,30,149,135,15,187,109,112,206,180,61,182,192,8,25,181,233,94,246,240,41,124,117,107,104,165,69,57,22,75,216,195,183,163,222,61,0,232,221,38,162,244,126,90,8,61,78,243,151,79,165,203,20,93,235,67,24,68,41,38,98,226,252,182,147,218,60,137,180,117,43,49,97,132,114,49,33,76,76,40,174,3,137,72,176,182,146,182,19,137,209,86,137,36,242,121,145,172,100,43,18,135,193,86,76,238,161,87,163,170,159,199,154,187,21,154,16,48,183,107,238,1,209,96,116,51,202,81,227,152,81,123,163,158,69,162,205,27,29,250,131,46,191,23,214,140,106,35,82,223,239,168,145,45,238,235,20,62,58,99,220,38,90,63,200,246,187,92,
34,153,28,21,26,24,37,42,219,33,215,91,188,179,104,93,175,158,96,165,151,125,136,173,14,14,119,177,210,170,49,222,223,254,77,109,131,127,87,238,85,27,58,37,149,166,57,169,110,72,117,146,192,178,107,94,47,184,65,89,239,205,235,69,156,210,251,158,237,159,224,233,57,195,84,93,255,1,55,221,49,190,

View file

@ -0,0 +1,28 @@
topic "Ultimate++ MacOS Installation";
[a83;*R6 $$1,3#31310162474203024125188417583966:caption]
[H4;b83;*4 $$2,3#07864147445237544204411237157677:title]
[b42;a42;2 $$3,3#45413000475342174754091244180557:text]
[ $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US
[s1; U`+`+ Mac OS installation&]
[s3; U`+`+ for POSIX (OpenBSD, FreeBSD) comes as single sandboxed
archive. After downloading, you need to unpack this archive to
suitable location with&]
[s3; tar xf upp`-posix`-14411.tar.xz&]
[s3; (replace 14411 with the revision you have downloaded). Of course,
you can use GUI tool to unpack as well.&]
[s3; U`+`+ requires C`+`+ toolchain to build applications. You can
find a description how to install this toolchain e.g. [^http`:`/`/osxdaily`.com`/2014`/02`/12`/install`-command`-line`-tools`-mac`-os`-x`/^ h
ere].&]
[s3; Some other tools and libraries can be installed with [^https`:`/`/brew`.sh`/^ home
brew]. Following packages are recommended (as in they might be
required in certain contexts):&]
[s3;i150;O0;%- gdb&]
[s3;i150;O0;%- openssl&]
[s3;i150;O0;%- libssh2&]
[s3; As long as you keep theide (or umk) just in the original directory,
nothing will be written outside of it `- its `"sandboxed`". If
you get bored with U`+`+ and need to clean the space, simply
delete the `"upp`" folder.&]
[s3; If you move theide e.g. to `~/bin, it will start to write things
to `~/.config and `~/.cache.]]

View file

@ -0,0 +1,7 @@
TITLE("Ultimate++ MacOS Installation")
COMPRESSED
120,156,133,83,219,142,219,54,16,253,149,193,38,41,118,19,75,22,117,177,28,251,41,109,154,118,31,26,7,53,22,104,97,56,37,37,141,45,118,105,82,37,169,181,157,32,253,246,14,101,185,23,228,161,6,100,145,26,158,153,115,206,12,55,98,158,45,95,254,60,131,231,207,217,36,123,150,177,140,37,108,150,230,101,158,38,89,146,230,44,45,216,124,158,179,178,152,103,175,103,179,69,45,58,47,141,222,110,126,204,151,85,128,230,132,76,9,153,148,243,89,206,8,151,23,105,86,22,57,225,243,156,49,90,179,162,156,149,229,194,75,175,112,187,169,242,116,41,232,73,9,151,17,46,47,114,150,37,73,146,151,69,150,167,172,164,119,158,188,102,41,129,231,73,81,16,14,79,126,187,161,211,201,36,121,150,252,207,111,241,22,119,162,87,4,248,252,219,151,23,223,191,143,30,214,176,113,108,9,15,252,21,127,5,63,137,26,86,107,144,218,121,161,148,8,74,190,217,110,92,118,141,239,140,133,15,171,245,253,47,112,187,234,80,127,187,126,59,129,119,22,145,22,119,80,155,
3,58,16,14,156,212,123,133,224,132,110,42,115,194,6,132,173,91,249,132,49,188,217,121,180,208,152,163,86,70,52,116,108,2,103,211,131,70,58,228,13,244,186,19,245,35,248,86,186,43,38,124,118,189,244,162,162,140,202,212,3,39,56,74,223,142,196,188,176,112,218,65,223,117,60,234,140,147,39,30,177,96,108,76,129,248,244,105,60,117,107,177,83,162,70,24,98,3,158,202,32,88,124,146,46,100,12,52,90,65,245,174,228,176,185,139,97,181,35,85,189,117,120,225,89,11,13,189,67,248,225,225,158,120,25,245,47,206,36,251,136,74,197,255,177,203,226,31,189,180,100,202,119,195,54,64,234,86,72,29,112,85,47,21,57,211,117,74,94,68,185,24,126,29,107,236,164,166,16,52,232,106,43,135,121,130,214,28,3,106,236,204,197,162,127,242,97,188,143,97,243,177,245,190,227,11,62,229,83,227,78,141,144,234,204,99,234,10,159,166,9,203,249,52,73,249,148,209,51,38,225,17,197,14,212,36,30,41,169,145,71,33,159,227,209,65,212,60,50,180,56,241,233,71,104,209,
226,246,42,107,77,45,6,67,198,217,161,56,117,137,136,42,89,89,97,37,201,12,220,43,188,146,164,158,14,62,95,120,185,11,177,202,226,145,199,174,29,82,83,182,176,223,198,240,206,40,101,142,52,16,16,220,20,251,48,72,54,180,39,80,68,77,221,128,91,178,56,88,215,226,25,14,114,223,250,80,106,116,184,9,145,26,173,15,102,212,70,135,59,225,238,22,23,214,146,21,201,114,149,44,95,68,176,111,170,175,190,25,26,100,231,212,87,223,73,150,115,109,58,42,127,227,104,250,136,30,145,8,147,240,136,216,5,42,178,65,184,165,75,209,31,30,239,224,247,222,249,145,34,24,43,247,82,11,5,13,209,171,189,177,231,9,104,114,46,72,60,74,234,32,145,63,90,233,61,106,48,189,119,33,145,217,129,244,192,35,250,119,192,111,254,190,63,252,38,134,251,221,80,119,143,36,219,216,171,181,151,49,11,77,184,94,161,90,161,184,48,112,228,36,205,173,147,135,78,157,105,150,20,122,28,2,252,38,92,150,27,186,204,170,65,123,109,237,88,224,96,158,240,42,108,152,
42,202,201,255,156,86,82,79,2,185,129,58,117,215,250,16,8,2,194,105,18,229,198,131,52,111,122,39,247,3,167,97,43,234,22,227,237,246,47,114,120,183,88,

View file

@ -0,0 +1,44 @@
topic "U++ POSIX/X11 Tarball Installation";
[a83;*R6 $$1,2#31310162474203024125188417583966:caption]
[b42;a42;ph2 $$2,2#45413000475342174754091244180557:text]
[H4;b83;*4 $$3,2#07864147445237544204411237157677:title]
[2 $$4,4#589063B430329DC9D1C058DDB04EA569:code]
[b83;*+117 $$5,5#2AC2FD302E8CD436942CC99374D81489:SubTitle]
[ $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US
[s1; U`+`+ POSIX Tarball Installation&]
[s2;po U`+`+ for POSIX (OpenBSD, FreeBSD) comes as single sandboxed
archive. After downloading, you need to unpack this archive to
suitable location with&]
[s2;po tar xf upp`-posix`-14411.tar.xz&]
[s2;po (replace 14411 with the revision you have downloaded). Of
course, you can use your desktop environment desktop utility
as well.&]
[s2;po This will produce `"upp`" folder full of files.&]
[s2;po cd upp&]
[s2;po to get into it. Now you have two options:&]
[s2;i150;poO0; Use ./install script that should resolve all dependencies
build theide as fast as possible (usually the process takes a
couple of minutes).&]
[s2;i150;poO0; Resolve dependecies yourself and use `'make`'. (there
is no ./configure or make install, it is not necessarry). Even
if you do this, peeking into ./install is a good idea to get
a clue about dependecies required. You should also build umk
command line too with `'make `-f uMakefile`', also this is not
strictly necessarry for the first taste of U`+`+.&]
[s2;po At the end of this process, you should have two binaries in
the folder, ./theide and ./umk. Start ./theide to have some fun
with U`+`+.&]
[s2;po As long as you keep theide (or umk) just in the original directory,
nothing will be written outside of it `- its `"sandboxed`" (with
one exception described bellow). If you get bored with U`+`+
and need to clean the space, simply delete the `"upp`" folder.&]
[s2;po If you move theide e.g. to `~/bin, it will start to write
things to `~/.config and `~/.cache.&]
[s2;po The exception to the sanboxing rule is single command invoked
from TheIDE menu, `"Setup`"/`"Install theide.desktop`". This
will write proper desktop file to `~/.local/share/applications
`- the effect of this on most desktop environments is that TheIDE
will appear in the desktop menu somewhere, usually in Start menu
under Programming category. Sometimes desktop environment needs
restert to this to take effect.]]

View file

@ -0,0 +1,8 @@
TITLE("U++ POSIX/X11 Tarball Installation")
COMPRESSED
120,156,133,85,107,79,227,70,20,253,43,35,216,118,161,24,227,103,30,240,9,8,171,242,161,203,106,97,165,86,8,213,19,251,58,153,198,241,184,243,32,208,170,253,237,61,51,118,18,86,187,82,145,192,38,115,239,157,115,206,61,247,230,145,79,210,139,159,62,143,216,187,119,113,144,28,166,113,26,71,241,40,201,198,89,18,165,81,146,197,73,30,79,38,89,60,206,39,233,116,52,58,47,121,103,132,108,159,30,231,89,114,193,241,219,45,19,228,38,200,205,242,44,78,163,40,202,198,121,154,37,241,24,207,44,154,198,73,150,197,147,40,207,199,231,134,94,204,211,227,207,217,197,220,221,153,33,45,69,90,52,158,140,178,24,23,102,121,146,34,5,23,35,35,198,123,156,143,71,99,164,9,211,208,211,163,187,38,11,178,195,124,50,141,70,233,85,150,70,105,50,157,93,79,103,241,117,148,79,102,179,171,40,187,185,204,71,211,243,82,86,8,247,119,156,196,241,24,105,121,144,31,38,151,215,201,135,25,40,221,76,174,103,89,58,154,102,201,245,245,116,154,142,179,217,36,
206,38,211,243,123,59,127,232,111,66,70,20,68,135,209,255,252,156,207,168,230,182,1,165,191,127,255,231,135,155,143,167,95,238,217,163,142,47,216,151,226,164,56,97,159,238,238,111,127,101,15,92,205,121,211,176,219,86,27,60,185,19,239,199,167,71,13,225,228,16,88,75,53,4,31,221,117,212,94,221,207,2,246,65,17,225,229,152,149,114,77,154,113,205,180,104,23,13,49,205,219,106,46,95,168,98,92,149,75,241,76,33,187,172,13,41,86,201,77,219,72,94,33,44,96,175,210,178,150,16,100,36,179,109,199,203,21,51,75,161,183,57,238,99,109,133,225,115,84,108,100,233,81,177,141,48,203,29,52,195,21,123,169,153,237,186,226,180,147,90,188,20,167,177,107,75,136,131,240,229,175,93,220,145,162,174,225,37,49,127,234,107,224,42,98,138,158,133,118,85,29,148,37,199,157,91,128,84,29,135,236,174,6,51,171,52,245,88,75,222,50,171,201,189,131,9,233,149,145,29,163,246,89,40,217,174,169,53,187,207,172,17,141,48,175,78,144,13,53,77,184,195,241,224,232,109,
4,148,238,148,172,44,0,21,7,14,252,1,228,109,42,232,83,91,156,201,154,213,162,33,189,207,43,43,199,113,79,91,178,5,25,38,90,188,8,19,178,143,114,179,103,96,54,146,73,111,127,125,222,103,136,56,143,144,118,23,161,233,128,31,158,137,190,205,76,151,74,116,6,74,112,195,244,82,218,166,130,34,90,54,168,226,142,43,66,163,43,106,75,129,230,206,173,192,49,68,19,21,57,98,53,215,198,61,33,187,22,174,67,71,86,91,100,189,122,97,65,175,36,173,209,160,149,51,134,147,177,67,12,152,173,69,107,13,233,227,240,27,108,159,135,171,135,107,253,173,175,94,254,166,102,48,148,215,190,120,191,70,201,226,125,200,142,112,143,34,6,65,91,9,78,165,108,107,177,176,248,4,70,117,49,108,96,25,64,162,62,202,192,109,14,21,87,234,21,221,189,121,166,150,137,218,43,87,73,111,189,128,117,68,43,152,179,215,118,175,148,115,37,91,72,89,49,208,231,219,6,128,87,99,161,198,92,90,243,21,108,69,127,90,161,168,10,217,111,40,62,72,203,27,45,7,
25,237,122,229,102,102,237,88,53,162,117,86,151,189,43,123,126,172,56,133,171,127,193,155,51,66,241,62,232,147,253,116,12,84,180,81,162,52,144,123,207,201,207,168,83,191,22,10,205,49,232,144,151,220,15,240,222,76,151,198,7,1,172,59,244,53,135,118,245,54,31,224,238,204,52,23,45,87,142,149,104,251,234,222,170,1,212,217,186,1,149,194,51,112,10,217,61,6,207,236,79,160,147,47,163,177,31,224,237,126,122,191,193,163,49,221,144,156,251,118,179,21,81,183,245,217,17,8,161,238,49,251,195,106,179,189,95,42,177,0,36,248,19,18,151,70,170,215,192,41,178,116,109,243,179,53,39,182,81,194,24,180,23,141,209,174,16,136,194,5,197,41,254,106,204,220,110,63,97,242,142,60,38,137,38,208,75,73,126,112,220,32,99,52,230,88,77,115,204,175,220,192,45,183,189,81,92,219,231,18,173,125,67,197,11,176,93,100,101,67,188,199,169,177,209,176,57,180,88,119,104,83,69,13,161,29,238,224,235,153,223,11,49,92,177,150,207,180,21,128,194,69,232,170,22,255,
158,161,13,222,202,158,162,246,58,227,192,17,117,209,32,175,135,192,176,31,5,143,202,255,203,203,37,189,221,65,111,153,26,217,99,229,45,244,112,10,42,219,248,161,26,54,249,214,165,162,125,150,43,48,172,149,92,187,18,183,179,27,134,157,103,3,176,185,39,99,193,231,172,56,24,190,63,6,244,225,176,15,139,131,240,205,230,235,17,195,113,29,237,183,168,179,249,22,190,91,245,205,153,94,114,69,103,188,235,26,209,111,126,237,218,231,141,91,215,104,251,206,187,32,177,150,218,124,111,33,251,97,241,219,109,64,236,1,160,38,225,123,99,112,211,54,205,145,241,62,221,184,181,18,176,237,54,67,88,111,106,31,96,91,183,165,63,41,185,80,124,189,118,122,1,28,45,224,65,120,31,201,70,184,47,194,239,125,55,56,127,184,197,128,153,236,59,231,193,187,167,155,247,158,83,248,244,244,31,82,167,253,96,

View file

@ -0,0 +1,31 @@
topic "Ultimate++ Windows Installation";
[l288;i704;a17;O9;~~~.992;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[b167;a42;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;a17;2 $$6,6#27521748481378242620020725143825:desc]
[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[ph*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[t4167;C2 $$10,0#37138531426314131251341829483380:class]
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US
[s2; U`+`+ Windows Installation&]
[s5;po~~~320; Windows release is a simple archive [^http`:`/`/www`.7`-zip`.org`/^ .7z]
archive. Unpack to directory of your preference, then just run
theide.exe. U`+`+ does not write anything to registry or outside
its directory.&]
[s5;po~~~320; The archive contains CLANG based Win32 toolchain and
also SDL 2, OpenSSL, MySql and PostgreSQL client libraries.&]
[s5;po~~~320; U`+`+ minimum requirement is Windows 7 64 with latest
patches for theide to run and Windows 7 64 or 32 with latest
patches for applications.]]

View file

@ -0,0 +1,8 @@
TITLE("Ultimate++ Windows Installation")
COMPRESSED
120,156,133,84,239,111,219,84,20,253,87,158,148,130,160,115,179,119,239,251,109,127,25,234,16,67,42,27,80,42,62,68,25,113,157,215,198,224,218,158,237,144,117,136,253,237,156,231,116,235,0,33,18,197,73,228,119,238,61,231,220,115,189,106,216,251,162,118,82,23,37,185,226,85,40,222,191,127,191,12,129,11,22,39,39,148,201,5,73,173,136,137,180,148,154,29,153,32,131,241,228,165,114,154,141,147,38,239,203,161,188,91,175,74,175,138,211,31,45,80,156,153,133,34,69,146,44,107,156,146,74,178,38,54,228,189,38,103,188,10,214,230,85,217,79,117,215,174,87,47,116,113,157,160,26,72,5,164,116,222,106,2,78,27,86,206,104,224,181,38,194,111,50,206,58,151,79,245,212,196,245,234,154,172,43,74,205,197,121,98,170,51,187,0,67,118,128,106,214,86,43,207,138,60,179,13,74,7,13,234,196,121,61,69,16,189,6,38,225,250,93,2,26,180,212,70,147,146,208,231,140,194,65,135,111,45,3,49,250,122,105,12,90,198,183,211,122,53,91,149,92,74,56,139,134,236,
76,58,237,181,39,229,60,107,182,12,10,210,65,106,234,111,242,109,28,43,224,20,83,49,129,84,113,254,204,20,4,176,203,220,130,101,144,108,93,64,67,208,133,100,21,2,41,143,134,154,140,36,149,87,221,54,201,100,35,213,220,209,99,24,22,149,103,87,140,37,16,102,229,209,210,145,82,184,26,237,93,62,198,52,142,169,27,214,171,126,119,250,236,11,185,148,75,54,230,203,84,32,160,128,87,90,41,109,131,38,169,208,8,85,116,242,204,74,140,148,12,251,252,186,28,209,117,210,201,221,217,89,146,128,193,124,229,141,66,115,139,11,102,11,137,10,238,112,208,94,41,47,243,170,41,199,241,19,139,78,147,76,162,140,104,225,146,179,70,177,14,201,30,197,176,152,173,9,4,143,141,213,146,243,33,190,217,215,67,188,139,45,76,174,17,145,226,195,136,30,226,8,50,199,56,114,70,140,64,26,107,101,114,204,32,17,172,12,44,151,228,53,24,225,141,49,79,15,137,188,126,212,160,50,82,139,192,90,129,73,208,26,14,160,0,5,34,146,30,111,40,131,47,115,62,8,
20,102,17,199,246,71,184,206,72,47,28,162,140,89,5,157,218,7,149,252,99,12,128,173,52,152,4,31,225,188,94,157,62,227,19,248,78,236,211,103,118,158,76,70,216,9,80,36,99,160,91,193,106,246,208,110,224,189,154,51,78,206,231,47,227,97,124,94,78,241,33,50,167,231,39,199,172,145,205,200,46,100,194,27,31,48,64,210,201,63,165,117,224,160,148,225,96,148,149,240,113,220,55,211,3,56,237,212,188,146,31,139,184,140,28,182,11,90,141,129,250,25,6,229,142,18,21,246,193,38,23,30,138,108,206,154,186,77,60,144,140,226,24,134,211,243,39,68,46,21,242,88,25,239,173,84,1,102,192,3,105,144,117,60,20,60,6,141,57,51,22,33,61,21,170,223,202,219,184,57,123,88,215,68,33,37,73,254,207,43,127,30,111,202,89,198,31,191,252,249,217,215,47,207,174,46,197,106,228,66,92,109,158,108,158,136,159,235,118,219,29,70,241,109,59,78,101,211,148,233,25,242,249,122,53,154,162,239,16,21,236,65,241,241,204,16,155,136,52,139,122,20,165,24,235,187,
190,137,162,28,170,93,253,123,20,171,215,187,105,234,55,249,230,233,230,233,225,112,216,44,221,230,236,93,221,111,150,221,112,187,121,250,90,44,221,187,245,135,195,75,113,213,38,57,98,234,196,22,65,173,176,94,247,162,187,17,247,221,126,16,253,16,111,226,16,219,42,102,98,218,197,86,252,186,31,39,49,236,219,244,175,222,198,101,124,155,42,204,236,183,93,28,69,219,77,226,48,32,44,162,108,239,167,93,221,222,166,194,67,188,173,199,41,213,29,68,183,159,70,32,69,61,141,143,13,151,255,148,249,211,238,81,78,213,181,83,89,183,163,56,191,248,234,229,55,34,45,241,54,249,160,24,181,187,166,218,225,38,218,109,69,217,140,157,184,124,126,33,56,19,175,250,216,94,94,94,100,226,187,251,203,55,205,124,251,251,110,156,110,135,120,249,195,133,168,154,26,11,41,154,250,122,40,135,58,142,255,234,127,148,116,87,183,245,221,254,78,124,178,196,201,240,15,51,112,194,106,113,168,167,157,192,172,34,140,233,203,169,218,193,133,27,232,60,26,52,171,223,31,233,253,13,
134,19,224,255,95,224,178,239,155,186,154,3,48,46,215,235,191,0,71,242,213,114,