v33.satoken.oauth2.consts.SaOAuth2Consts;
import cn.dev33.satoken.oauth2.data.model.AccessTokenModel;
import cn.dev33.satoken.oauth2.data.model.ClientTokenModel;
import cn.dev33.satoken.oauth2.scope.CommonScope;

/**
 * UserId 权限处理器：在 AccessToken 扩展参数中追加 userid 字段
 *
 * @author click33
 * @since 1.39.0
 */
public class UserIdScopeHandler implements SaOAuth2ScopeHandlerInterface {

    public String getHandlerScope() {
        return CommonScope.USERID;
    }

    @Override
    public void workAccessToken(AccessTokenModel at) {
        at.extraData.put(SaOAuth2Consts.ExtraField.userid, at.loginId);
    }

    @Override
    public void workClientToken(ClientTokenModel ct) {

    }

}/*
 * Copyright 2020-2099 sa-token.cc
 *
 * 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 the specific language governing permissions and
 * limitations under the License.
 */
package cn.dev33.satoken.oauth2.data.model;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * Model: Access-Token
 *
 * @author click33
 * @since 1.23.0
 */
public class AccessTokenModel implements Serializable {

	private static final long serialVersionUID = -6541180061782004705L;

	/**
	 * Access-Token 值
	 */
	public String accessToken;

	/**
	 * Refresh-Token 值
	 */
	public String refreshToken;

	/**
	 * Access-Token 到期时间
	 */
	public long expiresTime;

	/**
	 * Refresh-Token 到期时间
	 */
	public long refreshExpiresTime;

	/**
	 * 应用id
	 */
	public String clientId;

	/**
	 * 账号id
	 */
	public Object loginId;

	/**
	 * 授权范围
	 */
	public List<String> scopes;

	/**
	 * Token 类型
	 */
	public String tokenType;

	/**
	 * 授权类型
	 */
	public String grantType;

	/**
	 * 扩展数据
	 */
	public Map<String, Object> extraData;

	/**
	 * 创建时间，13位时间戳
	 */
	public long createTime;

	public AccessTokenModel() {
		this.createTime = System.currentTimeMillis();
	}

	/**
	 * 构建一个
	 * @param accessToken accessToken
	 * @param clientId 应用id
	 * @param scopes 请求授权范围
	 * @param loginId 对应的账号id
	 */
	public AccessTokenModel(String accessToken, String clientId, Object loginId, List<String> scopes) {
		this();
		this.accessToken = accessToken;
		this.clientId = clientId;
		this.loginId = loginId;
		this.scopes = scopes;
	}

	// 额外追加方法

	/**
	 * 获取：此 Access-Token 的剩余有效期（秒）
	 * @return /
	 */
	public long getExpires


f10,  1 * SIZE
	(p13) FMA	f6  = ALPHA, f48, f50
	(p12) STFD	[Y2] = f11,  1 * SIZE
	(p14) FMA	f7  = ALPHA, f56, f58
	;;
	(p12) STFD	[Y1] = f12,  1 * SIZE
	(p13) FMA	f10 = ALPHA, f49, f51
	(p12) STFD	[Y2] = f13,  1 * SIZE
	(p14) FMA	f11 = ALPHA, f57, f59
	;;
	(p12) STFD	[Y1] = f14,  5 * SIZE
	(p13) FMA	f12 = ALPHA, f52, f54
	(p12) STFD	[Y2] = f15,  5 * SIZE
	(p15) FMA	f13 = ALPHA, f60, f61
	;;
	(p13) STFD	[Y1] = f6,   1 * SIZE
	(p14) STFD	[YY] = f7,   1 * SIZE
	(p13) FMA	f14 = ALPHA, f53, f55
	;;
	(p13) STFD	[Y1] = f10,  1 * SIZE
	(p14) STFD	[YY] = f11,  1 * SIZE
	;;
	(p13) STFD	[Y1] = f12,  1 * SIZE
	(p15) STFD	[YY] = f13
	;;
	(p13) STFD	[Y1] = f14
	br.ret.sptk.many b0
	;;
	.align 32

.L100:
	{ .mii
	and	J =  15, N
	shr	I =  N, 4
	mov	ar.ec = 3
	}
	;;
	{ .mmi
	cmp.eq	p9, p0  =   r0, J
	cmp.eq	p7 ,p0  = 0, I
	adds	I = -1, I
	}
	;;
	{ .mmi
	(p10) STFD [YYY] = f32
	adds	PRE1 = PREFETCHSIZE * SIZE, X
	mov	ar.lc = I
	}
	{ .mib
	adds	PRE2 = PREFETCHSIZE * SIZE, Y
	tbit.z	p0, p12 = N, 3
	(p7) br.cond.dpnt  .L115
	}
	;;
	.align 32

.L112:
	{ .mmi
	(p18) STFD	[Y1] = f6
	(p16) lfetch.nt1	[PRE1], INCX16
	(p18) add Y1 = INCY, Y1
	}
	{.mmf
	(p16) LDFD	f32  = [X], INCX
	(p16) LDFD	f80  = [Y], INCY
	(p18) FMA	f6  = ALPHA, f58, f106
	}
	;;
	{ .mmi
 	(p18) STFD	[Y1] = f7
	(p16) lfetch.excl.nt1	[PRE2], INCY16
	(p18) add Y1 = INCY, Y1
	}
	{ .mmf
	(p16) LDFD	f35  = [X], INCX
	(p16) LDFD	f83  = [Y], INCY
	(p18) FMA	f7  = ALPHA, f61, f109
	}
	;;
	{ .mmi
	(p18) STFD	[Y1] = f10
	(p18) add Y1 = INCY, Y1
	nop.i 0
	}
	{ .mmf
	(p16) LDFD	f38  = [X], INCX
	(p16) LDFD	f86  = [Y], INCY
	(p18


});
			Fields.Sort();

			LinkTypes();

			Log.Default.AddInformation(
				$"Loaded Types from {path} {version}: {Enums.Count} enum's, {Classes.Count} classes, {Fields.Count} fields"
			);
		}

		//...........................................................

		private void LinkTypes()
		{
			foreach( var parent_info in Classes ) {
				foreach( var field in parent_info.Type.GetFields() ) {
					if( field.FieldType.IsGenericType ) {
						// e.g. List<GcBlah>, link GcBlah to parent_info
						foreach( var generic_type in field.FieldType.GenericTypeArguments ) {
							LinkField(parent_info, generic_type);
						}
					}
					else {
						LinkField(parent_info, field.FieldType);
					}
				}
			}
		}

		//...........................................................

		private void LinkField( ClassInfo PARENT, Type TYPE )
		{
			if( TYPE.IsEnum ) {
				var enum_info  = FindEnum(TYPE.Name);
				if( enum_info != null &&
					enum_info.Parent != PARENT


  _ref = this.chunks;
	        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
	          chunk = _ref[_i];
	          this.document._write(chunk);
	        }
	        this.chunks.length = 0;
	        this.document._write('\nendstream');
	      }
	      this.document._write('endobj');
	      return this.document._refEnd(this);
	    };

	    PDFReference.prototype.toString = function() {
	      return "" + this.id + " " + this.gen + " R";
	    };

	    return PDFReference;

	  })();

	  module.exports = PDFReference;

	  PDFObject = __webpack_require__(45);

	}).call(this);

	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer))

/***/ },
/* 47 */
/***/ function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(Buffer, process) {// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	var Transform = __webpack_require__(42);

	var binding = __webpack_require__(48);
	var util = __webpack_require__(60);
	var assert = __webpack_require__(63).ok;

	// zlib doesn't provide these, so kludge them in following the same
	// const naming scheme zlib uses.
	binding.Z_MIN_WINDOWBITS = 8;
	binding.Z_MAX_WINDOWBITS = 15;
	binding.Z_DEFAULT_WINDOWBITS = 15;

	// fewer than 64 bytes per chunk is stupid.
	// technically it could work with as few as 8, but even 64 bytes
	// is absurdly low.  Usually a MB or more is best.
	binding.Z_MIN_CHUNK = 64;
	binding.Z_MAX_CHUNK = Infinity;
	binding.Z_DEFAULT_CHUNK = (16 * 1024);

	binding.Z_MIN_MEMLEVEL = 1;
	binding.Z_MAX_MEMLEVEL = 9;
	binding.Z_DEFAULT_MEMLEVEL = 8;

	binding.Z_MIN_LEVEL = -1;
	binding.Z_MAX_LEVEL = 9;
	binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;

	// expose all the zlib constants
	Object.keys(binding).forEach(function(k) {
	  if (k.match(/^Z/)) exports[k] = binding[k];
	});

	// translation table for return codes.
	exports.codes = {
	  Z_OK: binding.Z_OK,
	  Z_STREAM_END: binding.Z_STREAM_END,
	  Z_NEED_DICT: binding.Z_NEED_DICT,
	  Z_ERRNO: binding.Z_ERRNO,
	  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,
	  Z_DATA_ERROR: binding.Z_DATA_ERROR,
	  Z_MEM_ERROR: binding.Z_MEM_ERROR,
	  Z_BUF_ERROR: binding.Z_BUF_ERROR,
	  Z_VERSION_ERROR:


员李金帛。定南县食品公司业务员曾鉴，于1934年11月任铲共义勇队长，在兴国三僚乡大肆捕捉苏区革命干部，抄革命同志的家，对被捕的同志进行严刑拷打，县财政部长曾广炘同志被曾犯用铁锤活活打死，并杀害了区财政部长、裁判部长等5个同志，于都县在乡一级干部中查出的坏分子段裘跃，1952年任安塘乡乡长期间，亲自召开段姓有关人员密商办法，包庇恶霸段绍桃4年之外，直到1956年5月这个恶霸病死了，还把尸体丢在塘里，伪造“自杀”假相，掩盖其罪行。区党委农村工作部副科长张捷，原名张耀南，是一个军统和中统特务分子。

   运动中破获了所谓“中国青年先锋党”、“青年救国团”、“中华青年革新会”、“自由党反共联民游击队”等现行反革命组织4起，24人。

   运动中清查出不以反革命分子论处的普通反革命分子1362名，由于党的宽大政策的感召，不仅瓦解和分化了敌人，更重要的是使他们多数人放下了包袱，积极从事有利于社会主义事业的工作；其他刑事犯罪分子74名。

    运动中查获了长短枪19支，子弹241发，炸药11斤，各种反动证件一批。

   运动的情况证明：党中央“90％几都是好人，有2％左右的反革命分子还暗藏在我们内部”的指示，是完全正确的。这一场严重的阶级斗争，在社会主义革命和社会主义建设时期是必要的，是不可避免的。这一斗争的胜利，进一步巩固了无产阶级专政，保卫了社会主义革命和社会主义建设事业的顺利进行。

   反、坏分子之所以能够混进我们的队伍，钻到我们党内和共青团内，是有其主观和客观原因的：第一、全国解放后，根据包下来的政策，留用了


xturedVertexArray {
        fast.setFloat32(offset + 1, v)
        return this
    }
    /** Sets the [u] (x in texture) of the vertex previously selected calling [select] */
    inline fun setU(v: Float): TexturedVertexArray {
        fast.setFloat32(offset + 2, v)
        return this
    }
    /** Sets the [v] (y in texture) of the vertex previously selected calling [select] */
    inline fun setV(v: Float): TexturedVertexArray {
        fast.setFloat32(offset + 3, v)
        return this
    }
    /** Sets the [cMul] (multiplicative color) of the vertex previously selected calling [select] */
    inline fun setCMul(v: RGBA): TexturedVertexArray {
        fast.setInt32(offset + 4, v.value)
        return this
    }
    /** Sets the [x] and [y] with the [matrix] transform applied of the vertex previously selected calling [select] */
    fun xy(x: Double, y: Double, matrix: Matrix) = setX(matrix.transformX(x, y).toFloat()).setY(matrix.transformY(x, y).toFloat())
    /** Sets the [x] and [y] of the vertex previously selected calling [select] */
    fun xy(x: Double, y: Double) = setX(x.toFloat()).setY(y.toFloat())
    /** Sets the [u] and [v] of the vertex previously selected calling [select] */
    fun uv(tx: Float, ty: Float) = setU(tx).setV(ty)
    /** Sets the [cMul]  (multiplicative colors) of the vertex previously selected calling [select] */
    fun cols(colMul: RGBA) = setCMul(colMul)

    fun quadV(index: Int, x: Float, y: Float, u: Float, v: Float, colMul: RGBA) {
        quadV(fast, index * TEXTURED_ARRAY_COMPONENTS_PER_VERTEX, x, y, u, v, colMul.value)
    }

    fun quadV(fast: Buffer, pos: Int, x: Float, y: Float, u: Float, v: Float, colMul: Int): Int {
        fast.setFloat32(pos + 0, x)
        fast.setFloat32(pos + 1, y)
        fast.setFloat32(pos + 2, u)
        fast.setFloat32(pos + 3, v)
        fast.setInt32(pos + 4, colMul)
        fast.setInt32(pos + 5, 0)
        return TEXTURED_ARRAY_COMPONENTS_PER_VERTEX
    }

    /**
     * Sets a textured quad at vertice [index] with the region defined by [x],[y] [width]x[height] and the [matrix],
     * using the texture coords defined by [BmpSlice] and color transforms [colMul]
     */
    @OptIn(KorgeInternal::class)
    @Deprecated("Use Float version instead")
    fun quad(index: Int, x: Double, y: Double, width: Double, height: Double, matrix: Matrix, bmp: BmpCoords, colMul: RGBA) {
        quad(index, x.toFloat(), y.toFloat(), width.toFloat(), height.toFloat(), matrix, bmp, colMul)
    }

    @OptIn(KorgeInternal::class)
    fun quad(index: Int, x: Float, y: Float, width: Float, height: Float, matrix: Matrix, bmp: BmpCoords, colMul: RGBA) {
        quad(index, x, y, width, height, matrix, bmp.tlX, bmp.tlY, bmp.trX, bmp.trY, bmp.blX, bmp.blY, bmp.brX, bmp.brY, colMul)
    }
    @OptIn(KorgeInternal::class)
    fun quad(
        index: Int, x: Float, y: Float, width: Float, height: Float, matrix: Matrix,
        tl_x: Float, tl_y: Float,
        tr_x: Float, tr_y: Float,
        bl_x: Float, bl_y: Float,
        br


 backend URL, exiting...");
            return;
        }

        if (string.IsNullOrEmpty(backendOptions.Token))
        {
            Console.WriteLine("Unable to get backend token, exiting...");
            return;
        }

        Console.CancelKeyPress += (_, eventArguments) =>
        {
            _quitEvent.Set();
            eventArguments.Cancel = true;
        };

        TelegramBotClient bot = new TelegramBotClient(telegramOptions.Token);
        Handlers handlers = new Handlers(bot, backendOptions);
        using CancellationTokenSource cts = new CancellationTokenSource();

        // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool, so we use cancellation token
        bot.StartReceiving(
            handlers.HandleUpdate,
            errorHandler: handlers.HandleError,
            cancellationToken: cts.Token
        );

        // Tell the user the bot is online
        Console.WriteLine("TiteenipeliBot is running and is listening for updates. Press Ctrl-C to stop");
        _quitEvent.WaitOne();

        // Send cancellation request to stop the bot
        cts.Cancel();
    }
}


0D9\u0084\u00D8\u00A7\u00D9\u0085\u00D9\u008A\u00D8\u00A9\u00D8\u00A7\u00D9\u0084\u00D8\u00A7\u00D8\u00AA\u00D8\u00B5\u00D8\u00A7\u00D9\u0084\u00D8\u00A7\u00D8\u00AAkeywords\" content=\"w3.org/1999/xhtml\">

<div id=<img src=\"http://cript\" src=\"http://\n\n
\n<div class=\"w3.org/1999/xhtml\" \n\r\n\r\ndistinction between/\" target=\"_blank\"><link href=\"http://encoding=\"utf-8\"?>\nw.addEventListener?action=\"http://www.icon\" href=\"http:// style=\"background:type=\"text/css\" />\nmeta property=\"og:t<input type=\"text\"  style=\"text-align:the development of tylesheet\" type=\"tehtml; charset=utf-8is considered to betable width=\"100%\" In addition to the contributed to the differences betweendevelopment of the It is important to </script>\n\n


始保存简历数据（无需登录）");

            // 使用雪花算法生成分布式ID
            Long snowflakeId = snowflakeIdGenerator.nextId();
            String content = objectMapper.writeValueAsString(resumeData);
            logger.debug("转换后的JSON内容: {}", content);

            // 创建简历实体
            Resume resume = new Resume();
            resume.setId(snowflakeId);
            resume.setContent(content);
            resume.setCreateTime(LocalDateTime.now());
            resume.setUpdateTime(LocalDateTime.now());
            resume.setStatus(Resume.STATUS_PUBLISHED); // 默认为已发布状态
            resume.setLikeCount(0); // 默认点赞数为0
            resume.setUserId(null); // 不设置用户ID
            resume.setTitle("临时简历"); // 默认标题
            resume.setIsTemplate(false); // 默认非模板

            // 保存到数据库
            resumeMapper.insert(resume);
            logger.info("简历保存成功，ID: {}", snowflakeId);

            return String.valueOf(snowflakeId);
        } catch (Exception e) {
            logger.error("保存简历失败", e);
            throw new RuntimeException("保存简历失败: " + e.getMessage(), e);
        }
    }

    public List<Map<String, Object>> getResume(String id) {
        try {
            logger.info("开始获取简历数据，ID: {}", id);

            Resume resume = resumeMapper.findById(Long.valueOf(id));
            if (resume == null) {
                logger.warn("简历不存在，ID: {}", id);
                throw new RuntimeException("简历不存在");
            }

            List<Map<String, Object>> result = objectMapper.readValue(resume.getContent(),
                    objectMapper.getTypeFactory().constructCollectionType(List.class, Map.class));
            logger.info("成功获取简历数据，ID: {}", id);

            return result;
        } catch (Exception e) {
            logger.error("读取简历失败", e);
            throw new RuntimeException("读取简历失败: " + e.getMessage(), e);
        }
    }

    public List<Resume> getAllResumes() {
        logger.info("获取所有简历列表");
        return resumeMapper.findAll();
    }

    @Transactional
    public void increaseLikeCount(Long id) {
        try {
            logger.info("增加简历点赞数，ID: {}", id);
            resumeMapper.increaseLikeCount(id);
            logger.info("简历点赞数增加成功，ID: {}", id);
        } catch (Exception e) {
            logger.error("增加简历点赞数失败", e);
            throw new RuntimeException("增加简历点赞数失败: " + e.getMessage(), e);
        }
    }

    /**
     * 获取用户的简历列表
     */
    public List<Resume> getUserResumes(String userId) {
        try {
            logger.info("获取用户简历列表，用户ID: {}", userId);

            // 验证用户是否存在且活跃
            if (userId == null || !userService.validateUserPermission(userId)) {
                throw new RuntimeException("用户未登录或用户无效");
            }

            return resumeMapper.findByUserId(userId);
        } catch (Exception e) {
            logger.error("获取用户简历列表失


 conn.availServices[(snac[idx++] << 8) + snac[idx++]] = (snac[idx++] << 8) + snac[idx++];
          self._login(undefined, conn, cb, 4);
        break;
        default:
          debugtext += 'Unknown (0x' + subtypeID.toString(16) + ')';
      }
    break;
    case SNAC_SERVICES.LOCATION:
      debugtext += 'LOCATION > ';
      switch (subtypeID) {
        case 0x01: // error
          debugtext += 'Error';
          var code = (snac[idx++] << 8) + snac[idx++], msg = GLOBAL_ERRORS_TEXT[code] || 'Unknown error code received: ' + code,
              err = new Error(msg);
          err.code = code;
          debugtext += ': ' + msg;
          self._dispatch(reqID, err);
        break;
        case 0x03: // limits response
          debugtext += 'Service limits';
          tlvs = extractTLVs(snac);
          if (!self._state.svcInfo[SNAC_SERVICES.LOCATION]) {
            self._state.svcInfo[SNAC_SERVICES.LOCATION] = {};
            self._state.svcInfo[SNAC_SERVICES.LOCATION].maxProfileLen = (tlvs[0x01][0] << 8) + tlvs[0x01][1];
            self._state.svcInfo[SNAC_SERVICES.LOCATION].maxCapabilities = (tlvs[0x02][0] << 8) + tlvs[0x02][1];
          }
          debugtext += ': maxProfileLen = ' + ((tlvs[0x01][0] << 8) + tlvs[0x01][1]);
          debugtext += ', maxCapabilities = ' + ((tlvs[0x02][0] << 8) + tlvs[0x02][1]);
          self._dispatch(reqID);
        break;
        case 0x06: // user info response
          debugtext += 'User info for ';
          var info = self._parseUserInfo(snac, idx, true);
          idx = info[1];
          info = info[0];
          tlvs = extractTLVs(snac, idx);
          if (tlvs[0x0001]) {
            var encoding = tlvs[0x0001].toString().toLowerCase();
            encoding = (encoding === 'utf8' || encoding === 'utf-8' ? 'utf8' : 'ascii');
            if (tlvs[0x0002])
              info.profile = tlvs[0x0002].toString(encoding);
          }
          if (tlvs[0x0003]) {
            var encoding = tlvs[0x0003].toString().toLowerCase();
            encoding = (encoding !== 'ascii' && encoding !== 'utf8' && encoding !== 'utf-8' ? 'ascii' : encoding);
            if (tlvs[0x0004])
              info.away = tlvs[0x0004].toString(encoding);
          }
          if ((!info.capabilities || info.capabilities.length === 0) && tlvs[0x0005] && tlvs[0x0005].length > 0) {
            info.capabilities = [];
            var caps = tlvs[0x0005].toArray();
            for (var i=0,len=caps.length; i<len; i+=16)
              info.capabilities.push(caps.slice(i, i+16));
          }
          var check = self._SSIFindContact(info.name);
          if (check[1] !== -1)
            self._mergeInfo(info.name, info);
          debugtext += info.name;
          self._dispatch(reqID, undefined, info);
        break;
        default:
          debugtext += 'Unknown (0x' + subtypeID.toString(16) + ')';
      }
    break;
    case SNAC_SERVICES.LIST_MGMT:
      debugtext += 'LIST_MGMT > ';
      switch (subtypeID) {
        case 0x03: // limits response
          debugtext += 'Service limits';
          tlvs = extractTLVs(


        mBinding = ActivityDozeRunLogBinding.inflate(layoutInflater)
        setContentView(mBinding.root)
        initStatusBar()
    }

    override fun onResume() {
        loadLogData()
        super.onResume()
    }

    override fun initStatusBar() {
        super.initStatusBar()
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setHomeButtonEnabled(true)
        supportActionBar?.title = getString(R.string.doze_run_log)
    }

    private fun loadLogData() {
        try {
            mLogContent = DozeManager.readFile("Android/doze.log", this, "\n")
            if (mLogContent.isEmpty()) {
                mLogContent = getString(R.string.found_log_file) + "但是内容为空!"
            }
        } catch (e: Exception) {
            mLogContent = getString(R.string.not_found_log_file)
        }
        mLogTextView = mBinding.logContent
        mLogTextView.text = mLogContent
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu_run_log, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.delete_log -> {
                val promptBinding = TipsLayoutBinding.inflate(layoutInflater)
                promptBinding.promptContent.text = getString(R.string.prompt_delete_log)
                val alertDialogBuilder = AlertDialog.Builder(this)
                alertDialogBuilder.setTitle(R.string.prompt)
                alertDialogBuilder.setView(promptBinding.root)
                alertDialogBuilder.setNegativeButton(
                    "OK"
                ) { _, _ ->
                    run {
                        DozeManager.deleteFile("Android/doze.log", this)
                        loadLogData()
                    }
                }

                alertDialogBuilder.setPositiveButton(
                    "Cancel"
                ) { dialog, _ ->
                    dialog.cancel()
                }
                val dialog = alertDialogBuilder.create()
                dialog.show()
                true
            }
            android.R.id.home -> {
                finish()
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }

}package com.vasthread.webviewtv.app

import android.app.Application
import android.os.Build
import android.util.Log
import com.tencent.bugly.crashreport.CrashReport
import com.tencent.smtt.export.external.TbsCoreSettings
import com.tencent.smtt.sdk.QbSdk
import com.tencent.smtt.sdk.QbSdk.PreInitCallback
import com.vasthread.webviewtv.misc.setApplication
import com.vasthread.webviewtv.settings.SettingsManager
import me.jessyan.autosize.AutoSizeConfig

class LiveApplication : Application() {

    companion object {
        private const val TAG = "LiveApplication"
    }

    override fun onCreate() {
        super.onCreate()
        setApplication(this)
        initAutoSize()
        initCrashReport()
        initX5()
    }

    private fun initAutoSize() {
        AutoSizeConfig.getInstance().setExcludeFontScale(true)
    }

    private fun initX5() {
        val settings = mutableMapOf<String, Any>(
            TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER to true,
            TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE to true,
        )
        QbSdk.initTbsSettings(settings)
        QbSdk.initX5Environment(this, object : PreInitCallback {
            override fun onCoreInitFinished() {
                Log.i(TAG, "onCoreInitFinished")
            }

            override fun onViewInitFinished(isX5: B


ame=='%s']|[0]", name), getRespBody, nil)
		if dbSchema != nil {
			break
		}
		totalCount := utils.PathSearch("total_count", getRespBody, float64(0)).(float64)
		if int(totalCount) <= (offset+1)*100 {
			break
		}
		offset++
	}
	if dbSchema == nil {
		return nil, golangsdk.ErrDefault404{}
	}
	return dbSchema, nil
}

func buildOpenGaussSchemaQueryParams(dbName string, offset int) string {
	return fmt.Sprintf("?db_name=%s&limit=100&offset=%v", dbName, offset)
}

func TestAccOpenGaussSchema_basic(t *testing.T) {
	var obj interface{}

	name := acceptance.RandomAccResourceName()
	rName := "huaweicloud_gaussdb_opengauss_schema.test"

	rc := acceptance.InitResourceCheck(
		rName,
		&obj,
		getOpenGaussSchemaResourceFunc,
	)

	resource.ParallelTest(t, resource.TestCase{
		PreCheck: func() {
			acceptance.TestAccPreCheck(t)
			acceptance.TestAccPreCheckEpsID(t)
			acceptance.TestAccPreCheckHighCostAllow(t)
		},
		ProviderFactories: acceptance.TestAccProviderFactories,
		CheckDestroy:      rc.CheckResourceDestroy(),
		Steps: []resource.TestStep{
			{
				Config: testOpenGaussSchema_basic(name),
				Check: resource.ComposeTestCheckFunc(
					rc.CheckResourceExists(),
					resource.TestCheckResourceAttrPair(rName, "instance_id",
						"huaweicloud_gaussdb_opengauss_instance.test", "id"),
					resource.TestCheckResourceAttrPair(rName, "db_name",
						"huaweicloud_gaussdb_opengauss_database.test", "name"),
					resource.TestCheckResourceAttr(rName, "name", name),
					resource.TestCheckResourceAttr(rName, "owner", "root"),
				),
			},
			{
				ResourceName:      rName,
				ImportState:       true,
				ImportStateVerify: true,
				ImportStateIdFunc: testAccOpenGaussSchemaImportStateFunc(rName),
			},
		},
	})
}

func testOpenGaussSchema_base(rName string) string {
	return fmt.Sprintf(`
%[1]s

data "huaweicloud_availability_zones" "test" {}

data "huaweicloud_gaussdb_opengauss_flavors" "test" {
  version = "8.201"
  ha_mode = "centralization_standard"
}

resource "huaweicloud_networking_secgroup_rule" "in_v4_tcp_opengauss" {
  security_group_id = huaweicloud_networking_secgroup.test.id
  ethertype         = "IPv4"
  direction         = "ingress"
  protocol          = "tcp"
  remote_ip_prefix  = "0.0.0.0/0"
}

resource "huaweicloud_networking_secgroup_rule" "in_v4_tcp_opengauss_egress" {
  security_group_id = huaweicloud_networking_secgroup.test.id
  ethertype         = "IPv4"
  direction         = "egress"
  protocol          = "tcp"
  remote_ip_prefix  = "0.0.0.0/0"
}

resource "huaweicloud_gaussdb_opengauss_instance" "test" {
  depends_on = [
    huaweicloud_networking_secgroup_rule.in_v4_tcp_opengauss,
    huaweicloud_networking_secgroup_rule.in_v4_tcp_openg


nging2 as usize, chs: "低空坠地冲击伤害" },
            CharacterSkillMapItem { index: YanfeiDamageEnum::Plunging3 as usize, chs: "高空坠地冲击伤害" },
        ]),
        skill2: Some(&[
            CharacterSkillMapItem { index: YanfeiDamageEnum::E1 as usize, chs: "技能伤害" },
        ]),
        skill3: Some(&[
            CharacterSkillMapItem { index: YanfeiDamageEnum::Q1 as usize, chs: "技能伤害" }
        ])
    };

    #[cfg(not(target_family = "wasm"))]
    const CONFIG_SKILL: Option<&'static [ItemConfig]> = Some(&[
        ItemConfig {
            name: "after_q",
            title: "灼灼",
            config: ItemConfigType::Bool { default: true }
        }
    ]);

    fn damage_internal<D: DamageBuilder>(context: &DamageContext<'_, D::AttributeType>, s: usize, config: &CharacterSkillConfig) -> D::Result {
        let s: YanfeiDamageEnum = num::FromPrimitive::from_usize(s).unwrap();
        let (s1, s2, s3) = context.character_common_data.get_3_skill();

        use YanfeiDamageEnum::*;
        let ratio = match s {
            Normal1 => YANFEI_SKILL.normal1[s1],
            Normal2 => YANFEI_SKILL.normal2[s1],
            Normal3 => YANFEI_SKILL.normal3[s1],
            Charged1 => YANFEI_SKILL.charged1[s1],
            Charged2 => YANFEI_SKILL.charged2[s1],
            Charged3 => YANFEI_SKILL.charged3[s1],
            Charged4 => YANFEI_SKILL.charged4[s1],
            Charged5 => YANFEI_SKILL.charged5[s1],
            DmgTalent2 => 0.8,
            Plunging1 => YANFEI_SKILL.plunging1[s1],
            Plunging2 => YANFEI_SKILL.plunging2[s1],
            Plunging3 => YANFEI_SKILL.plunging3[s1],
            E1 => YANFEI_SKILL.elemental_skill_dmg1[s2],
            Q1 => YANFEI_SKILL.elemental_burst_dmg1[s3],
        };

        let mut builder = D::new();
        builder.add_atk_ratio("技能倍率", ratio);

        let after_q = match *config {
            CharacterSkillConfig::Yanfei { after_q } => after_q,
            _ => false
        };
        let skill_type = s.get_skill_type();
        if skill_type == SkillType::ChargedAttack && after_q {
            let bonus = YANFEI_SKILL.elemental_burst_b_bonus[s3];
            builder.add_extra_bonus("灼灼", bonus);
        }

        builder.damage(
            &context.attribute,
            &context.enemy,
            Element::Pyro,
            skill_type,
            context.character_common_data.level
        )
    }

    fn new_effect<A: Attribute>(_common_data: &CharacterCommonData, _config: &CharacterConfig) -> Option<Box<dyn ChangeAttribute<A>>> {
        None
    }

    fn get_target_function_by_role(role_index: usize, _team: &TeamQuantization, _c: &


# -*- coding: utf-8 -*-

class MarkedForDeprecationWarning(DeprecationWarning):
    pass

class RemovedInNextVersionWarning(DeprecationWarning):
    pass


yIndex(16, 3).text = 'AWC Logo Cap';
    sheet.getRangeByIndex(17, 3).text = 'Long-Sleeve Logo Jersey, M';
    sheet.getRangeByIndex(18, 3).text = 'Mountain Bike Socks, M';
    sheet.getRangeByIndex(19, 3).text = 'ML Fork';
    sheet.getRangeByIndex(20, 3).text = 'Sports-100 Helmet, Black';

    sheet.getRangeByIndex(15, 3, 15, 4).merge();
    sheet.getRangeByIndex(16, 3, 16, 4).merge();
    sheet.getRangeByIndex(17, 3, 17, 4).merge();
    sheet.getRangeByIndex(18, 3, 18, 4).merge();
    sheet.getRangeByIndex(19, 3, 19, 4).merge();
    sheet.getRangeByIndex(20, 3, 20, 4).merge();

    sheet.getRangeByIndex(15, 5).text = 'Quantity';
    sheet.getRangeByIndex(16, 5).number = 2;
    sheet.getRangeByIndex(17, 5).number = 3;
    sheet.getRangeByIndex(18, 5).number = 2;
    sheet.getRangeByIndex(19, 5).number = 6;
    sheet.getRangeByIndex(20, 5).number = 1;

    sheet.getRangeByIndex(15, 6).text = 'Price';
    sheet.getRangeByIndex(16, 6).number = 8.99;
    sheet.getRangeByIndex(17, 6).number = 49.99;
    sheet.getRangeByIndex(18, 6).number = 9.50;
    sheet.getRangeByIndex(19, 6).number = 175.49;
    sheet.getRangeByIndex(20, 6).number = 34.99;

    sheet.getRangeByIndex(15, 7).text = 'Total';
    sheet.getRangeByIndex(16, 7).formula = '=E16*F16+(E16*F16)';
    sheet.getRangeByIndex(17, 7).formula = '=E17*F17+(E17*F17)';
    sheet.getRangeByIndex(18, 7).formula = '=E18*F18+(E18*F18)';
    sheet.getRangeByIndex(19, 7).formula = '=E19*F19+(E19*F19)';
    sheet.getRangeByIndex(20, 7).formula = '=E20*F20+(E20*F20)';
    sheet.getRangeByIndex(15, 6, 20, 7).numberFormat = r'$#,##0.00';

    sheet.getRangeByName('E15:G15').cellStyle.hAlign = HAlignType.right;
    sheet.getRangeByName('B15:G15').cellStyle.fontSize = 10;
    sheet.getRangeByName('B15:G15').cellStyle.bold = true;
    sheet.getRangeByName('B16:G20').cellStyle.fontSize = 9;

    sheet.getRangeByName('E22:G22').merge();
    sheet.getRangeByName('E22:G22').cellStyle.hAlign = HAlignType.right;
    sheet.getRangeByName('E23:G24').merge();

    final Range range7 = sheet.getRangeByName('E22');
    final Range range8 = sheet.getRangeByName('E23');
    range7.text = 'TOTAL';
    range7.cellStyle.fontSize = 8;
    range7.cellStyle.fontColor = '#4D6575';
    final Range resultRange = sheet.getRangeByName('G16:G20');
    workbook.names.add('AmountPaid', resultRange);
    range8.formula = '=SUM(AmountPaid)';
    range8.numberFormat = r'$#,##0.00';
    range8.cellStyle.fontSize = 24;
    range8.cellStyle.hAlign = HAlignType.right;
    range8.cellStyle.bold = true;

    sheet.getRangeByIndex(26, 1).text =
        '800 Interchange Blvd, Suite 2501, Austin, TX 78721 | support@adventure-works.com';


1024px)" type="image/jpeg"/>
              <source srcset="/sites/default/files/styles/crop_cover_prominent/public/media/image/2017-Bundestag-elections-Chancellor-candidates-Angela-Merkel-Martin-Schulz.jpg?itok=MsYKMdwX 1x" media="all and (max-width: 1266px)" type="image/jpeg"/>
              <source srcset="/sites/default/files/styles/crop_cover_prominent/public/media/image/2017-Bundestag-elections-Chancellor-candidates-Angela-Merkel-Martin-Schulz.jpg?itok=MsYKMdwX 1x" media="all and (min-width: 1267px)" type="image/jpeg"/>

  </picture>

The Chancellor candidates

Portrait of personalities: Angela Merkel and Martin Schulz are standing for the office of head of the German government.

Read more

    <picture>

              <source srcset="/sites/default/files/styles/crop_cover_prominent_mobile/public/media/image/bundestagswahl-2017_wahlen_politik_parlament_bundeskanzler.jpg?itok=ce8CG2S3 1x" media="all and (max-width: 530px)" type="image/jpeg"/>
              <source srcset="/sites/default/files/styles/crop_cover_prominent/public/media/image/bundestagswahl-2017_wahlen_politik_parlament_bundeskanzler.jpg?itok=MVP6UUpk 1x" media="all and (max-width: 1024px)" type="image/jpeg"/>
              <source srcset="/sites/default/files/styles/crop_cover_prominent/public/media/image/bundestagswahl-2017_wahlen_politik_parlament_bundeskanzler.jpg?itok=MVP6UUpk 1x" media="all and (max-width: 1266px)" type="image/jpeg"/>
              <source srcset="/sites/default


 As Integer, UnloadMode As Integer)
Dim i As Long
    If UnloadMode <> vbAppWindows And UnloadMode <> vbAppTaskManager Then
        For i = 0 To Forms.Count - 1
            If (Forms(i).Name = "frmImage") Then
                If (Forms(i).Dirty) Then
                    If Not (Forms(i).QuerySave()) Then
                        Cancel = True
                        Exit Sub
                    End If
                End If
            End If
        Next i
    End If

    Dim cR As New cRegistry
    cR.ClassKey = HKEY_CURRENT_USER
    cR.SectionKey = "Software\vbAccelerator\vbImageProc"
    m_cMRU.Save cR

End Sub

Private Sub mnuColors_Click(Index As Integer)
Dim f As frmImage
    If (GetActiveform(f)) Then
        Select Case Index
        Case 0
            f.Fade
        Case 1
            f.Lighten
        Case 3
            pColourise f
        Case 5
            f.NegativeImage
        Case 7
            f.GrayScale
        Case 8
            f.BlackAndWhite
        Case 9
            pPalette f
        End Select
    End If
End Sub

Private Sub mnuEdit_Click(Index As Integer)
Dim f As frmImage
Dim sName As String
    Select Case Index
    Case 1
        If (GetActiveform(f)) Then
            f.CopyImage
        End If
    Case 2
        On Error GoTo PasteImageError
        Dim sPic As New StdPicture
        Set sPic = Clipboard.GetData(vbCFBitmap)
        sName = TempFileName("VBIM")
        SavePicture sPic, sName
        Dim fN As New frmImage
        If (fN.OpenFile(sName, True)) Then
            fN.Show
        Else
            Unload fN
        End If
        On Error Resume Next
        Kill sName

    End Select
    Exit Sub
PasteImageError:
    MsgBox "An error occured whilst trying to paste this image: " &
     Err.Description, vbExclamation
    On Error Resume Next
    Kill sName
    Exit Sub
      Resume 0
End Sub

Private Sub mnuFile_Click(Index As Integer)
    Select Case Index
    Case 0
        pOpen
    Case 1
        pSave
    Case 3
        MsgBox "Left as an exercise...", vbInformation
    Case 5 To 8
        pOpen m_cMRU.file(Index - 4)
    Case 10
        Unload Me
    End Select
End Sub

Private Sub mnuHelp_Click(Index As Integer)
    Select Case Index
    Case 0
        ' shell
        ShellEx "http://www.dogma.demon.co.uk", , , , , Me.hwnd
    Case 2
        frmAbout.Show vbModal, Me
    End Select
End Sub

Private Sub mnuHighPass_Click(Index As Integer)
Dim f As frmImage
    If (GetActiveform(f)) Then
        Select Case Index
        Case 0
            f.ProcessImage eSharpen
        Case 1
            f.ProcessImage eSharpenMore
        Case 2
            f.ProcessImage eUnSharp
        End Select
    End If
End Sub

Private Sub mnuImage_Click(Index As Integer)
Dim f As frmImage
   Select Case Index
   Case 3
      ' User defined filter...
      If (GetActiveform(f)) Then
          pCustomFilter f
      End If
   Case 5
      ' Resample....
      If (GetActiveform(f)) Then
          pResample f
      End If
   Case 7
      ' Combine:
      If (GetActiveform(f)) Then
         pCombine
      End If
   End Select
End Sub
Private Function pResample(ByRef f As frmImage) As Bool


c void setRefreshing(boolean refreshing) {
        mRefreshing = refreshing;
    }

    /**
     * @param pageSize 一页加载的数量
     */
    public void refreshComplete(int pageSize) {
        Log.e("lzx","refreshComplete  pageSize " + pageSize );
        this.mPageSize = pageSize;
        if (mRefreshing) {
            isNoMore = false;
            mRefreshing = false;
            if(mWrapAdapter.getInnerAdapter().getItemCount() < pageSize) {
                mFootView.setVisibility(GONE);
            }
        } else if (mLoadingData) {
            mLoadingData = false;
            mLoadMoreFooter.onComplete();
        }
        //处理特殊情况 最后一行显示出来了加载更多的view的一部分
        if (mWrapAdapter.getInnerAdapter().getItemCount() == mPageSize) {
            isCritical = true;
        } else {
            isCritical = false;
        }
    }

    /**
     * @param pageSize 一页加载的数量
     * @param total 总数
     */
    public void refreshComplete(int pageSize, int total) {
        this.mPageSize = pageSize;
        if (mRefreshing) {
            isNoMore = false;
            mRefreshing = false;
            if(mWrapAdapter.getInnerAdapter().getItemCount() < pageSize) {
                mFootView.setVisibility(GONE);
            }
        } else if (mLoadingData) {
            mLoadingData = false;
            mLoadMoreFooter.onComplete();
        }
        if (pageSize < total) {
            isNoMore = false;
        }
        //处理特殊情况 最后一行显示出来了加载更多的view的一部分
        if (mWrapAdapter.getInnerAdapter().getItemCount() == mPageSize) {
            isCritical = true;
        } else {
            isCritical = false;
        }
    }

    /**
     * 此方法主要是为了满足数据不满一屏幕或者数据小于pageSize的情况下，是否显示footview
     * 在分页情况下使用refreshComplete(int pageSize, int total, boolean false)就相当于refreshComplete(int pageSize, int total)
     * @param pageSize 一页加载的数量
     * @param total 总数
     * @param isShowFootView 是否需要显示footview（前提条件是：getItemCount() < pageSize）
     */
    public void refreshComplete(int pageSize, int total, boolean isShowFootView) {
        this.mPageSize = pageSize;
        if (mRefreshing) {
            isNoMore = false;
            mRefreshing = false;
            if (isShowFootView) {
                mFootView.setVisibility(VISIBLE);
            } else {
                if(mWrapAdapter.getInnerAdapter().getItemCount() < pageSize) {
                    mFootView.setVisibility(GONE);
                    mWrapAdapter.removeFooterView();
                } else {
                    if (mWrapAdapter.getFooterViewsCount() == 0) {
                        mWrapAdapter.addFooterView(mFootView);
                    }
                }
            }
        } else if (mLoadingData) {
            mLoadingData = false;
            mLoadMoreFooter.onComplete();
        }
        if (pageSize < total) {
            isNoMore = false;
        }
        //处理特殊情况 最后一行显示出来了加载更多的view的一部分
        if (mWrapAdapter.getInnerAdapter().getItemCount() == mPageSize) {
            isCritical = true;
        } else {
            isCritical = false;
        }
    }

    /**
     * 设置是否已加载全部
     * @param noMore
     */
    public void setNoMore(boolean noMore){
        mLoadingData = false;
        isNoMore = noMore;
        if(isNoMore) {
            mFootView.setVisibility(VISIBLE);
            mLoadMoreFooter.onNoMore();
            Log.e("lzx","setNoMore true ");
        } else {
            mLoadMoreFooter.onComplete();
        }
    }

    /**
     * 设置是否已加载全部
     * @param noMore
     *


tr[v] = k
		end

		function Mesh:getDrawMode()
			local mode = self.vertex_buffer:GetMode()
			return tr2[mode] or mode
		end
	end

	line.RegisterType(Mesh)
end

do -- sprite batch
	local SpriteBatch = line.TypeTemplate("SpriteBatch")

	local function set_rect(self, i, x, y, r, sx, sy, ox, oy, kx, ky)
		sx = sx or self.w
		sy = sy or self.h

		if ox then ox = -ox end

		if oy then oy = -oy end

		self.poly:SetRect(i, x, y, sx, sy, r, ox, oy)
	end

	function SpriteBatch:set(id, q, ...)
		id = id or 1

		if line.Type(q) == "Quad" then
			self.poly:SetUV(q.x, q.y, q.w, q.h, q.sw, q.sh)
			local x, y, r, sx, sy, ox, oy, kx, ky = ...
			set_rect(self, id, x, y, r, q.w, q.h, ox, oy, kx, ky)
		else
			set_rect(self, id, q, ...)
		end
	end

	SpriteBatch.setq = SpriteBatch.set

	function SpriteBatch:add(...)
		if self.i < self.size then self:set(self.i, ...) end

		self.i = self.i + 1
		return self.i
	end

	SpriteBatch.addq = SpriteBatch.add

	function SpriteBatch:setColor(r, g, b, a)
		if type(r) == "table" then r, g, b, a = unpack(r) end

		r = r or 255
		g = g or 255
		b = b or 255
		a = a or 255
		self.po


 path to be followed.")),
					@arg (
							name = "move_weights",
							type = IType.MAP,
							optional = true,
							doc = @doc ("Weights used for the moving.")),
					@arg (
							name = "return_path",
							type = IType.BOOL,
							optional = true,
							doc = @doc ("if true, return the path followed (by default: false)")) },
			doc = @doc (
					value = "moves the agent along a given path passed in the arguments.",
					returns = "optional: the path followed by the agent.",
					examples = { @example ("do follow speed: speed * 2 path: road_path;") }))
	public IPath primFollow(final IScope scope) throws GamaRuntimeException {
		final IAgent agent = getCurrentAgent(scope);
		final double dist = computeDistance(scope, agent);
		final Boolean returnPath = scope.getBoolArg("return_path");
		final IMap weigths = (IMap) computeMoveWeights(scope);
		final GamaPath path = scope.hasArg("path") ? (GamaPath) scope.getArg("path", IType.PATH) : null;
		if (path != null && !path.getEdgeList().isEmpty()) {
			if (returnPath != null && returnPath) {
				final IPath pathFollowed = moveToNextLocAlongPath(scope, agent, path, dist, weigths);
				if (pathFollowed == null) {
					notMoving(agent);

					return null;
				}
				return pathFollowed;
			}
			moveToNextLocAlongPathSimplified(scope, agent, path, dist, weigths);
			return null;
		}
		notMoving(agent);
		return null;
	}

	/**
	 * Prim goto.
	 *
	 * @param scope
	 *            the scope
	 * @return the i path
	 * @throws GamaRuntimeException
	 *             the gama runtime exception
	 */
	@action (
			name = "goto",
			args = { @arg (
					name = "target",
					type = IType.GEOMETRY,
					optional = false,
					doc = @doc ("the location or entity towards which to move.")),
					@arg (
							name = IKeyword.SPEED,
							type = IType.FLOAT,
							optional = true,
							doc = @doc ("the speed to use for this move (replaces the current value of speed)")),
					@arg (
							name = "on",
							type = IType.NONE,
							optional = true,
							doc = @doc ("graph, topology, list of geometries or map of geometries that restrain this move")),
					@arg (
							name = "recompute_path",
							type = IType.BOOL,
							optional = true,
							doc = @doc ("if false, the path is not recompute even if the graph is modified (by default: true)")),
					@arg (
							name = "return_path",
							type = IType.BOOL,
							optional = true,
							doc = @doc ("if true, return the path followed (by default: false)")),
					@arg (
							name = "move_weights",
							type = IType.MAP,
							optional = true,
							doc = @doc ("Weights used for the moving.")) },
			doc = @doc (
					value = "moves the agent towards the target passed in the arguments.",
					returns = "optional: the path followed by the agent.",
					examples = {
							@example ("do goto target: (one_of road).location speed: speed * 2 on: road_network;") }))
	public IPath primGoto(final IScope scope) throws GamaRuntimeException {
		final IAgent agent = getCurrentAgent(scope);
		final GamaPoint source = agent.getLocation().copy(scope);
		final double maxDist = compu


/*
 * Adium is the legal property of its developers, whose names are listed in the copyright file included
 * with this source distribution.
 *
 * 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; either version 2 of the License,
 * or (at your option) any later version.
 *
 * 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,
 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#import <Adium/AISortController.h>

@interface AIAlphabeticalSort : AISortController {
	IBOutlet	NSButton	*checkBox_sortGroups;
	IBOutlet	NSButton	*checkBox_sortByLastName;
}

@end


flict":
                throw new ForecastConflictException();
        }

        // validate model
        if (model.PostalCode.Length > 10)
        {
            throw new ForecastRequestInvalidException(new Dictionary<string, string>()
            {
                { nameof(model.PostalCode), _stringLocalizer["PostalCode cannot exceed 10 characters."].Value }
            });
        }

        // test single result value
        if (model.PostalCode == "55555")
        {
            return new List<WeatherForecast>
            {
                new WeatherForecast
                {
                    Date = DateTime.Now,
                    TemperatureC = 0,
                    Summary = Summaries[0]
                }
            };
        }

        var rng = new Random();
        return new List<WeatherForecast>(Enumerable.Range(1, 5)
            .Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
        .ToArray());
    }
}


return Um ByteBuf representando o pacote completo com RTC.
	 */
	/*private static ByteBuf generatePacket(int sentPacketLength, int command, ByteBuf dataBytes, int rtc) {
		// Cria um novo payload que junta o RTC com os dados originais.
		ByteBuf rtcPayload = Unpooled.buffer(2 + dataBytes.readableBytes());
		rtcPayload.writeShortLE(rtc);
		rtcPayload.writeBytes(dataBytes);

		// Chama a função original com este novo payload combinado.
		// O método original irá calcular o tamanho e a sequência corretamente.
		return generatePacket(sentPacketLength, command, rtcPayload);
	}*/

	/**
	 * Util para construir os dados de um servidor individual para a resposta de
	 * diretório.
	 *
	 * @param entry    O objeto ServerOption.
	 * @param position A posição do servidor na lista.
	 * @return Um ByteBuf contendo os dados serializados do servidor.
	 */
	public static ByteBuf getIndividualServer(ServerOption entry, int position) {
		String extendedDescription = entry.getServerDescription() + "\r\n[" + entry.getServerUtilization() + "/"
				+ entry.getServerCapacity() + "] players online";

		ByteBuf response = Unpooled.buffer();
		response.writeByte(position);
		response.writeByte(0x00); // Bytes desconhecidos
		response.writeByte(0x00);

		byte[] nameBytes = entry.getServerName().getBytes(StandardCharsets.UTF_8);
		response.writeByte(nameBytes.length);
		response.writeBytes(nameBytes);

		byte[] descriptionBytes = extendedDescription.getBytes(StandardCharsets.UTF_8);
		response.writeByte(descriptionBytes.length);
		response.writeBytes(descriptionBytes);

		// Escreve os bytes do endereço IP
		byte[] addressBytes = entry.getServerAddress().getAddress();
		response.writeBytes(addressBytes);

		response.writeBytes(intToBytes(entry.getServerPort(), 2, true)); // Porta (Big-endian)
		response.writeBytes(intToBytes(entry.getServerUtilization(), 2, true)); // Ocupação (Big-endian)
		response.writeBytes(intToBytes(entry.getServerUtilization(), 2, true)); // Ocupação (duplicado)
		response.writeBytes(intToBytes(entry.getServerCapacity(), 2, true)); // Capacidade (Big-endian)
		response.writeByte(entry.isServerEnabled() ? 1 : 0); // Habilitado (1 ou 0)

		return response;
	}
}package br.com.gunbound.emulator.packets.readers.room;

import java.nio.charset.StandardCharsets;
import java.util.Map;

import br.com.gunbound.emulator.handlers.GameAttributes;
import br.com.gunbound.emulator.model.entities.game.PlayerSession;
import br.com.gunbound.emulator.room.GameRoom;
import br.com.gunbound.emulator.room.RoomManager;
import br.com.gunbound.emulator.utils.PacketUtils;
import br.com.gunbound.emulator.utils.Utils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;

public class RoomDetailReader {

	private static final int OPCODE_REQUEST = 0x2104;
	private static final int OPCODE_RESPONSE = 0x2105;

	public static void read(ChannelHandlerContext ctx, byte[] payload) {
		System.out.println("RECV> SVC_ROOM_DETAIL (0x" + Integer.toHexString(OPCODE_REQUEST) + ")");
		PlayerSession player = ctx.channel().attr(GameAttributes.USER_SESSION


using System.Data;

namespace Chloe.Entity
{
    public interface IPrimitivePropertyBuilder
    {
        IEntityTypeBuilder DeclaringBuilder { get; }
        PrimitiveProperty Property { get; }
        IPrimitivePropertyBuilder MapTo(string column);
        IPrimitivePropertyBuilder HasAnnotation(object value);
        IPrimitivePropertyBuilder IsPrimaryKey(bool isPrimaryKey = true);
        IPrimitivePropertyBuilder IsAutoIncrement(bool autoIncrement = true);
        IPrimitivePropertyBuilder IsNullable(bool isNullable = true);
        IPrimitivePropertyBuilder IsRowVersion(bool isRowVersion = true);
        IPrimitivePropertyBuilder IsUniqueIndex(bool isUniqueIndex = true);
        IPrimitivePropertyBuilder HasDbType(DbType dbType);
        IPrimitivePropertyBuilder HasSize(int? size);
        IPrimitivePropertyBuilder HasScale(byte? scale);
        IPrimitivePropertyBuilder HasPrecision(byte? precision);
        IPrimitivePropertyBuilder HasSequence(string name, string schema = null);
        IPrimitivePropertyBuilder UpdateIgnore(bool updateIgnore = true);
    }
    public interface IPrimitivePropertyBuilder<TProperty, TEntity> : IPrimitivePropertyBuilder
    {
        new IEntityTypeBuilder<TEntity> DeclaringBuilder { get; }
        new IPrimitivePropertyBuilder<TPropert


 listPool = pool(reset = { it.clear() }) { mutableListOf<MeshPrimitive>() }

    private val bindGroupByMaterialId = mutableMapOf<Int, BindGroup>()
    private val bindGroupBySkinId = mutableMapOf<Int, BindGroup>()
    private val updatedEnvironments = mutableSetOf<Int>()
    private val sorter =
        object : MaterialPipelineSorter {
            override fun sort(pipelines: MutableList<MaterialPipeline>) {
                pipelines.sort()
            }
        }

    /** The [TextureFormat] of the color attachment. This is used in pipeline caching. */
    var colorFormat: TextureFormat = TextureFormat.RGBA8_UNORM

    /** The [TextureFormat] of the depth attachment. This is used in pipeline caching. */
    var depthFormat: TextureFormat = TextureFormat.DEPTH24_PLUS_STENCIL8

    /** Add a new [MaterialPipelineProvider]. */
    inline fun <reified T : Material> addPipelineProvider(provider: MaterialPipelineProvider) =
        addPipelineProvider(T::class, provider)

    /** Add a new [MaterialPipelineProvider]. */
    fun <T : Material> addPipelineProvider(type: KClass<T>, provider: MaterialPipelineProvider) {
        !pipelineProviders.containsKey(type) ||
            error("MaterialProvider already registered to type: $type")
        pipelineProviders[type] = provider
    }

    /** Removes a [MaterialPipelineProvider] of the given type. */
    inline fun <reified T : Material> removePipelineProvider(): T? =
        removePipelineProvider(T::class)

    /** Removes a [MaterialPipelineProvider] of the given type. */
    @Suppress("UNCHECKED_CAST")
    fun <T : Material> removePipelineProvider(type: KClass<T>): T? =
        pipelineProviders.remove(type) as T?

    /** Add a new [BaseMaterialPipelineProvider]. */
    fun addPipelineProvider(provider: BaseMaterialPipelineProvider<*>) =
        addPipelineProvider(provider.type, provider)

    /** Remove a [BaseMaterialPipelineProvider]. */
    fun removePipelineProvider(provider: BaseMaterialPipelineProvider<*>) =
        removePipelineProvider(provider.type)

    /**
     * Prepare a [Node3D] for rendering by creating the pipeline and material bind groups for the
     * specified [Environment]. This is useful if a large scene needs loading and generated on a
     * separate thread to prevent frames from dropping.
     *
     * **Note:** This does nothing if the given scene has the pipeline prepared either via
     * [preparePipeline] or [render].
     */
    fun preparePipeline(node: Node3D, environment: Environment) {
        node.forEachMeshPrimitive { preparePipeline(it, environment) }
    }

    /**
     * Prepare a [MeshPrimitive] for rendering by creating the pipeline and material bind groups for
     * the specified [Environment].This is useful if a large mesh primitive needs loading and
     * generated on a separate thread to prevent frames from dropping.
     *
     * **Note:** This does nothing if the given mesh primitive has the pipeline prepared either via
     * [preparePipeline] or [render].
     */
    fun preparePipeline(meshPrimitive: MeshPrimitive, environment: Environment) {
        val pipeline =
            pipelineProviders[meshPrimitive.material::class]?.getMaterialPipeline(
                device,
                meshPrimitive.material,
                environment,
                meshPrimitive.mesh.geometry.layout,
                meshPrimitive.topology,
                meshPrimitive.stripIndexFormat,


itleInt(R.string.edit_fee)
                .setMessage(billInfoModel.fee.toString())
                .setEditorPositiveButton(R.string.sure_msg) { result ->
                    val newFee = result.toDoubleOrNull() ?: 0.0
                    if (newFee != billInfoModel.fee) {
                        billInfoModel.fee = newFee
                        setFeeDisplay(newFee)
                    }
                }
                .setNegativeButton(R.string.cancel_msg, null)
                .show()
        }
    }

    /**
     * 设置金额显示
     *
     * @param amount 金额数值
     */
    private fun setAmount(amount: Double) {
        binding.amountContainer.text = amount.toString()
    }

    /**
     * 设置账单类型并更新UI样式
     *
     * @param billType 账单类型
     */
    private fun setBillType(billType: BillType) {
        currentBillType = billType
        updateTypeDisplay()
        updateTypeLabelDisplay()
    }

    /**
     * 设置费用显示（仅支出、转账显示）
     *
     * 规则（自动记账）：
     * - fee < 0 表示【手续费】，展示为手续费 abs(fee)
     * - fee > 0 表示【优惠】，展示为优惠 fee
     * - fee = 0 展示为无优惠
     *
     * 示例（仅说明含义，组件不计算 total）：
     * - 支出优惠: total = money + fee
     * - 还款手续费: total = money - fee
     * - 还款优惠: total = money + fee
     *
     * @param fee 费用数值
     */
    private fun setFeeDisplay(fee: Double) {
        val showForType = currentBillType == BillType.Expend || currentBillType == BillType.Transfer
        val visible = PrefManager.featureFee && showForType
        binding.feeContainer.isVisible = visible
        if (!visible) return

        val text = when {
            fee == 0.0 -> context.getString(R.string.no_discount)
            fee < 0 -> context.getString(R.string.handling_fee, abs(fee))
            else -> context.getString(R.string.discounted, fee)
        }
        binding.feeContainer.text = text
    }

    /**
     * 更新类型标签显示
     */
    private fun updateTypeLabelDisplay() {
        // 当未启用资产管理时，将“转账”按“支出”标签展示
        val displayType =
            if (currentBillType == BillType.Transfer && !PrefManager.featureAssetManage) {
                BillType.Expend
            } else currentBillType

        val typeText = when (displayType) {
            BillType.Expend -> context.getString(R.string.float_expend)
            BillType.Income -> context.getString(R.string.float_income)
            BillType.Transfer -> context.getString(R.string.float_transfer)
            else -> context.getString(R.string.float_expend)
        }
        binding.typeLabel.text = typeText
    }

    /**
     * 根据当前账单类型更新显示样式
     * 包括图标、颜色等视觉元素
     */
    private fun updateTypeDisplay() {
        // 当未启用资产管理时，将“转账”的视觉样式按“支出”处理
        val displayType =
            if (currentBillType == BillType.Transfer && !PrefManager.featureAssetManage) {
                BillType.Expend
            } else currentBillType

        val drawableRes = when (displayType) {
            BillType.Expend -> R.drawable.float_minus
            BillType.Income -> R.drawable.float_add
            BillType.Transfer -> R.drawable.float_round
            else -> R.drawable.float_minus
        }

        val tintRes = BillTool.getColor(displayType)


_setattr,
	.lookup		= nfs_proc_lookup,
	.access		= NULL,		       /* access */
	.readlink	= nfs_proc_readlink,
	.create		= nfs_proc_create,
	.remove		= nfs_proc_remove,
	.unlink_setup	= nfs_proc_unlink_setup,
	.unlink_done	= nfs_proc_unlink_done,
	.rename		= nfs_proc_rename,
	.link		= nfs_proc_link,
	.symlink	= nfs_proc_symlink,
	.mkdir		= nfs_proc_mkdir,
	.rmdir		= nfs_proc_rmdir,
	.readdir	= nfs_proc_readdir,
	.mknod		= nfs_proc_mknod,
	.statfs		= nfs_proc_statfs,
	.fsinfo		= nfs_proc_fsinfo,
	.pathconf	= nfs_proc_pathconf,
	.decode_dirent	= nfs_decode_dirent,
	.read_setup	= nfs_proc_read_setup,
	.read_done	= nfs_read_done,
	.write_setup	= nfs_proc_write_setup,
	.write_done	= nfs_write_done,
	.commit_setup	= nfs_proc_commit_setup,
	.lock		= nfs_proc_lock,
	.lock_check_bounds = nfs_lock_check_bounds,
	.close_context	= nfs_close_context,
};


			let id = n.children[0]
			let out = ''
			out += n.token.value
			if (id && id.type == AstType.Alias) out += ' as ' + this.printNode(id)
			return out
		})
		this.register(AstType.UnknownImport, (n) => {
			let id = n.children[0]
			let out = ''
			if (n.children.find(c => c != null && c.type == AstType.Export)) out += 'export '
			if (n.children.find(c => c != null && c.type == AstType.Const)) out += 'const '
			out += n.token.value
			if (id && id.type == AstType.Alias) out += ' as ' + this.printNode(id)
			return out
		})
		this.register(AstType.VariableDef, (n) => {
			let l = n.children[0]
			let r = n.children[1]
			let out = ''
			out += n.token.value
			if (l) out += ' ' + this.printNode(l)
			if (r && r.type == AstType.Literal) out += '[' + this.printNode(r) + ']'
			if (l && l.children.length > 0) out += ' as ' + this.printNode(l.children[0])
			return out
		})
		this.register(AstType.VariableImport, (n) => {
			let l = n.children[0]
			let r = n.children[1]
			let out = ''
			if (n.children.find(c => c != null && c.type == AstType.Export)) out += 'export '
			if (n.children.find(c => c != null && c.type == AstType.Const)) out += 'const '
			out += n.token.value
			if (l) out += ' ' + this.printNode(l)
			if (r && r.type == AstType.Literal) out += '[' + this.printNode(r) + ']'
			if (l && l.children.length > 0) out += ' as ' + this.printNode(l.children[0])
			return out
		})
		this.register(AstType.FunctionDef, (n) => {
			let c0 = n.children[0]
			let c1 = n.children[1]
			let c2 = n.children[2]
			let out = '\n'
			if (n.children.find(c => c != null && c.type == AstType.Export)) out += 'export '
			if (n.children.find(c => c != null && c.type == AstType.Const)) out += 'const '
			out += n.token.value
			if (c0 || c1 || c2) out += ' '
			if (c0) out += this.printNode(c0)
			if (c1) out += this.printNode(c1)
			if (c2) out += this.printNode(c2)
			if (c0 && c0.children.length > 0) out += ' as ' + this.printNode(c0.children[0])
			return out
		})
		this.register(AstType.FunctionImport, (n) => {
			let c0 = n.children[0]
			let c1 = n.children[1]
			let out = ''
			if (n.children.find(c => c != null && c.type == AstType.Export)) out += 'export '
			if (n.children.find(c => c != null && c.type == AstType.Const)) out += 'const '
			out += n.token.value
			if (c0 || c1) out += ' '
			if (c0) out += this.printNode(c0)
			if (c1) out += this.printNode(c1)
			if (c0 && c0.children.length > 0) out += ' as ' + this.printNode(c0.children[0])
			return out
		})
		this.register(AstType.StructDef, (n) => {
			let c0 = n.children[0]
			let c1 = n.children[1]
			let out = '\n'
			if (n.children.find(c => c != null && c.type == AstType.Export)) out += 'export '
			if (n.


5 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0"/></svg>',zg='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.27 7.27 0 0 1 2.703 3.454 7.13 7.13 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.87.87 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.6 5.6 0 0 0 2.492-2.371 5.46 5.46 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.7 5.7 0 0 0 10 4.206 5.7 5.7 0 0 0 6.419 5.46 5.53 5.53 0 0 0 4.46 8.663a5.46 5.46 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.88.88 0 0 1-.614-.25.85.85 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.13 7.13 0 0 1 .199-4.352 7.27 7.27 0 0 1 2.703-3.455A7.5 7.5 0 0 1 10 2.5"/></svg>',Hg='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M7 16.4c-.8-.4-1.5-.9-2.2-1.5a.6.6 0 0 1-.2-.5l.3-.6h1c1 1.2 2.1 1.7 3.7 1.7 1 0 1.8-.3 2.3-.6.6-.4.6-1.2.6-1.3.2-1.2-.9-2.1-.9-2.1h2.1c.3.7.4 1.2.4 1.7v.8l-.6 1.2c-.6.8-1.1 1-1.6 1.2a6 6 0 0 1-2.4.6c-1 0-1.8-.3-2.5-.6M6.8 9 6 8.3c-.4-.5-.5-.8-.5-1.6 0-.7.1


s_mal_ganis() : CreatureScript("boss_mal_ganis") { }

    CreatureAI* GetAI(Creature* creature) const
    {
        return new boss_mal_ganisAI (creature);
    }

    struct boss_mal_ganisAI : public ScriptedAI
    {
        boss_mal_ganisAI(Creature* creature) : ScriptedAI(creature)
        {
            instance = creature->GetInstanceScript();
        }

        uint32 uiCarrionSwarmTimer;
        uint32 uiMindBlastTimer;
        uint32 uiVampiricTouchTimer;
        uint32 uiSleepTimer;

        uint8 uiOutroStep;
        uint32 uiOutroTimer;

        bool bYelled;
        bool bYelled2;

        CombatPhases Phase;

        InstanceScript* instance;

        void Reset()
        {
            bYelled = false;
            bYelled2 = false;
            Phase = COMBAT;
            uiCarrionSwarmTimer = 6000;
            uiMindBlastTimer = 11000;
            uiVampiricTouchTimer = urand(10000, 15000);
            uiSleepTimer = urand(15000, 20000);
            uiOutroTimer = 1000;

            if (instance)
                instance->SetData(DATA_MAL_GANIS_EVENT, NOT_STARTED);
        }

        void EnterCombat(Unit* /*who*/)
        {
            Talk(SAY_AGGRO);
            if (instance)
                instance->SetData(DATA_MAL_GANIS_EVENT, IN_PROGRESS);
        }

        void DamageTaken(Unit* done_by, uint32 &damage, DamageEffectType dmgType)
        {
            if (damage >= me->GetHealth() && done_by != me)
            {
                damage = me->GetHealth()-1;
                if (instance)
                {
                    instance->DoUpdateAchievementCriteria(CRITERIA_TYPE_KILL_CREATURE, 26533, 0, 0, me);
                    instance->DoUpdateAchievementCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, 58630, 0, 0, me);
                }
            }
        }

        void UpdateAI(uint32 diff)
        {
            switch (Phase)
            {
                case COMBAT:
                    //Return since we have no target
                    if (!UpdateVictim())
                        return;

                    if (!bYelled && HealthBelowPct(30))
                    {
                        Talk(SAY_30HEALTH);
                        bYelled = true;
                    }

                    if (!bYelled2 && HealthBelowPct(15))
                    {
                        Talk(SAY_15HEALTH);
                        bYelled2 = true;
                    }

                    if (HealthBelowPct(1))
                    {
                        //Handle Escape Event: Don't forget to add Player::RewardPlayerAndGroupAtEvent
                        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                        uiOutroStep = 1;
                        Phase = OUTRO;
                        return;
                    }

                    if (Creature* pArthas = me->GetCreature(*me, instance ? instance->GetGuidData(DATA_ARTHAS) : ObjectGuid::Empty))
                        if (pArthas->isDead())
                        {
                            EnterEvadeMode();
                            me->DisappearAndDie();
                            if (instance)
                                instance->SetData(DATA_MAL_GANIS_EVENT, FAIL);
                        }

                    if (uiCarrionSwarmTimer < diff)
                    {
                        DoCastVictim(SPELL_CARRION_SWARM);
                        uiCarrionSwarmTimer = 7000;
                    } else uiCarrionSwarmTimer -= diff;

                    if (uiMindBl


Aventador de peste",
[61293] = "Medidor purulento",
[61294] = "Hundidor purulento",
[61295] = "Monster - Item, Ulduar Raid D03 Red (Offhand)",
[61296] = "Monster - Mace, 2H Cataclysm B02 Gold (Low Yellow Glow)",
[61297] = "Monster - Dagger, GrimBatolRaid D 02 (Red) - Sharpened",
[61298] = "Monster - Mace, Northrend C01 (1H)",
[61302] = "Hojas tocadas por la Luz",
[61305] = "Monster - Troll - Polearm - Drak Tharon - D1",
[61306] = "Códice del Molino Ámbar",
[61307] = "Núcleo de servidor",
[61308] = "Monster - Mace2H, Alliance PvP (Sharpened)",
[61309] = "Pergamino Argenta",
[61310] = "Remanente Arcano",
[61311] = "Remanente Arcano",
[61312] = "Sello del archimago de Dalaran",
[61313] = "Ojo de Fustamusgo",
[61314] = "Caja de regalos de Landro (TEST COPY)",
[61315] = "Cadáver del Señor de la Guerra Thresh'jin",
[61316] = "Cadáver del Señor de la Guerra Thresh'jin",
[61317] = "Huevo Bermellón",
[61318] = "Libro de oraciones de Gidwin",
[61319] = "Pesteraíz espinosa",
[61320] = "Monster - Blowdart",
[61321] = "Trozo de cuerda",
[61322] = "Trozo de cuerda",
[61323] = "Semillas de rubí",
[61324] = "Cuchilla de Gladiador sañoso",
[61325] = "Rebanadora de Gladiador sañoso",
[61326] = "Decapitador de Gladiador sañoso",
[61327] = "Faca de Gladiador sañoso",
[61328] = "Chafarote de Gladiador sañoso",
[61329] = "Hoja de hechizo de Gladiador sañoso",
[61330] = "Destripadora de Gladiador sañoso",
[61331] = "Cercenadora de carne de Gladiador sañoso",
[61332] = "Mutiladora de Gladiador sañoso",
[61333] = "Desgarradora derecha de Gladiador sañoso",
[61334] = "Bengala de Quemacadáveres",
[61335] = "Moledora de Gladiador sañoso",
[61336] = "Partehuesos de Gladiador sañoso",
[61337] = "Monstruo: maza 2M, gran maza B02 plata",
[61338] = "Mazo de Gladiador sañoso",
[61339] = "Crujehuesos de Gladiador sañoso",
[61340] = "Pica de Gladiador sañoso",
[61341] = "Bastón de batalla de Gladiador sañoso",
[61342] = "Bastón de energía de Gladiador sañoso",
[61343] = "Bastón de Gladiador sañoso",
[61344] = "Cercenadora de Gladiador sañoso",
[61345] = "Hoja rauda de Gladiador sañoso",
[61346] = "Espada magna de Gladiador sañoso",
[61347] = "Filo de guerra de Gladiador sañoso",
[61348] = "Hacha de Gladiador sañoso",
[61349] = "Mina terrestre desarmada",
[61350] = "Toque de derrota de Gladiador sañoso",
[61351] = "Bordón de Luz de Gladiador s


yParents;
		this.limit = evitaRequest.limit;
		this.resultForm = evitaRequest.resultForm;
		this.facetGroupConjunction = evitaRequest.facetGroupConjunction;
		this.facetGroupDisjunction = evitaRequest.facetGroupDisjunction;
		this.facetGroupNegation = evitaRequest.facetGroupNegation;
		this.expectedType = evitaRequest.expectedType;
		this.debugModes = evitaRequest.debugModes;

		final EntityScope overriddenScopes = QueryUtils.findFilter(
			this.query, EntityScope.class, SeparateEntityScopeContainer.class
		);
		if (overriddenScopes == null) {
			this.scopes = evitaRequest.scopes;
			this.scopesAsArray = evitaRequest.scopesAsArray;
		} else {
			this.scopes = overriddenScopes.getScope();
			this.scopesAsArray = this.scopes.toArray(Scope[]::new);
		}
	}

	public EvitaRequest(
		@Nonnull EvitaRequest evitaRequest,
		@Nonnull String entityType,
		@Nullable FilterBy filterBy,
		@Nullable OrderBy orderBy,
		@Nullable Locale locale,
		@Nullable Set<Scope> scopes
	) {

		this.requiresEntity = true;
		this.entityRequirement = evitaRequest.entityRequirement;
		this.entityType = entityType;
		this.query = Query.query(
			evitaRequest.query.getHead() == null ?
				null :
				ConstraintCloneVisitor.clone(
					evitaRequest.query.getHead(),
					(constraintCloneVisitor, constraint) -> constraint instanceof Collection ? collection(entityType) : constraint
				),
			filterBy,
			orderBy,
			require(this.entityRequirement)
		);
		this.alignedNow = evitaRequest.getAlignedNow();
		this.implicitLocale = evitaRequest.getImplicitLocale();
		this.primaryKeys = null;
		this.labels = null;
		this.queryPriceMode = evitaRequest.getQueryPriceMode();
		this.priceValidInTimeSet = true;
		this.priceValidInTime = evitaRequest.getRequiresPriceValidIn();
		this.currencySet = true;
		this.currency = evitaRequest.getRequiresCurrency();
		this.requiresPriceLists = evitaRequest.isRequiresPriceLists();
		this.priceLists = evitaRequest.getRequiresPriceLists();
		this.additionalPriceLists = evitaRequest.getFetchesAdditionalPriceLists();
		this.defaultAccompanyingPricePriceLists = evitaRequest.getDefaultAccompanyingPricePriceLists();
		this.accompanyingPrices = null;
		this.localeExamined = true;
		this.locale = locale == null ? evitaRequest.getLocale() : locale;
		this.requiredLocales = null;
		this.requiredLocaleSet = null;
		this.requiresParent = null;
		this.parentContent = null;
		this.entityAttributes = null;
		this.entityAttributeSet = null;
		this.entityAssociatedData = null;
		this.entityAssociatedDataSet = null;
		this.entityReference = null;
		this.entityFetchRequirements = null;
		this.defaultReferenceRequirement = null;
		this.entityPrices = null;
		this.start = null;
		this.conditionalGaps = null;
		this.hierarchyWithin = null;
		this.requiredWithinHierarchy = null;
		this.requiresHierarchyStatistics = null;
		this.requiresHierarchyParents = null;
		this.limit = null;
		this.resultForm = null;
		this.facetGroupConjunction = null;
		this.facetGroupDisjunction = null;
		this.facetGroupNegation = null;
		this.expectedType = evitaRequest.expectedType;
		this.debugModes = null;
		this.scopes = scopes;
		this.scopesAsArray = this.scopes == null ?
			null : this.scopes.toArray(Scope[]::new);
	}

	/**
	 * Returns true if query targets specific entity type.
	 */
	public


// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#ifndef RUBY_PROTOBUF_REPEATED_FIELD_H_
#define RUBY_PROTOBUF_REPEATED_FIELD_H_

#include <ruby/ruby.h>

#include "protobuf.h"
#include "ruby-upb.h"

// Returns a Ruby wrapper object for the given upb_array, which will be created
// if one does not exist already.
VALUE RepeatedField_GetRubyWrapper(upb_array* msg, TypeInfo type_info,
                                   VALUE arena);

// Gets the underlying upb_array for this Ruby RepeatedField object, which must
// have a type that matches |f|. If this is not a repeated field or the type
// doesn't match, raises an exception.
const upb_array* RepeatedField_GetUpbArray(VALUE value, const upb_fielddef* f,
                                           upb_arena* arena);

// Implements #inspect for this repeated field by appending its contents to |b|.
void RepeatedField_Inspect(StringBuilder* b, const upb_array* array,
                           TypeInfo info);

// Returns a deep copy of this RepeatedField object.
VALUE RepeatedField_deep_copy(VALUE obj);

// Ruby class of Google::Protobuf::RepeatedField.
extern VALUE cRepeatedField;

// Call at startup to register all types in this module.
void RepeatedField_register(VALUE module);

#endif  // RUBY_PROTOBUF_REPEATED_FIELD_H_


px;
    }
}

#run_button_container {
    margin: auto;
    padding: 7px;
}

.action-link {
    padding-left: 2px;
    padding-right: 2px;
}

.download-pdf-icon {
    width: 20px;
    height: 20px;
}

#advanced-settings {
    margin-top: 5px;
}

#advanced-settings-content {
    padding-top: 10px;
}

// Custom styles for UI Slider
.ui-slider {
    margin: 5px;
}

// Put the slider number at bottom
.noUi-origin .noUi-handle .noUi-tooltip {
    left: 50px;
    top: -3px;
    bottom: initial;
    border: 0;
    background-color: transparent;
    font-size: 1em;
}

.purple .noUi-connect {
    background-color: #D99DEE;
}

.blue .noUi-connect {
    background-color: #74B1FF;
}

.inline-checkbox {
    margin-right: 5px !important;
}

// Prevent text wrapping on tooltips & make the tips a little wider
.popover {
    width: 400px;
    max-width: 400px;
}

.popover-content {
    white-space: pre-wrap;
}

#dot_container {
    padding: 20px 40px;
}/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=


 left, top, right, bottom and so on).Widgets must be rendered completely.
  ///获取widget Rect
  static Rect getWidgetBounds(BuildContext context) {
    RenderObject? box = context.findRenderObject();
    return (box != null) ? box.semanticBounds : Rect.zero;
  }

  ///Get the coordinates of the widget on the screen.Widgets must be rendered completely.
  ///获取widget在屏幕上的坐标,widget必须渲染完成
  static Offset getWidgetLocalToGlobal(BuildContext context) {
    RenderBox? box = context.findRenderObject() as RenderBox?;
    return box == null ? Offset.zero : box.localToGlobal(Offset.zero);
  }

  /// get image width height，load error return Rect.zero.（unit px）
  /// 获取图片宽高，加载错误情况返回 Rect.zero.（单位 px）
  /// image
  /// url network
  /// local url , package
  static Future<Rect> getImageWH(
      {Image? image, String? url, String? localUrl, String? package}) {
    if (ObjectUtils.isEmpty(image) &&
        ObjectUtils.isEmpty(url) &&
        ObjectUtils.isEmpty(localUrl)) {
      return Future.value(Rect.zero);
    }
    Completer<Rect> completer = Completer<Rect>();
    Image img = image ?? ((url != null && url.isNotEmpty)
        ? Image.network(url)
        : Image.asset(localUrl!, package: package));
    img.image
        .resolve(const ImageConfiguration())
        .addListener(ImageStreamListener(
          (ImageInfo info, bool _) {
        completer.complete(Rect.fromLTWH(0, 0, info.image.width.toDouble(),
            info.image.height.toDouble()));
      },
      onError: (Object exception, StackTrace? stackTrace) {
        completer.completeError(exception, stackTrace);
      },
    ));
    return completer.future;
  }

  /// get image width height, load error throw exception.（unit px）
  /// 获取图片宽高，加载错误会抛出异常.（单位 px）
  /// image
  /// url network
  /// local url (full path/全路径，example："assets/images/ali_connors.png"，""assets/images/3.0x/ali_connors.png"" );
  /// package
  static Future<Rect> getImageWHE(
      {Image? image,
        required String url,
        required String localUrl,
        required String package}) {
    if (ObjectUtils.isEmpty(image) &&
        ObjectUtils.isEmpty(url) &&
        ObjectUtils.isEmpty(localUrl)) {
      return Future.error("image is null.");
    }
    Completer<Rect> completer = Completer<Rect>();
    Image img = image != null
        ? image
        : ((url != null && url.isNotEmpty)
        ? Image.network(url)
        : Image.asset(localUrl, package: package));
    img.image
        .resolve(const ImageConfiguration())
        .addListener(ImageStreamListener(
          (ImageInfo info, bool _) {
        completer.complete(Rect.fromLTWH(0, 0, info.image.width.toDouble(),
            info.image.height.toDouble()));
      },
      onError: (Object exception, StackTrace? stackTrace) {
        completer.completeError(exception, stackTrace);
      },
    ));

    return completer.future;
  }
}
import 'package:flutter/material.dart';
import 'package:haka_comic/config/app_config.dart';

mixin PaginationHandlerMixin<T extends StatefulWidget> on State<T> {
  final scrollController = ScrollController();
  final pagination = AppConf().pagination;
  bool _loading = false;

  Future<void> loadMore();

  void onScroll() {
    final position = scro


.ops.boxes import masks_to_boxes
from torchvision import tv_tensors
from torchvision.transforms.v2 import functional as F

class PennFudanDataset(torch.utils.data.Dataset):
    def __init__(self, root, transforms):
        self.root = root
        self.transforms = transforms
        # load all image files, sorting them to
        # ensure that they are aligned
        self.imgs = list(sorted(os.listdir(os.path.join(root, "PNGImages"))))
        self.masks = list(sorted(os.listdir(os.path.join(root, "PedMasks"))))

    def __getitem__(self, idx):
        # load images and masks
        img_path = os.path.join(self.root, "PNGImages", self.imgs[idx])
        mask_path = os.path.join(self.root, "PedMasks", self.masks[idx])
        img = read_image(img_path)
        mask = read_image(mask_path)
        # instances are encoded as different colors
        obj_ids = torch.unique(mask)
        # first id is the background, so remove it
        obj_ids = obj_ids[1:]
        num_objs = len(obj_ids)

        # split the color-encoded mask into a set
        # of binary masks
        masks = (mask == obj_ids[:, None, None]).to(dtype=torch.uint8)

        # get bounding box coordinates for each mask
        boxes = masks_to_boxes(masks)

        # there is only one class
        labels = torch.ones((num_objs,), dtype=torch.int64)

        image_id = idx
        area = (boxes[:, 3] - boxes[:, 1]) * (boxes[:, 2] - boxes[:, 0])
        # suppose all instances are not crowd
        iscrowd = torch.zeros((num_objs,), dtype=torch.int64)

        # Wrap sample and targets into torchvision tv_tensors:
        img = tv_tensors.Image(img)

        target = {}
        target["boxes"] = tv_tensors.BoundingBoxes(boxes, format="XYXY", canvas_size=F.get_size(img))
        target["masks"] = tv_tensors.Mask(masks)
        target["labels"] = labels
        target["image_id"] = image_id
        target["area"] = area
        target["iscrowd"] = iscrowd

        if self.transforms is not None:
            img, target = self.transforms(img, target)

        return img, target

    def __len__(self):
        return len(self.imgs)

```

这就是数据集的全部内容。现在让我们定义一个可以对此数据集执行预测的模型。

## 定义您的模型 [¶](#defining-your-model "永久链接到此标题")

在本教程中，我们将使用 [Mask R-CNN](https://arxiv.org/abs/1703.06870)，它基于 [Faster R-CNN](https://arxiv.org/abs/1506.01497)。 Faster R-CNN 是一种预测图像中潜在对象的边界框和类别分数的模型。

![https://pytorch.org/tutorials/_static/img/tv_tutorial/tv_image03.png](https://


("Possible password: {}", pass),
///     None => println!("Couldn't get password!")
/// };
/// ```
pub fn ettuz(filename: &str, pass_list: &str) -> Option<String> {
    let zip_file = fs::File::open(filename).unwrap();
    let mut archive = ZipArchive::new(&zip_file).unwrap();

    let pass_file = fs::read_to_string(pass_list).unwrap();
    let pass_list: Vec<&str> = pass_file.split('\n').collect();
    let bar = ProgressBar::new(pass_list.len() as u64);

    let mut got_pass: bool = false;
    let mut possible_passes: Vec<&str> = vec![];

    for pass in pass_list {
        bar.inc(1);
        if got_pass {
            bar.finish();
            break;
        }

        for idx in 0..archive.len() {
            let mut file = match archive.by_index_decrypt(idx, String::from(pass).as_bytes()) {
                Ok(zip) => match zip {
                    Ok(og_file) => {
                        got_pass = true;
                        og_file
                    }
                    Err(_) => break,
                },
                Err(_) => {
                    println!("Couldnt get the file correctly!");
                    continue;
                }
            };

            // Taken directly from: https://github.com/zip-rs/zip/blob/master/examples/extract.rs
            let outpath = match file.enclosed_name() {
                Some(path) => path.to_owned(),
                None => continue,
            };

            // Starts extraction
            if (&*file.name()).ends_with("/") {
                fs::create_dir_all(&outpath).unwrap();
            } else {
                if let Some(p) = outpath.parent() {
                    if !p.exists() {
                        fs::create_dir_all(&p).unwrap();
                    }
                }
                let mut outfile = fs::File::create(&outpath).unwrap();
                match io::copy(&mut file, &mut outfile) {
                    Ok(_) => {
                        possible_passes.push(pass);
                    }
                    Err(_) => {
                        got_pass = false;
                        continue;
                    }
                }
            }
        }
    }

    if possible_passes.len() > 0 {
        Some(possible_passes.join("\n"))
    } else {
        None
    }
}
<gh_stars>0
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};

pub(crate) fn clone_atomic_usize(atom: &AtomicUsize) -> AtomicUsize {
    let raw = atom.load(Ordering::SeqCst);
    AtomicUsize::new(raw)
}

pub(crate) fn clone_atomic_bool(atom: &AtomicBool) -> AtomicBool {
    let raw = atom.load(Ordering::SeqCst);
    AtomicBool::new(raw)
}
<filename>src/apu/filters.rs
pub trait Filter {
    fn process(&mut self, amplitude: f32) -> f32;
}

pub struct LowPassFilter {
    previous_output: f32,
    alpha: f32,
}

impl LowPassFilter {
    pub fn new(frequency: u32, sample_rate: f32) -> Self {
        let rc = 1.0 / (2.0 * std::f32::consts::PI * frequency as f32);
        let dt = 1.0 / sample_rate;
        let alpha = dt / (rc + dt);

        LowPassFilter {
            previous_output: 0.0,
            alpha,
        }
    }
}

impl Filter for LowPassFilter {
    fn process(&mut self, amplitude: f32) -> f32 {
        let processed = self.pr


00829DC 0200422C */  sltiu      $v0, $v0, 0x2
/* 31FCFA8 800829E0 04004014 */  bnez       $v0, .Llevel_34_800829F4
/* 31FCFAC 800829E4 FF006330 */   andi      $v1, $v1, 0xFF
/* 31FCFB0 800829E8 5D000224 */  addiu      $v0, $zero, 0x5D
/* 31FCFB4 800829EC 0B006214 */  bne        $v1, $v0, .Llevel_34_80082A1C
/* 31FCFB8 800829F0 00000000 */   nop
.Llevel_34_800829F4:
/* 31FCFBC 800829F4 54006492 */  lbu        $a0, 0x54($s3)
/* 31FCFC0 800829F8 8058010C */  jal        StopSound
/* 31FCFC4 800829FC 04000524 */   addiu     $a1, $zero, 0x4
/* 31FCFC8 80082A00 07000524 */  addiu      $a1, $zero, 0x7
/* 31FCFCC 80082A04 3D006392 */  lbu        $v1, 0x3D($s3)
/* 31FCFD0 80082A08 07000224 */  addiu      $v0, $zero, 0x7
/* 31FCFD4 80082A0C 16046210 */  beq        $v1, $v0, .Llevel_34_80083A68
/* 31FCFD8 80082A10 480065A2 */   sb        $a1, 0x48($s3)
/* 31FCFDC 80082A14 0E0E0208 */  j          .Llevel_34_80083838
/* 31FCFE0 80082A18 21206002 */   addu      $a0, $s3, $zero
.Llevel_34_80082A1C:
/* 31FCFE4 80082A1C 6400438E */  lw         $v1, 0x64($s2)
/* 31FCFE8 80082A20 00000000 */  nop
/* 31FCFEC 80082A24 17006004 */  bltz       $v1, .Llevel_34_80082A84
/* 31FCFF0 80082A28 0C006526 */   addiu     $a1, $s3, 0xC
/* 31FCFF4 80082A2C 40100300 */  sll        $v0, $v1, 1
/* 31FCFF8 80082A30 21104300 */  addu       $v0, $v0, $v1
/* 31FCFFC 80082A34 80100200 */  sll        $v0, $v0, 2
/* 31FD000 80082A38 23104300 */  subu       $v0, $v0, $v1
/* 31FD004 80082A3C 0780103C */  lui        $s0, %hi(D_80075828)
/* 31FD008 80082A40 2858108E */  lw         $s0, %lo(D_80075828)($s0)
/* 31FD00C 80082A44 C0100200 */  sll        $v0, $v0, 3
/* 31FD010 80082A48 21800202 */  addu       $s0, $s0, $v0
/* 31FD014 80082A4C 0000118E */  lw         $s1, 0x0($s0)
/* 31FD018 80082A50 C05D000C */  jal        VecCopy
/* 31FD01C 80082A54 0C000426 */   addiu     $a0, $s0, 0xC
/* 31FD020 80082A58 21200002 */  addu       $a0, $s0, $zero
/* 31FD024 80082A5C 01000524 */  addiu      $a1, $zero, 0x1
/* 31FD028 80082A60 21300000 */  addu       $a2, $zero, $zero
/* 31FD02C 80082A64 F0EA000C */  ja


-- Abstract: ButtonEvents
-- Version: 2.0
-- Sample code is MIT licensed; see https://solar2d.com/LICENSE.txt
---------------------------------------------------------------------------------------

display.setStatusBar( display.HiddenStatusBar )

------------------------------
-- RENDER THE SAMPLE CODE UI
------------------------------
local sampleUI = require( "sampleUI.sampleUI" )
sampleUI:newUI( { theme="darkgrey", title="Button Events", showBuildNum=true } )

------------------------------
-- CONFIGURE STAGE
------------------------------
display.getCurrentStage():insert( sampleUI.backGroup )
local mainGroup = display.newGroup()
display.getCurrentStage():insert( sampleUI.frontGroup )

----------------------
-- BEGIN SAMPLE CODE
----------------------

-- Set app font
local appFont = sampleUI.appFont

-- Require libraries/plugins
local widget = require( "widget" )

local buttonPhase = display.newText( mainGroup, "(waiting for button event)", display.contentCenterX, 55+display.screenOriginY, appFont, 13 )
buttonPhase:setFillColor( 1, 0.4, 0.25 )

local logo = display.newImageRect( mainGroup, "logo.png", 150, 150 )
logo.x = display.contentCenterX
logo.y = 160 + display.screenOriginY

-- Button event listener function
local function buttonEvent( event )

	buttonPhase.text = '"' .. event.phase .. '"'

	if ( "began" == event.phase ) then
		transition.cancel( "logo" )
		transition.to( logo, { time=200, tag="logo", xScale=0.9, yScale=0.9, transition=easing.outBack } )
	elseif ( "ended" == event.phase or "cancelled" == event.phase ) then
		transition.cancel( "logo" )
		transition.to( logo, { time=200, tag="logo", xScale=1, yScale=1, transition=easing.inBack } )
	end
	return tr


[Fact]
        [Trait("UnitTest", "UnitTest")]
        public void AssetMoneyGreaterThan()
        {
            var assetId = new OpenAsset.AssetId("8f316d9a09");
            var smallAssetMoney = new OpenAsset.AssetMoney(assetId, 2);
            var largeAssetMoney = new OpenAsset.AssetMoney(assetId, 5);

            Assert.True(largeAssetMoney > smallAssetMoney);
            Assert.False(smallAssetMoney > largeAssetMoney);
        }

        [Fact]
        [Trait("UnitTest", "UnitTest")]
        public void AssetMoneyLessThan()
        {
            var assetId = new OpenAsset.AssetId("8f316d9a09");
            var smallAssetMoney = new OpenAsset.AssetMoney(assetId, 2);
            var largeAssetMoney = new OpenAsset.AssetMoney(assetId, 5);

            Assert.True(smallAssetMoney < largeAssetMoney);
            Assert.False(largeAssetMoney < smallAssetMoney);
        }
    }
}


eplaceEnvVar(originDataObj, envMap)
        println(toJson(convertDataObj))
        assertEquals(toJson(JsonUtil.to(originDataObj, List::class.java)), toJson(convertDataObj))

        // 魔法数字符创测试
        convertDataObj = ExprReplaceEnvVarUtil.replaceEnvVar("12E2", envMap)
        assertEquals("12E2", toJson(convertDataObj))
        // 替换”[133]-[sid-${normalStrEnvVar}]-[sid-zhiliang-test1]“带多个[]的字符串
        convertDataObj = ExprReplaceEnvVarUtil.replaceEnvVar(
            "[133]-[sid-\${{normalStrEnvVar}}]-[sid-zhiliang-test1]",
            envMap
        )
        assertEquals("[133]-[sid-123]-[sid-zhiliang-test1]", toJson(convertDataObj))
    }

    internal data class TestBean(
        var testBeanKey: String? = null,
        var testBeanValue: String? = null
    )

    internal data class TestComplexBean(
        var testBeanKey: String? = null,
        var testBeanValue: String? = null,
        var dataList: List<*>? = null,
        var dataMap: Map<*, *>? = null,
        var dataSet: Set<*>? = null
    )
}
/*
 * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
 *
 * Copyright (C) 2019 Tencent.  All rights reserved.
 *
 * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
 *
 * A copy of the MIT License is included in this file.
 *
 *
 * Terms of the MIT License:
 * ---------------------------------------------------
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of
 * the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */

package com.tencent.devops.common.pipeline.utils

import com.tencent.devops.common.pipeline.pojo.element.ElementProp
import com.tencent.devops.common.pipeline.pojo.element.ElementPropType

object TriggerElementPropUtils {

    fun vuexInput(name: String, value: String?): ElementProp? {
        if (value.isNullOrBlank()) return null
        return ElementProp(name = name, value = value.split(","), type = ElementPropType.VUEX_INPUT)
    }

    fun staffInput(name: String, value: List<String>?): ElementProp


_Opt->m_Domain.nc;

    // set up options for coarse grid (copy all parameters
    // but the grid resolution and do setup of all plans)
    if (this->m_CoarseGrid->m_Opt != NULL) {
        delete this->m_CoarseGrid->m_Opt;
        this->m_CoarseGrid->m_Opt = NULL;
    }
    try {this->m_CoarseGrid->m_Opt = new RegOpt(*this->m_Opt);}
    catch (std::bad_alloc&) {
        ierr = reg::ThrowError("allocation failed"); CHKERRQ(ierr);
    }
    this->m_CoarseGrid->m_Opt->m_Domain.level = this->m_Opt->m_Domain.level + 1;
    this->m_CoarseGrid->m_Opt->m_FFT = this->m_Opt->m_FFT_coarse;
    this->m_CoarseGrid->m_Opt->m_FFT_coarse.fft = nullptr;
    this->m_CoarseGrid->m_Opt->m_Domain.nl = 1;
    this->m_CoarseGrid->m_Opt->m_Domain.ng = 1;
    this->m_CoarseGrid->m_Opt->m_Domain.mpicomm = this->m_Opt->m_Domain.mpicomm;
    this->m_CoarseGrid->m_Opt->m_Domain.rowcomm = this->m_Opt->m_Domain.rowcomm;
    this->m_CoarseGrid->m_Opt->m_Domain.colcomm = this->m_Opt->m_Domain.colcomm;
    for (int i=0; i<3; ++i) {
      this->m_CoarseGrid->m_Opt->m_Domain.nx[i] = this->m_Opt->m_FFT_coarse.nx[i];
      this->m_CoarseGrid->m_Opt->m_Domain.istart[i] = this->m_Opt->m_FFT_coarse.istart[i];
      this->m_CoarseGrid->m_Opt->m_Domain.isize[i] = this->m_Opt->m_FFT_coarse.isize[i];
      this->m_CoarseGrid->m_Opt->m_Domain.ng *= this->m_CoarseGrid->m_Opt->m_Domain.nx[i];
      this->m_CoarseGrid->m_Opt->m_Domain.nl *= this->m_CoarseGrid->m_Opt->m_Domain.isize[i];
      this->m_CoarseGrid->m_Opt->m_Domain.hx[i] = 2.*PETSC_PI/static_cast<ScalarType>(this->m_CoarseGrid->m_Opt->m_Domain.nx[i]);
    }
    this->m_CoarseGrid->m_Opt->m_SetupDone = true;
    //this->m_CoarseGrid->m_Opt->m_KrylovMethod.matvectype = PRECONDMATVECSYM;
    //this->m_CoarseGrid->m_Opt->m_KrylovMethod.pctype = NOPC;

    // get grid scale and compute number of grid points
    /*scale = this->m_Opt->m_KrylovMethod.pcgridscale;
    for (int i = 0; i < 3; ++i) {
        value = static_cast<ScalarType>(this->m_Opt->m_Domain.nx[i])/scale;
        this->m_CoarseGrid->m_Opt->m_Domain.nx[i] = static_cast<IntType>(std::ceil(value));
    }
    ierr = this->m_CoarseGrid->m_Opt->DoSetup(false); CHKERRQ(ierr);*/

    if (this->m_PreProc) {
      ierr = this->m_PreProc->SetOptCoarse(this->m_CoarseGrid->m_Opt); CHKERRQ(ierr);
    }

    if (this->m_Opt->m_Verbosity > 2) {
        ss  << "setup of preconditioner (data allocation) "
            << "nx (f): (" << this->m_Opt->m_Domain.nx[0]
            << "," << this->m_Opt->m_Domain.nx[1]
            << "," << this


andalized. You can create one on [elephantsql.com](elephantsql.com), see [Gitpod Environment](#gitpod-environment) section for details.

- **[Gitpod Workspace Snapshot](https://gitpod.io#snapshot/e338d5fe-1233-48b6-aa92-59a899bc40f4)**

## Screenshots

#### Desktop:

https://user-images.githubusercontent.com/9990165/177367837-a2692e5d-b694-454e-806d-21e806465836.mp4

#### Mobile:

## Usage

- build your own projects on top of this (blog, social network, e-commerce, SaaS...), suitable for any small to medium size web app that can run in a single Linux box, not every start up has billion users from first day
- if you want to go serverless route you can still reuse a lot of code and implementation decisions from this project, few notes: 1. you need to remove custom http server and let Next.js app run natively, 2. you can't run production app in a single Docker container, 3. you must use different Multer storage type for uploads
- reuse any specific design decision, feature or configuration (i.e. VS Code devcontainer can be reused for any Node.js project, theming plugin, email/password login with `next-auth`, etc...)
- use it for learning or as a collection of working examples for reference

## Features

#### Tech stack:

React `18.2.0`, Next.js `12.2.0`, Node.js `16.13.1`, Prisma `4`, Postgres `14.3`, TypeScript `4.7.4`, React Query `4-beta`, Axios, React Hook Form `8-alpha`, React Dropzone, Zod, msw, TailwindCSS `3`, Jest `28`, Testing Library React, Cypress `9.6.1`.

#### Frontend:

- authentication with `next-auth` and Facebook, Google and Credentials providers
- uses all Next.js features - routing, SSR, SEO, Image component, error pages, `.env*` files...
- scalable and decoupled component structure `pages` -> `layouts` -> `views` -> `components`
- fully responsive design with