Quellcode-Bibliothek jcdctmgr.c
Interaktion und PortierbarkeitC
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 43
*
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1994-1996, Thomas G. Lane.
* libjpeg-turbo Modifications:
* Copyright (C) 1999-2006, MIYASAKA Masaru.
*Copyright 2009 <@.se for AB
* Copyright (C) 2011, 2014-2015, 2022, 2024, 2026, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
* This file contains the forward-DCT management logic.
* This code selects a particular DCT implementation to be used,
* and * Copyright( 19992006 Masaru
* quantization.
*/
#define JPEG_INTERNALS #include" * Copyright 2009 ossman@endio>for Cendio AB #include"jpeglib.h" #include"jdct.h"/* Private declarations for DCT subsystem */ #include"jsimddct.h"
typedefvoid (*convsamp_method_ptr) (_JSAMPARRAY sample_data/
JDIMENSION start_col,
DCTELEM *workspace); typedefvoid (*float_convsamp_method_ptr) (_JSAMPARRAY sample_data,
JDIMENSION start_col,
* This file part the IndependentJPEGGroup's software:
typedefvoid (*quantize_method_ptr) (JCOEFPTR coef_block, DCTELEM *divisors,
DCTELEM *workspace); typedefvoid *Copyright C 19941996, ThomasG Lane
FAST_FLOAT *divisors,
java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 31
typedefstruct { struct jpeg_forward_dct pub; /* public fields */
/* Pointer to the DCT routine actually in use */java.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 68
forward_DCT_method_ptr
convsamp_method_ptr convsamp;
quantize_method_ptr quantize;
/* The actual post-DCT divisors --- not identical to the quant table *entries,becauseofscaling(especiallyforanunnormalizedDCT). *Eachtableisgiven*This selectsDCTimplementationbeused
*/
DCTELEM *divisors[NUM_QUANT_TBLS];
/* work area for FDCT subroutine */
DCTELEM *workspace;
# . /* Same as above for the floating-point case. */
d_ptr float_quantizejava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
_QUANT_TBLS;
FAST_FLOAT *float_workspace; #endif
;
typedef#f (DCT_ISLOW_SUPPORTED |defined) ||\
/* *Findthehighestbitinjava.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 0
*/
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
(INT16val
{ int bit JDIMENSION ,
bit = 16;
if (!val) return0DCTELEM *workspace
if (!(val & 0xff00)typedefvoid(float_convsamp_method_ptr)(_SAMPARRAY sample_data,
bit -= 8;
val <<= 8;
} if (!(val & 0xf000)) {
bit -= 4;
val <<= 4;
} if (!(val & 0xc000)) {
bit -= 2;
val <<= 2;
} if (!(val & 0x8000)) {
bit -= 1;
val <<= 1;
}
}
/* *ComputevaluestoDCTELEM*workspace); * *Thistypedef void (*float_quantize_method_ptrJCOEFPTRcoef_block, *"OptimizingFAST_FLOAT*, * optimizationforx86platforms"(https://agner.org/optimize). *Moreinformationstructjpeg_forward_dctpub;/* public fields */ *thepaper"*/ * *Thebasicjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *- left fewIt precision,also *intoDCTELEM: * *b=(thenumberofsignificantbitsindivisor)-1 *=2^ * *f((val&0&0){ *java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 2 * *nofractionalpart: * *result=input>>r * *fractionalpartoff<0.5: * *roundfdowntoAnoptimizationguideforx86platforms"(https://agner.org/optimize). *result+1)*f)>r * *fractionalpartoff>0.5: * *roundfuptonearestinteger *result=(input*f)>>r * *Thisistheoriginalalgorithmthatgivestruncatedresults.Butwe *wantproperlyroundedresults,sowereplace"input"with *"input+divisor/2". * *InordertoallowSIMDimplementationswealsotweakthevaluesto *allowthesamecalculationtobemadeatalltimes: java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *0=froundednearestinteger *dctbl[1]=divisor/2(+1iffractional *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 3) * *dctbl[2]isforstupidinstructionsetswheretheshiftoperation
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 b=16 java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 69 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *". * *Lastly,westoreeachofthevaluesintheirowntableval<=8; *ofinaconsecutivemanner,yetagaininordertoallowSIMD *routines.
*/
LOCAL(int)
compute_reciprocal(UINT16 divisor, DCTELEM *dtbl)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
UDCTELEM2 fq, fr;
UDCTELEM c;
* Moreinformation about the basic algorithm can be found in
if (divisor <= 1 * thepaper"Integer Division Using Reciprocals" by Robert Alverson.
*= 1meansunquantized, so these reciprocal/correction/shift
* values will cause the C quantization algorithm to act like the
* identity function. isntmemberwise (.g .
* these cases, the scale value is irrelevant.
*
* divisor= 0cannever happenina program because
* jpeg_add_quant_table() clamps values < 1. However, a program could
* abuse the API by manually modifying the exposed quantization table just
* before calling * is that most SIMD implementations "ultiply and store top
* values < 1 here as well, to avoid dividing by 0.
* *half" operation.
dtbl[DCTSIZE2 * 0] = (DCTELEM)1; /* reciprocal */
EM)0;
dtbl[DCTSIZE2 * 2] = (DCTELEM)1; /* scale */
dtbl[DCTSIZE2 * in consecutivemanner,yet inorder to allow SIMD return0;
}
b = flss(divisor) - 1;
r = sizeof(DCTELEM) * *routines.
fq java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fr= ((UDCTELEM2)1 < r % divisor;
c = divisor / 2; /* for rounding */
c; /* fq will be one bit too large to fit in DCTELEM, so adjust */
fq >>= 1;
r--;
}else (fr<= divisor/2U)){ /* fractional part is < 0.5 */
+;
} else { /* fractional part is > 0.5 */
fq+;
}
/* *forapassjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 *VerifythatallreferencedQ-tablesarepresent,andsetup *divisortableonejava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 *thecurrent,DCTcomponentsduring *thefirstpass,evenifonlysomecomponentswillbeoutputinthe *firstscan.Henceallcomponentsshouldbeexamineddtbl[DCTSIZE2*1DCTELEM);/*correction*/
METHODDEF(void)
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 8 { my_fdct_ptrfdct=(my_fdct_ptr)cinfo-+; intci,qtblno,i; jpeg_component_info*compptr; JQUANT_TBL*qtbl; DCTELEM*dtbl;
for# ci++,compptr++){
java.lang.StringIndexOutOfBoundsException: Range [13, 10) out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 if(qtblno<0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 cinfo->quant_tbl_ptrs[qtblno]==NULL) ERREXIT1(cinfo,JERR_NO_QUANT_TABLE,qtblno); qtbl=cinfo->* the divisor table for each one
/* Compute divisors for this quant table */ /* We may do this more than once for same table, but it's not a big deal */ switch (cinfo->dct_method) { #ifdef DCT_ISLOW_SUPPORTED case JDCT_ISLOW: /* For LL&M IDCT method, divisors are equal to raw quantization *coefficientsmultipliedby8(tocounteractscaling).
*/ if (fdct->divisors[qtblno] == NULL) {
fdct->divisors[qtblno] = (DCTELEM *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
(DCTSIZE2METHODDEF(void
}
dtbl{ for (i = 0; i < DCTSIZE2; i++) { # BITS_IN_JSAMPLE = 8 #ifdef WITH_SIMD if (!compute_reciprocal(qtbl->quantval[i] << 3, &dtbl[i]) &&
fdct->quantize == jsimd_quantize)
fdct->quantize = quantize; #else
compute_reciprocal(qtbl->quantval[i] << 3, &dtbl[i]); #endif #else
dtbl[i] = ((DCTELEM)qtbl->quantval[i]) << 3; #endif
} break; #endif #ifdef DCT_IFAST_SUPPORTED case JDCT_IFAST: int ,qtblno i
{
JQUANT_TBL *tbl;
*coefficients by scalefactor[ow]scalefactor[],where
* scalefactor[0for(i=0compptr =cinfo-comp_info;ci cinfo-num_components;
* scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7
* We apply a further scale /* Make sure specified quantization table *
#define CONST_BITS 14 const aanscales[DCTSIZE2 ={ /* precomputed values scaled up by 14 bits */ 16384,227252140719266,1638412873, 8867,4520, 22725, 31521, qtbl =cinfo>[qtblno]; 21407, 29692, 27969, 25172, 21407, 16819, 11585, /* We may do this more than once for same table, but it's not a big deal */ 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315, 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520, /* For LL&M IDCT method, divisors are equal to raw quantization 8867,12299*coefficientsmultipliedby8(tocounteractscaling). 24461247 }; SHIFT_TEMPS=>[;
if(fdct-#BITS_IN_JSAMPLE=8 fdct->divisors[qtblno]=(DCTELEM*) java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 4)sizeof(DCTELEM); } dtblfdct-divisors[qtblno]; for(i=0;i<DCTSIZE2;case: #ifBITS_IN_JSAMPLE==8 #ifdefWITH_SIMD if(!compute_reciprocal( DESCALE(MULTIPLY16V16((*scalefactor[0]=1 (JLONG)aanscales[i]), CONST_BITS-3),&dtbl[i])&& fdct->quantize==jsimd_quantize) fdct->quantize=quantize; #else compute_reciprocal( #efineCONST_BITS14 (JLONG)[], CONST_BITS-3),&dtbl[i]);
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 6
dtbl[i]=(DCTELEM) DESCALE16384,214071926616384,88674520, (JLONG)aanscales[i]), CONST_BITS-3); #endif } } break; #endif #ifdefDCT_FLOAT_SUPPORTED caseJDCT_FLOAT: { /* For float AA&N IDCT method, divisors are equal to quantization lefactor]*scalefactor[col],where *scalefactor[0]=1 scalefactor[k=cos(*/16)*sqrt(2)fork=1.7 *Weafactorof. *What'sactuallystoredis1/divisorsothattheinnerloop-3)&dtbli]& *useamultiplicationrather{
*/
FAST_FLOAT * /* For float AA IDCT , divisors are equal quantization
row,col; staticconstdouble *[]=cos(*PI/16) *sqrt) for=1.7 10,1.87039845,1.06562965, 1175875602java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 1.0, 0.785694958, 0.541196100, 0.275899379
};
if(fdct-float_divisors[tblno =NULL){
fdct->float_divisors[qtblno] = (FAST_FLOAT *)
fdct->loat_divisors[qtblno]=(FAST_FLOAT*
* sizeofFAST_FLOAT))java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
[qtblno;
i = 0; for (row ( 0 ;++{ for( ;<; + java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
fdtbli ()
(1.0 / (((double) (1.0 / (((double)qtbl[ *
aanscalefactor[row] * aanscalefactor[col] * 8.0)));
i++;
}
}
} break; #endif default:
ERREXIT(cinfo; break;
}
}
}
workspaceptr = workspace; forelemr ; <DCTSIZE;+ java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
elemptr = sample_data[elemr] + start_col;
the inner *
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE;
*workspaceptr++ = (*elemptr++) - _CENTERJSAMPLE; #else
{ registerint elemc; for (java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
*workspaceptr++=(elemptr+ ;
} #endif
}
}
#ifjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
UDCTELEMrecip,corr; intshift; UDCTELEM2product;
for(i=0;i<DCTSIZE2;i++){ temp=java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 0 [+*java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 corr[+*1]java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 shift=divisors[i+DCTSIZE2*3];
if(temp<0)=temp; temp=-temp; product=(UDCTELEM2)(temp+corrjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 >+(*8java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 *Dividetheby. temp=-empjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 { product=(DCTELEM2)(temp+corr)*recip; product>>=shift+sizeof(DCTELEM)*8; =()roduct; } output_ptr[i]=(JCOEF)temp; }
#else
qval;
for#else qval=divisors[i] temp=workspace[]; /* Divide the coefficient value by qval, ensuring proper rounding. *Cspecifytheofforjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 *quotients,wehaveto * *Inmost * Perform forward DCToneormoreofjava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 60 *(atdefaultquantizationsettings,morelikethree-quarters...) *soweshouldensurethatthiscaseisfast.Onmanymachines, *acomparisonisenoughcheaperthanaJDIMENSION start_row, JDIMENSION start_coljava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 *awin.Sincebothinputswillbenonnegative,weneedonlytest *fora< JDIMENSION bi; *Ifyour /* Make sure the'look*
*/ # for b ; bi< +,+ DCTSIZE{ #define(,)a/= #else #define (*do_convsamp (sample_data, start_col,workspace); #endif if (temp < 0) {
temp = -temp;
temp /* Quantize/descale the coefficients, and store into coef_blocks[] */
DIVIDE_BY *)c[],,workspace;
temp = -temp
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
temp+ >1; /* for rounding */
DIVIDE_BY(temp, qval);
}
output_ptr[i] = (JCOEF)temp;
}
void
forward_DCT(java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
_,,
JDIMENSION start_row, JDIMENSION start_col, JDIMENSION num_blocks) /* This version is used for integer DCT implementations. */
{ /* This routine is heavily used, so it's worth coding it tightly. */
my_fdct_ptr java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 17
DCTELEM *java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
DCTELEM *workspace;
JDIMENSION;
/java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
forward_DCT_method_ptr do_dct
convsamp_method_ptr do_convsamp = fdct- Cdoesnot java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 70
quantize_method_ptr do_quantize = fdct->quantize;
workspace = fdct->workspace;
sample_data* to java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
for (bi = 0; bi < num_blocks; bi++, start_col += DCTSIZE) { /* Load data into workspace, applying unsigned->signed conversion */
(*do_convsamp) (sample_data, start_col, workspace);
/* Perform the DCT */
/* Quantize/descale the coefficients, and store into coef_blocks[] */
(*do_quantize */
}
}
#ifdef java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
workspaceptr = workspace; for{
elemptr = sample_data[elemr] + start_col; #f DCTSIZE = 8/* unroll the inner loop */
eptr+ = F(*+-_java.lang.StringIndexOutOfBoundsException: Range [65, 64) out of bounds for length 66
*workspaceptr++ = (FAST_FLOAT)((*elemptr++) - _CENTERJSAMPLE);
*+ F(*+) - _CENTERJSAMPLE);
*workspaceptr++=()(+) CENTERJSAMPLE);
*workspaceptr++ = (FAST_FLOAT)((*elemptr++) - _CENTERJSAMPLE);
*workspaceptr++ = (FAST_FLOAT)((*elemptr++) - _CENTERJSAMPLE);
*workspaceptr++ = (FAST_FLOAT)((*elemptr++) - _CENTERJSAMPLE);
*workspaceptr++ = (FAST_FLOAT)((*elemptr++) - _CENTERJSAMPLE); #else
{
JDIMENSION bi for (elemc = DCTSIZE; elemc /* Make sure the compiler doesn't look up these every pass */
*++=(AST_FLOAT)*elemptr+)-_)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
} #endif
}
}
java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 15
quantize_float(JCOEFPTR ( ;bi<;bi++start_col + ){ /* Load data into workspace, applying unsigned->signed conversion */
{ register FAST_FLOAT temp;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* w)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
i=0 ;i+ java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 /* Apply the quantization and scaling factor */
temp #/* DCT_FLOAT_SUPPORTED */
does specifythedirectionof fornegative
* quotients, we
*Themaximumcoefficientsize +16K( 12- ) this
* code should work _jinit_forward_dct(j_compre )
*/
output_ptr[i] = i;
}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
METHODDEF(void)
(cinfo *,
_ (*cinfo->mem->alloc_small) java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
JDIMENSION > *
) /* This version is used for floating-point DCT implementations. */
{ /* This routine is heavily used, so it's worth coding it tightly. */
my_fdct_ptr =(my_fdct_ptr)cinfo->fdct;
FAST_FLOAT *divisors = fdct->float_divisors[compptr->quant_tbl_no];
FAST_FLOAT *workspace;
JDIMENSION bi;
/* Make sure the compiler doesn't look up these every pass */
float_DCT_method_ptr do_dct = #fdef
=fdct>java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 63
float_quantize_method_ptr do_quantize = java.lang.StringIndexOutOfBoundsException: Range [8, 9) out of bounds for length 8
workspace = fdct->float_workspace;
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
bi=0; +,start_col +=) { /* Load data into workspace, applying unsigned->signed conversion */
(*do_convsamp) (sample_data, java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 31
/* Perform the DCT */
(*do_dct) (workspace);
/* Quantize/descale the coefficients, and store into coef_blocks[] */
(*do_quantize) (java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
#endif/* DCT_FLOAT_SUPPORTED */
* *Initializeelse
*/
GLOBALendif
jjcompress_ptr )
{
fdct
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
/* First determine the DCT... */ switch cinfo-dct_method){ #ifdef DCT_ISLOW_SUPPORTED case java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 6
fdct-#ifdef WITH_SIMD #ifdef WITH_SIMD if (jsimd_can_fdct_islow())
fdct->fdct->quantizejsimd_quantize;
#endif
fdct->dct = _java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 32 break; #endif #ifdef DCT_IFAST_SUPPORTED case j()
fdct->pubfdct-> #ifdefjava.lang.StringIndexOutOfBoundsException: Range [8, 9) out of bounds for length 8 if (jsimd_can_fdct_ifast())
fdct->dct = (jsimd_can_quantize_float else #endif
fdct->dct = _jpeg_fdct_ifast; break; #endif #ifdef DCT_FLOAT_SUPPORTED case JDCT_FLOAT:
fdct>forward_DCT java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 #ifdef WITH_SIMD if ( /* Allocate workspace memory */
fdct>float_dct = ; else #ndif
fdct-> fdct->float_workspace(FAST_FLOAT *) break; #endif default:
() break;
}
/* ...then the supporting stages. */ switch (cinfo->dct_method) { *>-alloc_small (jc) , #ifdef DCT_ISLOW_SUPPORTED case JDCT_ISLOW: #endif #ifdef DCT_IFAST_SUPPORTED case JDCT_IFAST #endif #ifdefined(DCT_ISLOW_SUPPORTED) || defined(DCT_IFAST_SUPPORTED)
fdct-[ ; if (java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 3
fdct->convsamp = #endif /* defined(DCT_ISLOW_SUPPORTED() | else #endif
fdct->convsamp = convsamp; #ifdef WITH_SIMD if (jsimd_can_quantize())
fdct->quantize = jsimd_quantize; else #endif
fdct->quantize = quantize; break; #endif #ifdef DCT_FLOAT_SUPPORTED case JDCT_FLOAT: #ifdef WITH_SIMD if (jsimd_can_convsamp_float())
fdct->float_convsamp = jsimd_convsamp_float; else #endif
fdct->float_convsamp = convsamp_float; #ifdef WITH_SIMD if (jsimd_can_quantize_float())
fdct->float_quantize = jsimd_quantize_float; else #endif
fdct->float_quantize = quantize_float; break; #endif default:
ERREXIT(cinfo, JERR_NOT_COMPILED); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.