text:
package keeper

import (
	"context"

	"google.golang.org/protobuf/types/known/timestamppb"

	"github.com/cosmos/cosmos-sdk/orm/types/ormerrors"
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"

	api "github.com/regen-network/regen-ledger/api/v2/regen/ecocredit/v1"
	"github.com/regen-network/regen-ledger/types/v2/math"
	"github.com/regen-network/regen-ledger/x/ecocredit/v3"
	"github.com/regen-network/regen-ledger/x/ecocredit/v3/base"
	types "github.com/regen-network/regen-ledger/x/ecocredit/v3/base/types/v1"
	"github.com/regen-network/regen-ledger/x/ecocredit/v3/server/utils"
)

// CreateBatch creates a new batch of credits.
// Credits in the batch must not have more decimal places than the credit type's specified precision.
func (k Keeper) CreateBatch(ctx context.Context, req *types.MsgCreateBatch) (*types.MsgCreateBatchResponse, error) {
	sdkCtx := sdk.UnwrapSDKContext(ctx)

	project, err := k.stateStore.ProjectTable().GetById(ctx, req.ProjectId)
	if err != nil {
		return nil, sdkerrors.ErrInvalidRequest.Wrapf("could not get project with id %s: %s", req.ProjectId, err.Error())
	}

	class, err := k.stateStore.ClassTable().Get(ctx, project.ClassKey)
	if err != nil {
		return nil, err
	}

	issuer, err := sdk.AccAddressFromBech32(req.Issuer)
	if err != nil {
		return nil, err
	}

	err = k.assertClassIssuer(ctx, class.Key, issuer)
	if err != nil {
		return nil, err
	}

	batchSeqNo, err := k.getBatchSeqNo(ctx, project.Key)
	if err != nil {
		return nil, err
	}

	batchDenom, err := base.FormatBatchDenom(project.Id, batchSeqNo, req.StartDate, req.EndDate)
	if err != nil {
		return nil, err
	}

	startDate, endDate := timestamppb.New(*req.StartDate), timestamppb.New(*req.EndDate)
	issuanceDate := timestamppb.New(sdkCtx.BlockTime())
	batchKey, err := k.stateStore.BatchTable().InsertReturningID(ctx, &api.Batch{
		Issuer:       issuer,
		ProjectKey:   project.Key,
		Denom:        batchDenom,
		Metadata:     req.Metadata,
		StartDate:    startDate,
		EndDate:      endDate,
		IssuanceDate: issuanceDate,
		Open:         req.Open,
	})
	if err != nil {
		return nil, err
	}

	creditType, err := k.stateStore.CreditTypeTable().Get(ctx, class.CreditTypeAbbrev)
	if err != nil {
		return nil, err
	}
	maxDecimalPlaces := creditType.Precision

	tradableSupply, retiredSupply := math.NewDecFromInt64(0), math.NewDecFromInt64(0)

	// set module address string once for better performance
	moduleAddrString := k.moduleAddress.String()

	for _, issuance := range req.Issuance {
		// get and set decimal values of tradable amount and retired amount
		decs, err := utils.GetNonNegativeFixedDecs(maxDecimalPlaces, issuance.TradableAmount, issuance.RetiredAmount)
		if err != nil {
			return nil, sdkerrors.ErrInvalidRequest.Wrap(err.Error())
		}
		tradableAmount, retiredAmount := decs[0], decs[1]

		recipient, _ := sdk.AccAddressFromBech32(issuance.Recipient)

		// get the current batch balance of the recipient account
		// Note: Issuance could be for an account with no prior balance,
		// so we must catch the not found case and apply a zero value balance.
		balance, err := k.stateStore.BatchBalanceTable().Get(ctx, recipient, batchKey)
		if err != nil {
			if !ormerrors.IsNotFound(err) {
				return nil, err
			}
			balance = &api.BatchBalance{
				TradableAmount: "0",
				RetiredAmount:  "0",
				EscrowedAmount: "0",
			}
		}
		tradableBalance, err := math.NewDecFromString(balance.TradableAmount)
		if err != nil {
			return nil, err
		}
		retiredBalance, err := math.NewDecFromString(balance.RetiredAmount)
		if err != nil {
			return nil, err
		}

		// add tradable amount and retired amount to existing batch balance
		tradableBalance, err = tradableBalance.Add(tradableAmount)
		if err != nil {
			return nil, err
		}
		retiredBalance, err = retiredBalance.Add(retiredAmount)
		if err != nil {
			return nil, err
		}

		// update batch balance tradable amount and retired amount
		// Note: Save because batch balance may or may not already exist
		// depending on the length of issuance and if recipient is the same
		if err = k.stateStore.BatchBalanceTable().Save(ctx, &api.BatchBalance{
			BatchKey:       batchKey,
			Address:        recipient,
			TradableAmount: tradableBalance.String(),
			RetiredAmount:  retiredBalance.String(),
			EscrowedAmount: balance.EscrowedAmount,
		}); err != nil {
			return nil, err
		}

		// update tradable supply (updated in state at the end of the loop)
		if !tradableAmount.IsZero() {
			tradableSupply, err = tradableSupply.Add(tradableAmount)
			if err != nil {
				return nil, err
			}
		}

		// update retired supply (updated in state at the end of the loop)
		if !retiredAmount.IsZero() {
			retiredSupply, err = retiredSupply.Add(retiredAmount)
			if err != nil {
				return nil, err
			}
			// emit retired event only if retired amount is positive
			if err = sdkCtx.EventManager().EmitTypedEvent(&types.EventRetire{
				Owner:        issuance.Recipient,
				BatchDenom:   batchDenom,
				Amount:       retiredAmount.String(),
				Jurisdiction: issuance.RetirementJurisdiction,
				Reason:       issuance.RetirementReason,
			}); err != nil {
				return nil, err
			}
		}

		if err = sdkCtx.EventManager().EmitTypedEvent(&types.EventMint{
			BatchDenom:     batchDenom,
			TradableAmount: tradableAmount.String(),
			RetiredAmount:  retiredAmount.String(),
		}); err != nil {
			return nil, err
		}

		if err = sdkCtx.EventManager().EmitTypedEvent(&types.EventTransfer{
			Sender:         moduleAddrString, // ecocredit module
			Recipient:      issuance.Recipient,
			BatchDenom:     batchDenom,
			TradableAmount: tradableAmount.String(),
			RetiredAmount:  retiredAmount.String(),
		}); err != nil {
			return nil, err
		}

		sdkCtx.GasMeter().ConsumeGas(ecocredit.GasCostPerIteration, "ecocredit/MsgCreateBatch issuance iteration")
	}

	if err = k.stateStore.BatchSupplyTable().Insert(ctx, &api.BatchSupply{
		BatchKey:        batchKey,
		TradableAmount:  tradableSupply.String(),
		RetiredAmount:   retiredSupply.String(),
		CancelledAmount: "0", // must be explicitly set to prevent zero-value ""
	}); err != nil {
		return nil, err
	}

	if req.OriginTx != nil {
		if err = k.stateStore.OriginTxIndexTable().Insert(ctx, &api.OriginTxIndex{
			ClassKey: project.ClassKey,
			Id:       req.OriginTx.Id,
			Source:   req.OriginTx.Source,
		}); err != nil {
			if ormerrors.AlreadyExists.Is(err) {
				return nil, sdkerrors.ErrInvalidRequest.Wrapf(
					"credits already issued with tx id: %s", req.OriginTx.Id,
				)
			}
			return nil, err
		}

		// insert batch contract mapping if contract is provided
		if len(req.OriginTx.Contract) != 0 {
			err = k.stateStore.BatchContractTable().Insert(ctx, &api.BatchContract{
				BatchKey: batchKey,
				ClassKey: project.ClassKey,
				Contract: req.OriginTx.Contract,
			})
			if err != nil {
				if ormerrors.UniqueKeyViolation.Is(err) {
					return nil, sdkerrors.ErrInvalidRequest.Wrapf(
						"credit batch with contract already exists: %s", req.OriginTx.Contract,
					)
				}
				return nil, err
			}
		}
	}

	if err = sdkCtx.EventManager().EmitTypedEvent(&types.EventCreateBatch{
		BatchDenom: batchDenom,
		OriginTx:   req.OriginTx,
	}); err != nil {
		return nil, err
	}

	return &types.MsgCreateBatchResponse{BatchDenom: batchDenom}, nil
}

// getBatchSeqNo gets the batch sequence number
func (k Keeper) getBatchSeqNo(ctx context.Context, projectKey uint64) (uint64, error) {
	var seq uint64 = 1
	batchSeq, err := k.stateStore.BatchSequenceTable().Get(ctx, projectKey)
	if err != nil {
		if !ormerrors.IsNotFound(err) {
			return 0, err
		}
	} else {
		seq = batchSeq.NextSequence
	}

	if err = k.stateStore.BatchSequenceTable().Save(ctx, &api.BatchSequence{
		ProjectKey:   projectKey,
		NextSequence: seq + 1,
	}); err != nil {
		return 0, err
	}

	return seq, err
}

repository: regen-network/regen-ledger

repo_name: regen-network/regen-ledger

gha_language: Go


text:
@inproceedings{zangerle:cybercrime:2014,
 author = {Eva Zangerle and Günther Specht},
 booktitle = {Proceedings of the WebScience Cybercrime / Cyberwar Workshop, co-located with WebSci14},
 title = {Cybercrime on Twitter: Shifting the User Back into Focus},
 year = {2014}
}

license: MIT

license_type: permissive

branch_name: refs/heads/main

extension: bib


text:
macro(soprano_add_storage_definition _sources _spec _filename _classname)
    set(ARGS
        ${_spec}
        ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.h
        ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.cpp
        ${_classname})

    if (NOT TARGET soprano-storage-tool)
        find_package(Qt4 REQUIRED QtCore)
        include(${QT_USE_FILE})
        include_directories(${QT_INCLUDES})
        add_definitions(${QT_DEFINITIONS})
        add_executable(soprano-storage-tool @INSTALL_SOURCES_DIR@/sopranostoragetool.cpp)
        target_link_libraries(soprano-storage-tool ${QT_LIBRARIES})
    endif (NOT TARGET soprano-storage-tool)

    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.h ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.cpp
        COMMAND soprano-storage-tool
        ARGS ${ARGS}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        MAIN_DEPENDENCY ${_spec}
        DEPENDS soprano-storage-tool)
    add_custom_target(generate_soprano-storage-definition-${_classname} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.h ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.cpp)

    qt4_generate_moc(${CMAKE_CURRENT_BINARY_DIR}/${_filename}.h ${CMAKE_CURRENT_BINARY_DIR}/moc_${_filename}.cpp)

    set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_filename}.h ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.cpp PROPERTIES SKIP_AUTOMOC TRUE)

    list(APPEND ${_sources} ${CMAKE_CURRENT_BINARY_DIR}/${_filename}.cpp ${CMAKE_CURRENT_BINARY_DIR}/moc_${_filename}.cpp)
endmacro(soprano_add_storage_definition)

repository: hemeraos/common-cmake-modules

repo_name: hemeraos/common-cmake-modules

branch_name: refs/heads/master

extension: in


text:
@InProceedings{daniely14a,
  author = {Daniely, Amit and Linial, Nati and Shalev-Shwartz, Shai},
  title = {The Complexity of Learning Halfspaces using Generalized Linear Methods},
  pages = {244-286},
  abstract = {Many popular learning algorithms (E.g. Regression, Fourier-Transform based algorithms, Kernel SVM and Kernel ridge regression) operate by reducing the problem to a convex optimization problem over a set of functions. These methods offer the currently best approach to several central problems such as learning half spaces and learning DNF's. In addition they are widely used in numerous application domains. Despite their importance, there are still very few proof techniques to show limits on the power of these algorithms.

We study the performance of this approach in the problem of
(agnostically and improperly) learning halfspaces with margin
$\gamma$. Let $D$ be a distribution over labeled examples. The
$\gamma$-margin error of a hyperplane $h$ is the probability of an
example to fall on the wrong side of $h$ or at a distance $\le\gamma$
from it. The $\gamma$-margin error of the best $h$ is denoted
$\mathrm{Err}_\gamma(D)$.  An $\alpha(\gamma)$-approximation algorithm
receives $\gamma,\epsilon$ as input and, using i.i.d. samples of $D$,
outputs a classifier with error rate $\le
\alpha(\gamma)\mathrm{Err}_\gamma(D) + \epsilon$.  Such an algorithm is
efficient if it uses $\mathrm{poly}(\frac{1}{\gamma},\frac{1}{\epsilon})$
samples and runs in time polynomial in the sample size.

The best approximation ratio achievable by an efficient algorithm is
$O\left(\frac{1/\gamma}{\sqrt{\log(1/\gamma)}}\right)$ and is achieved
using an algorithm from the above class. Our main result shows that the
approximation ratio of every efficient algorithm from this family must be $\ge
\Omega\left(\frac{1/\gamma}{\mathrm{poly}\left(\log\left(1/\gamma\right)\right)}\right)$,
essentially matching the best known upper bound.},
}

repository: mreid/papersite

repo_name: mreid/papersite

gha_license_id: MIT

gha_language: TeX


text:
require xorg-proto-common.inc
PE = "1"
PR = "${INC_PR}.0"

SRC_URI[archive.md5sum] = "998e5904764b82642cc63d97b4ba9e95"
SRC_URI[archive.sha256sum] = "5c7c112e9b9ea8a9d5b019e5f17d481ae20f766cb7a4648360e7c1b46fc9fc5b"

CONFLICTS = "damageext"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD

extension: bb


text:
package main

type testCase struct {
	input, expectedPart1, expectedPart2 string
}

var tests = []testCase{}

var puzzle = `p=<-1021,-2406,1428>, v=<11,24,-73>, a=<4,9,0>
p=<-181,-26,548>, v=<11,73,-8>, a=<0,-7,-2>
p=<-2101,-2706,-1112>, v=<-19,-66,75>, a=<12,19,-2>
p=<-1221,-16,-1412>, v=<0,-1,-15>, a=<6,0,8>
p=<1009,-716,-1062>, v=<-164,55,125>, a=<11,-2,-7>
p=<-671,1794,-1062>, v=<46,87,41>, a=<-1,-17,1>
p=<255,-544,641>, v=<-21,93,-83>, a=<-1,-7,4>
p=<-945,-1004,-29>, v=<88,106,-38>, a=<1,-1,8>
p=<-1045,-644,-949>, v=<76,114,98>, a=<5,-9,0>
p=<640,956,741>, v=<-21,-79,-49>, a=<-8,-3,-4>
p=<230,461,-54>, v=<-35,-46,-8>, a=<2,0,3>
p=<-250,596,-354>, v=<-31,-87,-22>, a=<10,5,11>
p=<815,-779,-1364>, v=<-22,78,134>, a=<-11,0,1>
p=<-175,841,-459>, v=<55,-84,93>, a=<-7,0,-8>
p=<349,-2471,-1471>, v=<-29,111,4>, a=<1,3,8>
p=<-443,2236,5>, v=<53,-46,17>, a=<-3,-8,-2>
p=<-1658,634,20>, v=<149,5,-92>, a=<-3,-8,13>
p=<786,-822,-175>, v=<17,131,-7>, a=<-11,-10,3>
p=<-1151,1323,-84>, v=<-9,-118,35>, a=<14,2,-4>
p=<1163,-237,-578>, v=<-117,93,24>, a=<4,-11,3>
p=<1273,28,-590>, v=<-105,-68,57>, a=<-2,11,0>
p=<-1400,-170,-678>, v=<108,52,35>, a=<3,-6,5>
p=<1504,-720,-1767>, v=<-144,0,80>, a=<1,11,14>
p=<624,622,-1206>, v=<-64,-20,59>, a=<1,-6,9>
p=<-102,-412,1258>, v=<14,38,-63>, a=<-1,0,-8>
p=<-1477,-390,488>, v=<79,102,31>, a=<9,-11,-12>
p=<5988,-431,13>, v=<-177,-45,62>, a=<-6,5,-5>
p=<4236,853,1285>, v=<-54,-11,109>, a=<-10,-2,-13>
p=<1248,-755,1921>, v=<-42,81,-30>, a=<-1,-4,-4>
p=<-3756,-1103,-1391>, v=<54,-17,58>, a=<8,5,0>
p=<-4296,-215,1249>, v=<-36,-29,-2>, a=<17,3,-4>
p=<-2088,-2183,2257>, v=<72,3,-44>, a=<1,7,-4>
p=<348,3397,-3599>, v=<-42,-117,0>, a=<2,-2,12>
p=<-1416,4645,-407>, v=<44,-44,-83>, a=<1,-12,8>
p=<-2700,2065,-11>, v=<85,26,88>, a=<2,-9,-7>
p=<4572,4273,601>, v=<-93,-91,-50>, a=<-8,-7,2>
p=<6937,1685,-3884>, v=<-121,-76,16>, a=<-17,0,14>
p=<722,288,-2267>, v=<-34,-93,92>, a=<0,7,1>
p=<5001,112,3310>, v=<-102,53,-58>, a=<-11,-5,-8>
p=<-686,-4882,76>, v=<7,96,20>, a=<2,11,-2>
p=<-3260,-3958,384>, v=<32,54,-132>, a=<10,11,10>
p=<84,1894,3046>, v=<110,-28,-92>, a=<-10,-5,-4>
p=<2592,-2814,1946>, v=<-50,48,-88>, a=<-6,7,0>
p=<-213,-1571,-3257>, v=<43,-43,-1>, a=<-3,10,13>
p=<524,2169,1462>, v=<-2,-98,-66>, a=<-2,0,0>
p=<-1885,-2781,1506>, v=<73,127,-45>, a=<1,0,-2>
p=<-996,3744,-5856>, v=<-150,-41,96>, a=<9,-3,3>
p=<-1794,1483,13030>, v=<-12,-40,-128>, a=<3,0,-11>
p=<-10230,4485,5848>, v=<93,-2,-17>, a=<9,-6,-7>
p=<420,1686,-809>, v=<-23,-136,93>, a=<0,4,-5>
p=<-2351,-4485,-2475>, v=<131,164,110>, a=<1,11,4>
p=<2392,-2853,3985>, v=<-121,86,-126>, a=<-2,9,-12>
p=<437,632,-2356>, v=<-186,-2,85>, a=<18,-4,6>
p=<2817,-2054,1129>, v=<-83,12,-48>, a=<-9,12,-2>
p=<-1122,1614,2284>, v=<108,-33,-86>, a=<-5,-6,-4>
p=<-1140,-4209,295>, v=<-5,167,34>, a=<7,7,-5>
p=<-1671,-2589,-3872>, v=<34,39,142>, a=<6,11,8>
p=<-708,-1725,-38>, v=<-10,-9,-33>, a=<5,11,4>
p=<147,399,3715>, v=<9,-32,-118>, a=<-2,1,-9>
p=<1785,-384,997>, v=<-63,97,-43>, a=<-4,-8,-1>
p=<-1302,-132,1996>, v=<99,-12,44>, a=<-3,2,-16>
p=<2541,-1203,1069>, v=<66,0,-66>, a=<-22,7,1>
p=<435,1713,1771>, v=<-7,-124,-10>, a=<-2,3,-9>
p=<-2698,-5379,-1198>, v=<35,70,-43>, a=<2,4,4>
p=<-7619,-717,3279>, v=<73,39,83>, a=<7,-1,-9>
p=<-484,-2306,-875>, v=<-43,65,6>, a=<8,8,5>
p=<-1147,1383,-2388>, v=<-4,-80,23>, a=<8,0,13>
p=<-212,-4618,2848>, v=<49,147,-15>, a=<-4,14,-17>
p=<2151,-402,4089>, v=<-72,70,-97>, a=<-6,-5,-16>
p=<2695,3661,1998>, v=<-86,-133,-82>, a=<-8,-9,-4>
p=<1981,992,1284>, v=<19,-48,-49>, a=<-15,-1,-3>
p=<2151,1740,366>, v=<-54,-38,-103>, a=<-8,-7,9>
p=<2661,1961,-824>, v=<-111,-6,-24>, a=<-5,-12,8>
p=<-1167,977,-542>, v=<-13,-25,-43>, a=<8,-3,8>
p=<660,950,-605>, v=<-86,-71,27>, a=<5,2,1>
p=<-1419,1229,-1244>, v=<20,-115,91>, a=<6,5,-2>
p=<-1851,-85,2518>, v=<44,91,-61>, a=<6,-9,-8>
p=<-1261,4127,-1342>, v=<-43,-148,-12>, a=<6,0,4>
p=<-323,-8711,-1202>, v=<-4,122,-17>, a=<1,13,4>
p=<-4355,3693,2732>, v=<24,-60,-85>, a=<9,-5,-1>
p=<1553,-2551,-376>, v=<-71,18,55>, a=<1,5,-3>
p=<1175,1621,3054>, v=<15,-44,5>, a=<-4,-1,-8>
p=<-771,-3783,72>, v=<41,4,-48>, a=<-1,9,3>
p=<-561,-2929,-992>, v=<19,-12,-10>, a=<0,8,3>
p=<-5321,81,618>, v=<44,98,-53>, a=<10,-7,2>
p=<-1361,-1168,-1743>, v=<106,60,62>, a=<0,4,10>
p=<-438,-1051,-1028>, v=<0,72,42>, a=<5,1,5>
p=<-1348,41,-1>, v=<91,-75,19>, a=<2,10,-3>
p=<-477,769,1052>, v=<24,-47,-69>, a=<2,-2,-2>
p=<-919,-388,-781>, v=<72,7,30>, a=<0,3,4>
p=<-633,-336,675>, v=<106,-18,-19>, a=<-8,6,-5>
p=<-230,-271,259>, v=<5,19,-29>, a=<2,0,1>
p=<1408,-349,-612>, v=<-44,46,-32>, a=<-9,-3,11>
p=<-1452,847,-1262>, v=<113,-18,46>, a=<0,-7,7>
p=<91,-1183,-4776>, v=<15,-69,89>, a=<-1,6,3>
p=<-7763,5209,2551>, v=<106,-82,-74>, a=<7,-4,0>
p=<-3275,4903,-1614>, v=<79,67,-144>, a=<1,-12,11>
p=<-1388,-3495,-2617>, v=<-134,104,78>, a=<10,0,0>
p=<-5672,-3801,-662>, v=<62,8,3>, a=<6,6,1>
p=<1035,-5126,-1612>, v=<-67,50,-126>, a=<2,11,14>
p=<580,-615,1924>, v=<-63,-83,-46>, a=<3,8,-2>
p=<2049,1101,3055>, v=<-25,13,-49>, a=<-4,-4,-5>
p=<5091,-1187,-156>, v=<-115,-7,7>, a=<-6,4,0>
p=<-18,-4398,-2821>, v=<-40,-5,96>, a=<3,13,1>
p=<-486,3285,-5473>, v=<59,-44,144>, a=<-3,-6,5>
p=<-2462,1309,923>, v=<-54,-49,6>, a=<11,0,-3>
p=<320,4533,-3913>, v=<-53,-65,84>, a=<3,-8,5>
p=<3180,1153,6487>, v=<26,-16,-100>, a=<-11,-2,-11>
p=<-581,-3794,236>, v=<-43,72,19>, a=<7,11,-3>
p=<-1231,-2234,1536>, v=<-126,36,-25>, a=<18,7,-5>
p=<-2001,2066,1196>, v=<112,-95,-71>, a=<-1,-1,1>
p=<1719,-2804,3646>, v=<-32,33,-36>, a=<-5,10,-14>
p=<-41,1856,866>, v=<14,31,40>, a=<-1,-12,-8>
p=<-3241,-354,-3044>, v=<111,26,183>, a=<5,-1,-3>
p=<549,-1024,-2094>, v=<-110,49,146>, a=<8,0,-4>
p=<6554,-2720,-1361>, v=<-73,-47,28>, a=<-8,8,1>
p=<-2966,1552,4415>, v=<43,-98,95>, a=<3,3,-14>
p=<-870,-1840,-10081>, v=<-105,8,119>, a=<8,3,12>
p=<-118,1168,863>, v=<-13,46,-25>, a=<1,-5,0>
p=<-12374,1200,4303>, v=<106,12,82>, a=<17,-3,-13>
p=<-5974,-3440,10463>, v=<-28,58,-94>, a=<13,3,-14>
p=<3418,4384,-2673>, v=<-74,28,36>, a=<-2,-10,3>
p=<1322,2208,-1889>, v=<-25,-3,61>, a=<-1,-4,0>
p=<3114,6272,-3569>, v=<18,2,64>, a=<-7,-12,3>
p=<-2617,-3668,-2074>, v=<205,-99,-101>, a=<-7,10,8>
p=<-4707,1120,12290>, v=<65,9,-11>, a=<3,-2,-16>
p=<-7500,-11211,-6729>, v=<-37,41,119>, a=<12,13,3>
p=<4014,-11021,5602>, v=<11,153,48>, a=<-6,7,-10>
p=<1354,-1578,-3423>, v=<81,2,-85>, a=<-6,2,9>
p=<9714,-2167,-1770>, v=<-22,-41,8>, a=<-12,5,2>
p=<-6265,-2376,9022>, v=<67,23,-42>, a=<5,2,-10>
p=<4432,-115,-6938>, v=<-117,-95,-51>, a=<0,5,12>
p=<394,4626,3880>, v=<1,-184,-16>, a=<-1,1,-9>
p=<6847,1062,-2654>, v=<-196,46,-68>, a=<-4,-6,12>
p=<637,2034,-3113>, v=<-50,-172,117>, a=<2,7,0>
p=<-6049,-10384,-3497>, v=<46,69,-38>, a=<10,18,10>
p=<-8554,6566,88>, v=<21,-217,-49>, a=<17,0,3>
p=<-5239,-1084,-1997>, v=<-74,69,5>, a=<16,-2,4>
p=<1301,-3604,-3527>, v=<-106,-33,-37>, a=<4,10,10>
p=<-379,5021,943>, v=<12,5,62>, a=<0,-11,-6>
p=<-319,2486,1423>, v=<10,12,-47>, a=<0,-6,0>
p=<-3034,1346,-1607>, v=<-70,-43,23>, a=<11,0,2>
p=<-3004,-1063,-3803>, v=<7,110,-8>, a=<7,-5,10>
p=<5172,2423,-1535>, v=<-24,0,-2>, a=<-11,-6,4>
p=<-4502,71,-1437>, v=<162,-3,38>, a=<0,0,1>
p=<-6952,687,-1871>, v=<32,-83,-48>, a=<15,4,8>
p=<4000,4104,-2139>, v=<129,-58,-99>, a=<-17,-5,11>
p=<8065,-9456,-8259>, v=<-22,84,-19>, a=<-16,15,19>
p=<-10007,-68,2480>, v=<34,-45,32>, a=<18,3,-7>
p=<1866,10937,7440>, v=<-61,-96,48>, a=<0,-16,-18>
p=<595,3001,6510>, v=<-148,32,-34>, a=<8,-8,-11>
p=<6020,-5710,5022>, v=<-3,41,-98>, a=<-12,9,-4>
p=<1618,-6175,930>, v=<-69,24,-30>, a=<1,11,0>
p=<694,-14199,-2624>, v=<37,135,-93>, a=<-3,14,9>
p=<-5948,-2787,-5324>, v=<18,3,-18>, a=<8,4,9>
p=<6922,-4911,2704>, v=<-62,-86,55>, a=<-7,12,-7>
p=<289,-1614,2216>, v=<-15,125,-79>, a=<0,-3,-7>
p=<665,-750,-32>, v=<-13,71,-15>, a=<-3,-3,2>
p=<206,596,-89>, v=<-3,-38,26>, a=<-3,-3,-3>
p=<1207,420,395>, v=<-88,-22,0>, a=<-4,-3,-6>
p=<-377,123,417>, v=<2,23,-14>, a=<5,-6,-4>
p=<-190,-867,21>, v=<9,71,-50>, a=<1,1,8>
p=<894,-3318,-9396>, v=<-25,33,44>, a=<0,3,11>
p=<-4767,-10459,-6695>, v=<14,169,9>, a=<6,6,9>
p=<-2954,-8239,1260>, v=<41,128,41>, a=<2,5,-4>
p=<4113,715,-3513>, v=<59,-95,-1>, a=<-9,4,5>
p=<103,9579,2043>, v=<-3,47,54>, a=<0,-17,-6>
p=<1309,6033,-1179>, v=<56,53,88>, a=<-5,-12,-3>
p=<4623,-4737,-3090>, v=<-172,73,86>, a=<-1,9,3>
p=<-1677,-412,4135>, v=<67,17,-73>, a=<0,0,-7>
p=<723,563,410>, v=<-42,-22,50>, a=<1,0,-5>
p=<-2327,-912,-3365>, v=<2,37,-33>, a=<7,0,13>
p=<3598,1138,-3740>, v=<-53,20,86>, a=<-7,-5,5>
p=<323,-2587,-2915>, v=<39,0,66>, a=<-4,8,4>
p=<1448,3513,2235>, v=<-32,-75,-88>, a=<-2,-5,0>
p=<-4527,-2412,-2690>, v=<64,-7,31>, a=<9,8,6>
p=<-327,-2162,-6040>, v=<-78,22,35>, a=<7,5,16>
p=<-4527,2863,3385>, v=<51,-101,22>, a=<10,-1,-12>
p=<-693,-661,-821>, v=<-97,-44,21>, a=<20,12,5>
p=<728,816,-1108>, v=<4,-67,124>, a=<-7,1,-6>
p=<1470,2447,1090>, v=<-64,-101,-78>, a=<-5,-10,0>
p=<1015,431,1818>, v=<-24,-32,-145>, a=<-6,0,2>
p=<511,2068,-2125>, v=<-28,-34,17>, a=<0,-10,12>
p=<-322,-3474,-1683>, v=<120,148,81>, a=<-11,6,2>
p=<18,2102,-323>, v=<-8,-45,10>, a=<1,-9,1>
p=<-1597,912,-357>, v=<132,16,-24>, a=<-4,-8,5>
p=<1225,3122,-918>, v=<-88,-69,54>, a=<2,-13,0>
p=<-1121,1184,1615>, v=<59,-9,-14>, a=<1,-7,-9>
p=<-2807,-2982,46>, v=<78,2,49>, a=<6,14,-5>
p=<83,138,826>, v=<49,-7,-95>, a=<-5,0,5>
p=<-3337,-4542,16>, v=<31,59,-2>, a=<13,16,0>
p=<1083,-562,1226>, v=<-106,28,-31>, a=<5,0,-3>
p=<-1637,-1712,-1284>, v=<-54,180,0>, a=<13,-9,6>
p=<2683,308,3386>, v=<24,-26,-55>, a=<-15,1,-11>
p=<1053,778,-114>, v=<-94,45,36>, a=<4,-8,-3>
p=<-1777,-1532,-2384>, v=<58,108,34>, a=<3,-3,8>
p=<3985,-31,-2486>, v=<-47,-127,0>, a=<-5,8,5>
p=<6465,372,6039>, v=<-63,-44,-67>, a=<-9,2,-8>
p=<5163,1550,3249>, v=<-5,-50,-105>, a=<-10,0,0>
p=<-1688,-3410,-347>, v=<8,30,-5>, a=<3,5,1>
p=<544,-5177,11185>, v=<48,71,-137>, a=<-4,6,-14>
p=<-641,-708,2>, v=<55,38,96>, a=<-2,1,-11>
p=<-521,924,2762>, v=<-29,-47,-119>, a=<7,-1,-6>
p=<9928,-5087,261>, v=<-95,-29,73>, a=<-8,8,-4>
p=<-173,-10469,-6798>, v=<-16,89,134>, a=<1,9,2>
p=<1317,-593,485>, v=<-96,31,7>, a=<1,1,-5>
p=<3012,22,-1435>, v=<-137,30,71>, a=<-8,-4,3>
p=<-873,-758,500>, v=<58,178,-42>, a=<0,-16,1>
p=<-678,-2498,-40>, v=<37,54,-62>, a=<1,14,8>
p=<177,-8,-1150>, v=<-100,24,52>, a=<11,-3,3>
p=<-453,1687,-25>, v=<30,-25,33>, a=<0,-11,-4>
p=<222,-1043,2180>, v=<-39,13,-74>, a=<3,7,-9>
p=<1047,187,2645>, v=<-6,-45,-97>, a=<-8,4,-10>
p=<777,-1403,-1000>, v=<-52,53,66>, a=<0,5,0>
p=<324,780,1066>, v=<-20,-32,-7>, a=<0,-2,-7>
p=<148,196,1450>, v=<-9,-72,-82>, a=<0,7,-1>
p=<1484,1868,466>, v=<-101,-117,39>, a=<1,0,-8>
p=<196,-740,-894>, v=<-46,46,22>, a=<4,0,4>
p=<812,-1660,-1846>, v=<-8,163,107>, a=<-5,-7,1>
p=<412,-1492,186>, v=<-17,93,48>, a=<-1,0,-7>
p=<-308,-1276,914>, v=<62,20,11>, a=<-5,7,-8>
p=<1492,142,-249>, v=<28,5,65>, a=<-16,-2,-6>
p=<1867,-728,-9>, v=<-109,-25,73>, a=<-2,9,-9>
p=<1687,1297,21>, v=<-33,24,-1>, a=<-10,-14,0>
p=<1057,-23,1521>, v=<-79,0,51>, a=<1,0,-19>
p=<2092,442,-1449>, v=<-116,-47,25>, a=<-3,2,9>
p=<2572,922,-3804>, v=<-84,-23,150>, a=<-11,-5,13>
p=<2197,832,306>, v=<-91,-81,12>, a=<-7,3,-4>
p=<919,1669,-1409>, v=<-40,-69,27>, a=<-3,-7,10>
p=<2060,-1313,180>, v=<-99,9,-19>, a=<-6,11,1>
p=<548,1270,-2851>, v=<-21,-108,160>, a=<-2,2,6>
p=<1395,-718,-730>, v=<16,49,31>, a=<-15,0,3>
p=<-36,1770,1658>, v=<-2,-31,-92>, a=<0,-11,-2>
p=<-2616,315,-262>, v=<170,34,76>, a=<0,-7,-7>
p=<-771,-285,443>, v=<23,-22,-27>, a=<3,5,0>
p=<-276,-1095,83>, v=<-2,48,-91>, a=<2,3,11>
p=<1503,1767,-7081>, v=<51,-21,155>, a=<-6,-2,4>
p=<-2897,279,855>, v=<40,108,72>, a=<3,-7,-6>
p=<-3547,-7946,5832>, v=<6,-20,42>, a=<5,13,-11>
p=<5579,5266,2214>, v=<-81,-91,-24>, a=<-4,-3,-2>
p=<-452,181,-8175>, v=<13,-23,154>, a=<0,1,5>
p=<-5858,-10478,4031>, v=<172,133,145>, a=<0,10,-15>
p=<-1064,4210,-2565>, v=<-4,-19,-11>, a=<2,-6,5>
p=<2676,-2845,3674>, v=<26,-39,-107>, a=<-6,7,0>
p=<9000,62,6309>, v=<-90,-72,8>, a=<-10,4,-11>
p=<-3597,5876,-5744>, v=<123,2,-40>, a=<-1,-10,12>
p=<6161,-1655,-7784>, v=<11,-109,20>, a=<-11,9,12>
p=<925,-584,-1528>, v=<-45,52,46>, a=<1,-2,0>
p=<5396,-5548,4660>, v=<-54,58,-66>, a=<-6,6,-4>
p=<1796,-8375,-1230>, v=<-81,83,44>, a=<1,15,0>
p=<1012,-8683,5350>, v=<-53,123,12>, a=<1,13,-14>
p=<1796,2125,2928>, v=<-110,56,26>, a=<3,-9,-9>
p=<632,-10146,994>, v=<50,73,7>, a=<-5,20,-3>
p=<-124,298,-1568>, v=<19,-10,84>, a=<-1,0,-2>
p=<-4464,1880,308>, v=<58,-23,17>, a=<7,-3,-2>
p=<58,-2838,8988>, v=<-118,44,-177>, a=<8,4,-10>
p=<5956,-490,530>, v=<-152,-15,-96>, a=<-3,2,5>
p=<841,-3805,1550>, v=<96,-13,25>, a=<-8,9,-5>
p=<-3569,1355,2105>, v=<-98,32,-71>, a=<14,-5,0>
p=<2431,1610,1265>, v=<-81,-54,81>, a=<0,0,-8>
p=<646,-6310,-7000>, v=<-68,24,0>, a=<3,12,15>
p=<-734,815,3095>, v=<71,50,-42>, a=<-3,-5,-4>
p=<1311,-524,1013>, v=<-19,26,-99>, a=<-17,4,1>
p=<1377,15,177>, v=<-73,-5,-5>, a=<-9,1,-2>
p=<970,-172,991>, v=<-90,-18,-91>, a=<0,6,0>
p=<-1109,103,408>, v=<51,-73,-38>, a=<8,11,0>
p=<-218,-7,397>, v=<36,-9,-31>, a=<-3,2,-1>
p=<1465,-821,-593>, v=<-63,35,83>, a=<-12,7,-5>
p=<64,-474,785>, v=<-62,51,-69>, a=<8,-2,1>
p=<-1288,-851,-1438>, v=<119,3,102>, a=<-3,9,1>
p=<-937,1203,-1139>, v=<-13,-22,37>, a=<12,-10,7>
p=<129,436,-853>, v=<-123,-33,-6>, a=<16,0,10>
p=<1403,-1644,408>, v=<-60,127,2>, a=<-7,0,-5>
p=<-313,-1306,-723>, v=<-103,94,54>, a=<18,1,0>
p=<-14,371,629>, v=<14,-7,-22>, a=<-2,-3,-4>
p=<-2,1154,-6362>, v=<-78,86,148>, a=<4,-6,1>
p=<1480,1439,-6457>, v=<39,-97,14>, a=<-4,3,8>
p=<-3285,-3050,1237>, v=<139,125,0>, a=<0,0,-4>
p=<5475,2230,3001>, v=<-51,-120,-111>, a=<-14,2,-1>
p=<-1197,-3626,373>, v=<2,49,-64>, a=<4,8,4>
p=<-1617,190,-5975>, v=<82,-10,88>, a=<-1,0,13>
p=<675,3898,-6179>, v=<-1,-102,84>, a=<-2,-5,14>
p=<617,2333,2796>, v=<-72,-24,-158>, a=<4,-11,0>
p=<329,-763,3363>, v=<-18,110,-180>, a=<0,-7,-1>
p=<338,677,654>, v=<-28,-8,37>, a=<1,-3,-8>
p=<-2551,-313,-1767>, v=<28,-48,86>, a=<12,7,1>
p=<-3154,452,-1596>, v=<147,33,86>, a=<3,-6,0>
p=<104,1226,906>, v=<118,-29,-34>, a=<-13,-4,-2>
p=<-895,4691,753>, v=<-26,-98,41>, a=<8,-17,-9>
p=<320,-466,-507>, v=<68,27,-3>, a=<-9,0,3>
p=<-1102,-1618,-1965>, v=<-62,91,97>, a=<13,0,1>
p=<2849,1037,4587>, v=<-101,29,-210>, a=<-6,-9,-5>
p=<3362,-144,329>, v=<-126,-53,14>, a=<-8,7,-4>
p=<421,2372,-2391>, v=<-70,-66,66>, a=<5,-8,8>
p=<1781,-858,1417>, v=<-15,61,-95>, a=<-10,-1,1>
p=<319,-586,-1286>, v=<-100,63,91>, a=<9,-3,-2>
p=<829,859,-623>, v=<-49,59,-65>, a=<0,-12,11>
p=<-786,672,-1065>, v=<82,43,69>, a=<-4,-9,-1>
p=<115,-671,-317>, v=<2,41,25>, a=<-1,0,-1>
p=<591,-1385,3355>, v=<-35,47,-146>, a=<0,4,-6>
p=<438,-2881,-164>, v=<-44,0,7>, a=<2,19,0>
p=<-2622,757,1077>, v=<46,-16,15>, a=<12,-3,-9>
p=<-286,-626,-748>, v=<27,-25,-1>, a=<-1,2,1>
p=<3029,-9791,-3361>, v=<-58,-90,26>, a=<-1,17,3>
p=<-5356,6160,-14437>, v=<57,-39,30>, a=<4,-6,17>
p=<6050,3006,2925>, v=<-112,-144,-25>, a=<-10,2,-7>
p=<4250,2331,3475>, v=<-66,91,-47>, a=<-8,-14,-7>
p=<4064,-4572,1529>, v=<-58,-20,12>, a=<-3,8,-3>
p=<-76,5814,13697>, v=<-91,6,-67>, a=<5,-9,-17>
p=<-152,-192,662>, v=<-84,-59,85>, a=<11,8,-15>
p=<552,128,-1570>, v=<25,-28,46>, a=<-7,2,6>
p=<-2264,-304,4334>, v=<99,16,-221>, a=<5,0,-6>
p=<136,640,1454>, v=<17,-43,10>, a=<-3,0,-12>
p=<-1528,1152,-2378>, v=<70,-160,88>, a=<3,10,7>
p=<-728,1432,-18>, v=<37,-67,0>, a=<1,-3,0>
p=<1724,-224,-2735>, v=<-104,45,71>, a=<3,-2,0>
p=<-1164,-509,-132>, v=<-106,33,-56>, a=<7,-1,3>
p=<-1449,-4233,-3514>, v=<-1,-64,72>, a=<2,9,1>
p=<8127,-2219,4713>, v=<-19,0,31>, a=<-10,3,-8>
p=<-7054,3443,3345>, v=<127,-32,28>, a=<3,-3,-6>
p=<-4394,-14759,8437>, v=<-60,96,-106>, a=<9,15,-6>
p=<-2779,2075,-3913>, v=<73,-35,24>, a=<0,-1,4>
p=<-2141,-6916,851>, v=<88,27,40>, a=<0,21,-6>
p=<3139,3848,3671>, v=<-82,-134,-115>, a=<-4,-2,-3>
p=<1327,-2536,107>, v=<6,32,21>, a=<-5,6,-2>
p=<-3389,-1612,959>, v=<65,6,-27>, a=<6,5,-1>
p=<-1229,-244,3167>, v=<0,-26,-44>, a=<4,3,-7>
p=<1447,-1384,3911>, v=<26,34,-25>, a=<-7,2,-11>
p=<475,860,-1777>, v=<129,78,87>, a=<-12,-9,-1>
p=<1627,-2428,359>, v=<-119,40,-27>, a=<4,5,1>
p=<3211,488,-445>, v=<-60,-19,-31>, a=<-6,0,4>
p=<-1937,824,-2473>, v=<-33,-33,16>, a=<9,0,7>
p=<292,-3241,2398>, v=<-8,108,93>, a=<0,0,-11>
p=<-1568,5159,808>, v=<54,-110,-40>, a=<0,-4,1>
p=<4687,4169,3058>, v=<-46,-108,40>, a=<-7,-2,-9>
p=<7282,-961,-2897>, v=<-148,32,99>, a=<-6,0,0>
p=<-2205,1288,-648>, v=<57,-58,52>, a=<1,1,-2>
p=<-3810,-5357,-2283>, v=<-60,24,29>, a=<12,10,3>
p=<-4485,-3332,4107>, v=<40,3,-60>, a=<7,7,-5>
p=<-570,-4637,-3948>, v=<-13,31,-24>, a=<2,8,10>
p=<7155,673,822>, v=<24,133,-28>, a=<-17,-10,0>
p=<1305,-4037,-1368>, v=<-122,-51,45>, a=<5,12,0>
p=<1200,2773,-633>, v=<-10,-92,5>, a=<-2,0,1>
p=<4155,5713,3492>, v=<0,-4,-86>, a=<-9,-12,-2>
p=<845,-4997,2504>, v=<15,-6,35>, a=<-3,12,-8>
p=<-1185,281,3287>, v=<-35,7,-22>, a=<5,-1,-6>
p=<-2635,2572,561>, v=<90,-42,12>, a=<0,-3,-2>
p=<-2925,1006,1634>, v=<40,-33,-55>, a=<4,0,0>
p=<1381,3639,6097>, v=<-37,21,-5>, a=<0,-6,-8>
p=<89,-5709,-9692>, v=<-42,-6,40>, a=<2,8,11>
p=<12952,3240,-1522>, v=<-166,12,59>, a=<-9,-5,-1>
p=<12458,694,16110>, v=<-75,-116,-93>, a=<-13,5,-17>
p=<-1531,-2207,4330>, v=<97,-46,63>, a=<-3,7,-12>
p=<-3643,-1487,8010>, v=<31,-85,-19>, a=<5,8,-14>
p=<-75,-13119,3066>, v=<68,163,86>, a=<-4,15,-11>
p=<-411,-3647,-86>, v=<29,65,-63>, a=<-1,3,4>
p=<5093,-3807,3370>, v=<-11,-62,27>, a=<-9,11,-8>
p=<-424,633,-2094>, v=<89,-67,115>, a=<-7,3,1>
p=<-2362,-1815,-1414>, v=<104,77,3>, a=<4,3,9>
p=<-1002,2554,-1159>, v=<-30,-63,69>, a=<10,-10,0>
p=<936,-115,-1839>, v=<-54,-23,1>, a=<0,3,12>
p=<-2294,1211,82>, v=<19,-29,-13>, a=<13,-5,1>
p=<1633,-710,626>, v=<-32,3,-27>, a=<-7,4,-1>
p=<-2073,-1628,3261>, v=<123,120,-110>, a=<0,-3,-9>
p=<129,105,1073>, v=<-3,26,-119>, a=<-1,-5,5>
p=<-1623,-1077,-151>, v=<91,92,-43>, a=<7,0,9>
p=<-459,-1413,-2851>, v=<-19,55,182>, a=<9,10,9>
p=<-933,2439,1211>, v=<92,-123,-85>, a=<-2,-12,-2>
p=<-33,63,23>, v=<30,-3,-77>, a=<-4,0,12>
p=<-141,1275,11>, v=<13,-91,-11>, a=<0,-2,2>
p=<-579,-1785,-733>, v=<17,86,64>, a=<5,10,0>
p=<-405,189,-403>, v=<48,58,17>, a=<-2,-11,3>
p=<687,579,185>, v=<-30,-20,7>, a=<-4,-4,-3>
p=<-105,-489,2315>, v=<-16,4,-164>, a=<4,6,-4>
p=<5019,2191,-1557>, v=<-134,-9,25>, a=<-5,-6,3>
p=<2844,1491,1193>, v=<-8,-46,-85>, a=<-8,-1,3>
p=<619,3541,-2282>, v=<29,-76,28>, a=<-4,-5,5>
p=<435,137,1248>, v=<64,-37,-76>, a=<-9,3,1>
p=<-1626,-1609,-120>, v=<-21,3,38>, a=<12,9,-3>
p=<-429,56,726>, v=<55,-4,-9>, a=<-3,0,-3>
p=<-1572,-61,159>, v=<-62,-26,13>, a=<16,3,-2>
p=<-402,848,-498>, v=<-70,-48,97>, a=<10,0,-7>
p=<3278,-120,1704>, v=<26,66,24>, a=<-14,-5,-8>
p=<1185,-4812,1750>, v=<-111,90,58>, a=<5,10,-11>
p=<-4907,-1991,-6006>, v=<29,94,114>, a=<7,-2,4>
p=<-7085,814,4455>, v=<146,-8,-33>, a=<4,-1,-6>
p=<-815,-6446,132>, v=<-44,8,-55>, a=<4,11,3>
p=<-584,2530,-4521>, v=<17,-60,-50>, a=<0,-1,11>
p=<-1630,229,-1067>, v=<105,46,90>, a=<3,-9,-1>
p=<762,-876,-14>, v=<33,61,16>, a=<-13,1,-2>
p=<1269,879,948>, v=<15,10,-128>, a=<-16,-11,8>
p=<6413,-3286,-3895>, v=<-111,76,58>, a=<-4,1,3>
p=<6448,2524,-4105>, v=<68,-90,64>, a=<-14,1,3>
p=<-10562,-6331,-1095>, v=<32,181,-76>, a=<15,0,6>
p=<-6327,7599,3035>, v=<-107,17,-14>, a=<16,-13,-4>
p=<-1672,7809,-2355>, v=<84,-79,-22>, a=<-2,-8,5>
p=<6028,-2551,-6765>, v=<-28,-53,68>, a=<-8,7,7>
p=<-692,-3181,5520>, v=<20,73,77>, a=<0,1,-13>
p=<-1077,482,-1703>, v=<-17,56,80>, a=<10,-10,3>
p=<35,-1510,-4519>, v=<126,70,188>, a=<-15,3,11>
p=<1347,610,-287>, v=<-41,-105,17>, a=<-5,8,0>
p=<5512,5313,6606>, v=<-42,-96,-190>, a=<-5,-2,1>
p=<-1937,-3774,-1701>, v=<-11,17,43>, a=<3,4,0>
p=<-1079,1296,6801>, v=<27,-153,5>, a=<0,6,-9>
p=<1807,-2760,3564>, v=<-47,51,-32>, a=<0,1,-3>
p=<8398,1374,-2598>, v=<-16,-95,46>, a=<-10,3,1>
p=<-1469,3402,1458>, v=<-43,13,2>, a=<4,-5,-2>
p=<3367,8277,11520>, v=<-107,-52,-156>, a=<1,-8,-7>
p=<9607,8160,3018>, v=<-87,71,-78>, a=<-8,-14,0>
p=<884,505,-1467>, v=<-45,95,101>, a=<-2,-17,0>
p=<324,2157,-1264>, v=<-20,-53,34>, a=<0,-13,7>
p=<2361,-1938,-557>, v=<-113,112,21>, a=<-7,4,2>
p=<555,-657,1536>, v=<31,28,-91>, a=<-9,3,-3>
p=<646,988,178>, v=<-58,-67,6>, a=<2,0,-3>
p=<373,-2274,1914>, v=<29,136,-28>, a=<-7,4,-15>
p=<44,1793,262>, v=<45,-117,-15>, a=<-6,-1,-1>
p=<-1620,592,-839>, v=<31,-101,7>, a=<6,7,4>
p=<-1287,1510,-956>, v=<98,-19,137>, a=<-3,-7,-9>
p=<-45,2257,-1730>, v=<-28,-127,-48>, a=<3,0,15>
p=<734,490,2595>, v=<-18,-58,-115>, a=<-4,3,-9>
p=<-582,693,2532>, v=<16,-20,-43>, a=<4,-4,-18>
p=<-463,2387,-100>, v=<45,-126,55>, a=<-1,-6,-6>
p=<-1058,-700,894>, v=<95,12,-61>, a=<-2,5,0>
p=<-78,-2107,-1843>, v=<10,210,82>, a=<0,-8,7>
p=<-302,-1393,257>, v=<26,24,-53>, a=<0,10,5>
p=<776,-2030,54>, v=<-51,62,-1>, a=<0,11,0>
p=<-274,-329,1965>, v=<24,-7,-70>, a=<0,4,-9>
p=<426,189,264>, v=<-11,-89,-16>, a=<-2,10,0>
p=<2505,-742,880>, v=<-62,15,0>, a=<-15,5,-8>
p=<-2983,-3194,-209>, v=<8,-53,50>, a=<8,13,-3>
p=<2984,-4559,-1821>, v=<-100,13,4>, a=<-1,12,5>
p=<-2385,732,-105>, v=<147,-15,-116>, a=<-4,-1,9>
p=<1539,-193,-2637>, v=<-21,53,18>, a=<-6,-4,12>
p=<-969,-1656,-2067>, v=<21,30,-12>, a=<3,6,12>
p=<323,-2435,2170>, v=<-87,81,-105>, a=<7,5,-1>
p=<6722,-1881,6800>, v=<-51,23,-36>, a=<-9,2,-10>
p=<2960,990,2576>, v=<46,-30,-44>, a=<-8,0,-2>
p=<1640,-2310,-1879>, v=<-16,36,108>, a=<-2,2,-3>
p=<1904,-13365,7427>, v=<61,14,-72>, a=<-7,23,-9>
p=<254,-3762,2972>, v=<-93,-5,-158>, a=<5,7,4>
p=<1186,738,-74>, v=<-79,-95,71>, a=<-3,5,-10>
p=<-668,954,-1496>, v=<69,4,66>, a=<-2,-13,9>
p=<2080,366,1786>, v=<-69,-12,-149>, a=<-16,-3,0>
p=<-872,-630,-2924>, v=<21,71,211>, a=<8,-3,5>
p=<-1112,204,-86>, v=<119,34,20>, a=<-4,-8,-2>
p=<652,-510,-962>, v=<-80,113,41>, a=<4,-11,6>
p=<28,-846,-1340>, v=<63,128,92>, a=<-10,-9,3>
p=<802,-2301,-981>, v=<102,41,-112>, a=<-8,2,9>
p=<7622,2163,-4732>, v=<-6,25,57>, a=<-15,-6,6>
p=<-4190,2922,2674>, v=<132,-56,-84>, a=<15,-15,-10>
p=<210,634,-262>, v=<-24,-66,40>, a=<1,3,-3>
p=<1002,-502,186>, v=<-150,-12,12>, a=<10,5,-3>
p=<1582,-7,-39>, v=<-79,12,55>, a=<-6,-2,-7>
p=<-134,890,1287>, v=<46,-57,-33>, a=<-5,-2,-9>
p=<1361,-670,-754>, v=<-76,77,40>, a=<-4,-4,3>
p=<1556,1735,-949>, v=<-14,-73,34>, a=<-15,-9,6>
p=<-56,-891,2080>, v=<40,73,-87>, a=<-5,-1,-10>
p=<191,357,-533>, v=<21,26,9>, a=<-5,-8,5>
p=<1699,-1580,-117>, v=<-137,28,-58>, a=<1,13,10>
p=<-966,695,-1118>, v=<26,-63,54>, a=<7,1,5>
p=<-943,-389,98>, v=<2,141,-84>, a=<5,-12,8>
p=<1584,3867,364>, v=<-11,-93,-38>, a=<-7,-11,2>
p=<-521,-279,62>, v=<57,-41,-18>, a=<-1,11,2>
p=<-488,227,-213>, v=<78,-39,-59>, a=<-5,3,13>
p=<2697,157,659>, v=<-88,110,-41>, a=<-8,-13,0>
p=<-499,-812,-4203>, v=<55,23,155>, a=<-3,3,10>
p=<-482,752,-123>, v=<36,48,5>, a=<-1,-10,0>
p=<300,531,829>, v=<-19,43,-33>, a=<0,-8,-2>
p=<-1230,1704,-786>, v=<62,-134,-55>, a=<1,4,11>
p=<-1689,-251,251>, v=<71,-19,10>, a=<3,4,-3>
p=<1473,-1186,47>, v=<-70,27,-41>, a=<-2,5,4>
p=<-2148,-13,-718>, v=<17,-24,76>, a=<12,3,-4>
p=<-652,2469,-701>, v=<-44,-134,75>, a=<9,-1,-4>
p=<3519,1232,7089>, v=<-56,-102,-81>, a=<-4,4,-10>
p=<-651,4187,1299>, v=<-103,-61,-43>, a=<8,-5,0>
p=<-2491,-2393,2721>, v=<101,62,14>, a=<1,4,-12>
p=<6243,-1854,1137>, v=<-112,-43,-98>, a=<-15,11,4>
p=<-478,4691,-29>, v=<-25,-53,-45>, a=<4,-14,4>
p=<-1611,-534,-458>, v=<-31,35,-37>, a=<9,-1,5>
p=<-3129,-3493,-2207>, v=<61,66,-15>, a=<7,8,10>
p=<798,-2085,-326>, v=<-37,25,26>, a=<0,6,-1>
p=<-1622,3327,-425>, v=<27,-175,19>, a=<4,2,0>
p=<28,148,-2075>, v=<-2,96,94>, a=<0,-9,0>
p=<1544,6146,-1718>, v=<-39,143,44>, a=<0,-15,0>
p=<13010,1310,3469>, v=<-93,27,-129>, a=<-12,-3,2>
p=<-6295,-2824,-4409>, v=<-38,33,-167>, a=<10,2,14>
p=<-6334,6887,3391>, v=<23,4,-87>, a=<7,-9,0>
p=<-2707,-7153,-2693>, v=<110,84,-51>, a=<-2,5,6>
p=<3572,-4111,-1562>, v=<9,126,40>, a=<-5,-1,0>
p=<4462,-2550,-1370>, v=<-8,113,-23>, a=<-8,-2,4>
p=<-2754,-5894,-3082>, v=<3,3,80>, a=<5,11,1>
p=<-5170,-6022,-2090>, v=<95,73,16>, a=<4,7,3>
p=<-6370,-3782,-7594>, v=<83,36,56>, a=<7,5,11>
p=<-82,-598,1126>, v=<-64,-47,-35>, a=<4,4,0>
p=<5198,-502,-746>, v=<-97,16,-92>, a=<-4,0,7>
p=<14,-3830,-890>, v=<-1,21,61>, a=<0,6,-2>
p=<-3362,-1270,566>, v=<22,73,-34>, a=<5,-2,1>
p=<4998,5749,-1919>, v=<-132,6,12>, a=<0,-8,2>
p=<-9423,-8843,-12274>, v=<-45,39,109>, a=<15,10,11>
p=<-5623,-4093,-4465>, v=<-106,-47,40>, a=<13,8,4>
p=<-2868,-6905,703>, v=<75,66,-18>, a=<0,6,0>
p=<3839,-4207,-190>, v=<74,-83,-170>, a=<-9,10,9>
p=<-5768,7005,2433>, v=<-80,-103,-50>, a=<13,-5,-1>
p=<820,-4083,3477>, v=<-115,20,-42>, a=<5,5,-3>
p=<3459,-1784,-608>, v=<-8,78,-21>, a=<-12,0,4>
p=<2194,-3601,-2655>, v=<47,121,32>, a=<-12,3,7>
p=<216,3437,3624>, v=<157,-149,11>, a=<-14,0,-14>
p=<-14,-4498,1600>, v=<11,40,-9>, a=<-1,13,-5>
p=<-3947,4748,-4173>, v=<86,10,26>, a=<7,-18,13>
p=<4379,2540,4820>, v=<-48,34,-113>, a=<-12,-12,-8>
p=<-819,-1692,1738>, v=<10,2,57>, a=<2,6,-11>
p=<-1785,171,2497>, v=<-32,41,36>, a=<9,-4,-12>
p=<-5786,-3541,4522>, v=<147,-29,-75>, a=<0,6,-2>
p=<7279,8393,6784>, v=<32,-15,-53>, a=<-11,-10,-6>
p=<-7892,-2293,-4877>, v=<81,-1,26>, a=<6,3,5>
p=<-5786,203,-3629>, v=<47,-65,-66>, a=<5,3,8>
p=<-5942,-3307,-14744>, v=<71,-55,-21>, a=<4,7,20>
p=<9892,-2332,-8660>, v=<-55,160,43>, a=<-10,-5,9>
p=<-8087,-1045,-6359>, v=<46,87,-16>, a=<8,-3,9>
p=<10675,-4517,-152>, v=<1,-32,4>, a=<-17,9,0>
p=<-1960,-11377,6848>, v=<38,56,-124>, a=<1,15,-4>
p=<3675,2133,-8622>, v=<-195,-114,48>, a=<5,3,11>
p=<945,-1577,5798>, v=<-63,46,-4>, a=<2,0,-9>
p=<1624,-2462,-468>, v=<235,-355,-66>, a=<-10,30,7>
p=<811,628,3099>, v=<109,87,442>, a=<-8,-6,-33>
p=<-2613,-1644,-44>, v=<-377,-233,-11>, a=<22,19,2>
p=<2665,1031,1462>, v=<380,152,214>, a=<-27,-15,-13>
p=<-1167,2956,-837>, v=<-167,423,-119>, a=<11,-29,7>
p=<-500,-1627,2542>, v=<-71,-233,361>, a=<6,15,-24>
p=<2759,-228,330>, v=<393,-38,47>, a=<-32,1,-7>
p=<-1933,385,-1305>, v=<-277,56,-185>, a=<18,-2,10>
p=<-740,-3178,0>, v=<-107,-453,-2>, a=<14,28,3>
p=<837,2734,1599>, v=<119,385,227>, a=<-8,-24,-18>
p=<2029,-2022,2099>, v=<288,-287,299>, a=<-20,22,-19>
p=<1362,530,-2350>, v=<197,80,-335>, a=<-13,-5,21>
p=<35,1448,-2444>, v=<5,205,-349>, a=<5,-12,30>
p=<2512,-2034,-1044>, v=<355,-291,-148>, a=<-25,24,12>
p=<96,2593,1687>, v=<10,372,246>, a=<0,-24,-10>
p=<1697,-1020,-899>, v=<245,-145,-122>, a=<-21,10,13>
p=<322,-1743,1920>, v=<46,-248,279>, a=<-7,16,-17>
p=<462,44,3385>, v=<65,5,483>, a=<-1,-1,-33>
p=<2308,-1372,400>, v=<329,-191,60>, a=<-24,13,-2>
p=<993,-539,2957>, v=<140,-76,423>, a=<-8,7,-28>
p=<-894,-2502,-1769>, v=<-127,-359,-249>, a=<8,25,18>
p=<-1533,1125,-2885>, v=<-219,157,-418>, a=<19,-12,28>
p=<-1714,2565,204>, v=<-248,361,28>, a=<17,-24,-5>
p=<50,2129,1755>, v=<3,299,252>, a=<0,-18,-22>
p=<1377,-2722,-155>, v=<202,-392,-22>, a=<-9,29,-1>
p=<-2051,-135,2402>, v=<-295,-24,342>, a=<21,1,-28>
p=<1690,-2279,794>, v=<240,-322,113>, a=<-13,22,-7>
p=<1765,-1008,2234>, v=<251,-140,319>, a=<-20,9,-21>
p=<-944,201,2749>, v=<-135,25,393>, a=<8,0,-32>
p=<1277,1073,2254>, v=<181,153,325>, a=<-15,-15,-22>
p=<-1068,-1656,2795>, v=<-149,-236,395>, a=<5,19,-26>
p=<2481,-1470,-1338>, v=<355,-210,-193>, a=<-24,16,11>
p=<-448,2393,-837>, v=<-61,342,-119>, a=<3,-22,11>
p=<-2560,643,563>, v=<-366,89,77>, a=<26,-5,-8>
p=<3211,344,1361>, v=<460,46,194>, a=<-29,-6,-15>
p=<-510,-2939,993>, v=<-73,-418,141>, a=<4,32,-13>
p=<3090,1341,-594>, v=<441,191,-82>, a=<-24,-11,7>
p=<-2650,-1076,1037>, v=<-377,-153,150>, a=<26,6,-9>
p=<-2076,-1191,1581>, v=<-296,-162,228>, a=<25,11,-15>
p=<475,162,3389>, v=<66,25,487>, a=<-3,0,-35>
p=<378,1697,-2105>, v=<55,242,-299>, a=<-7,-18,19>
p=<245,608,2984>, v=<34,83,425>, a=<-3,-6,-29>
p=<1522,256,-1893>, v=<216,33,-273>, a=<-17,-1,19>
p=<-2367,902,1555>, v=<-333,128,223>, a=<20,-7,-15>
p=<389,-2674,-1034>, v=<55,-378,-141>, a=<-8,22,13>
p=<-2530,1332,773>, v=<-358,189,105>, a=<29,-18,-14>
p=<-960,-1666,-1362>, v=<-135,-241,-199>, a=<12,15,12>
p=<-1847,-2094,2325>, v=<-265,-303,333>, a=<21,20,-23>
p=<-119,-1836,2646>, v=<-14,-262,381>, a=<1,17,-26>
p=<2251,1198,990>, v=<323,171,145>, a=<-22,-11,-9>
p=<-464,-1556,-2369>, v=<-70,-222,-339>, a=<4,20,19>
p=<1703,745,2520>, v=<238,104,358>, a=<-16,-7,-23>
p=<-1691,1716,-2618>, v=<-246,244,-374>, a=<16,-18,30>
p=<1472,-2238,853>, v=<210,-315,118>, a=<-15,26,-8>
p=<-1947,2351,-1449>, v=<-286,338,-205>, a=<18,-27,12>
p=<-2815,1474,650>, v=<-404,209,86>, a=<29,-13,-3>
p=<1434,-1949,1020>, v=<208,-277,148>, a=<-20,18,-11>
p=<2722,1173,-256>, v=<390,166,-33>, a=<-25,-11,5>
p=<3026,-916,18>, v=<430,-130,-2>, a=<-28,8,3>
p=<1336,1272,-1884>, v=<188,185,-265>, a=<-15,-16,13>
p=<-562,-2147,-1631>, v=<-83,-310,-235>, a=<2,24,17>
p=<2473,-660,-62>, v=<350,-96,-12>, a=<-23,2,0>
p=<-1360,-1074,-2694>, v=<-194,-149,-380>, a=<13,11,31>
p=<-2791,-1608,-902>, v=<-395,-230,-128>, a=<27,14,9>
p=<811,282,2237>, v=<113,38,316>, a=<-8,-10,-20>
p=<-2080,-1126,-1316>, v=<-293,-163,-191>, a=<20,6,7>
p=<1893,-617,2345>, v=<267,-88,338>, a=<-19,6,-20>
p=<-2131,-721,-1427>, v=<-306,-101,-206>, a=<18,7,11>
p=<-2635,49,615>, v=<-377,7,86>, a=<25,1,-11>
p=<1224,3029,-1172>, v=<172,429,-161>, a=<-16,-31,6>
p=<67,-301,3085>, v=<11,-43,440>, a=<0,7,-30>
p=<1224,1528,-2785>, v=<177,216,-397>, a=<-12,-11,25>
p=<-863,2724,381>, v=<-126,391,52>, a=<5,-24,-2>
p=<-1288,-1610,2625>, v=<-184,-226,375>, a=<12,19,-25>
p=<-269,2017,-2101>, v=<-39,283,-300>, a=<2,-24,24>
p=<1950,1442,-103>, v=<278,203,-13>, a=<-20,-12,2>
p=<352,247,-2877>, v=<55,32,-410>, a=<-4,-6,26>
p=<1809,2045,-1944>, v=<259,292,-276>, a=<-14,-20,20>
p=<-21,-2189,988>, v=<-1,-313,141>, a=<-3,21,-9>
p=<-1001,-2217,1954>, v=<-140,-315,281>, a=<3,22,-21>
p=<2373,951,1447>, v=<340,139,206>, a=<-24,-11,-12>
p=<2379,1655,509>, v=<336,233,77>, a=<-23,-19,-5>
p=<884,-1431,-2145>, v=<125,-206,-306>, a=<-10,14,22>
p=<-372,-2465,658>, v=<-56,-346,93>, a=<0,29,-10>
p=<1671,2547,-1793>, v=<233,362,-252>, a=<-19,-28,11>
p=<326,736,-2726>, v=<46,105,-385>, a=<-6,-7,23>
p=<2241,-739,-1255>, v=<318,-105,-176>, a=<-19,6,12>
p=<1853,-1037,-1564>, v=<263,-148,-219>, a=<-15,9,20>
p=<-1518,-1071,2789>, v=<-218,-157,399>, a=<19,8,-30>
p=<1045,1858,1247>, v=<152,265,178>, a=<-11,-21,-13>
p=<281,-1098,3271>, v=<40,-161,468>, a=<-6,8,-31>
p=<1122,-2393,-122>, v=<158,-337,-17>, a=<-8,22,2>
p=<-727,1445,2272>, v=<-100,209,327>, a=<7,-14,-20>
p=<1448,2165,-1632>, v=<206,309,-239>, a=<-14,-23,16>
p=<2453,-1690,-1411>, v=<351,-245,-201>, a=<-27,16,15>
p=<1030,515,3122>, v=<147,72,446>, a=<-8,-6,-32>
p=<-589,-2972,1141>, v=<-79,-431,167>, a=<9,26,-9>
p=<1558,-2331,1268>, v=<224,-333,181>, a=<-14,15,-14>
p=<-1156,-1848,-1958>, v=<-165,-268,-279>, a=<9,18,17>
p=<-328,2409,-1728>, v=<-47,346,-252>, a=<3,-20,11>
p=<-2236,745,2041>, v=<-319,101,291>, a=<22,-8,-18>
p=<-2618,-1525,492>, v=<-380,-216,72>, a=<26,15,-11>
p=<-2468,166,-2092>, v=<-352,24,-296>, a=<28,-2,23>
p=<1132,2952,1200>, v=<164,419,170>, a=<-11,-29,-10>
p=<-929,-715,-2801>, v=<-132,-104,-401>, a=<6,2,23>
p=<150,-2148,-1598>, v=<12,-300,-225>, a=<-4,22,5>
p=<-3006,323,-1215>, v=<-429,51,-173>, a=<26,-1,8>
p=<-1606,-1914,962>, v=<-233,-271,135>, a=<15,18,-10>
p=<2816,-397,-1439>, v=<403,-54,-205>, a=<-29,1,14>
p=<-2638,684,-1710>, v=<-376,98,-244>, a=<26,-3,19>
p=<896,-1998,1773>, v=<131,-285,255>, a=<-14,19,-20>
p=<617,-1910,2135>, v=<88,-272,304>, a=<-8,21,-19>
p=<-1155,30,3112>, v=<-165,1,441>, a=<10,-3,-31>
p=<-685,-434,2700>, v=<-95,-63,385>, a=<11,4,-27>
p=<-1309,-2857,-1754>, v=<-191,-406,-250>, a=<17,29,15>
p=<1804,-461,-2272>, v=<257,-64,-323>, a=<-18,1,18>
p=<-2916,837,-229>, v=<-418,116,-31>, a=<27,-13,-2>
p=<-2396,-750,-958>, v=<-340,-112,-139>, a=<19,7,12>
p=<-1035,-2366,-1895>, v=<-147,-341,-274>, a=<12,23,16>
p=<-3113,-1407,191>, v=<-445,-198,26>, a=<30,11,7>
p=<-1076,2730,802>, v=<-153,390,114>, a=<10,-26,-4>
p=<2033,1679,1326>, v=<292,246,187>, a=<-18,-19,-5>
p=<2560,-2091,-1321>, v=<364,-295,-188>, a=<-28,21,12>
p=<684,-59,2815>, v=<95,-8,401>, a=<-7,1,-31>
p=<-1564,2964,-405>, v=<-223,425,-57>, a=<15,-26,-1>
p=<-2485,-1814,1918>, v=<-353,-256,274>, a=<25,23,-16>
p=<655,-984,2797>, v=<97,-140,395>, a=<-4,11,-24>
p=<1926,-2137,-790>, v=<276,-302,-110>, a=<-13,18,7>
p=<-540,46,2356>, v=<-79,6,338>, a=<3,1,-24>
p=<-2129,617,-2410>, v=<-306,85,-346>, a=<21,-8,26>
p=<2362,846,-1443>, v=<333,118,-204>, a=<-27,-9,11>
p=<557,-708,-2693>, v=<71,-100,-386>, a=<2,11,26>
p=<-3162,548,714>, v=<-451,73,102>, a=<38,-5,-6>
p=<2359,862,1641>, v=<339,116,235>, a=<-22,-5,-19>
p=<-2245,-1426,1021>, v=<-314,-201,142>, a=<26,9,-9>
p=<-1787,1609,-651>, v=<-253,228,-86>, a=<14,-12,7>
p=<-2046,-2176,675>, v=<-295,-314,98>, a=<20,21,-2>
p=<92,1224,2925>, v=<15,174,419>, a=<3,-13,-35>
p=<-2676,1132,792>, v=<-383,167,110>, a=<26,-11,-6>
p=<-2747,44,530>, v=<-392,6,75>, a=<31,-1,-10>
p=<1635,2416,-694>, v=<231,341,-96>, a=<-19,-30,9>
p=<2566,1397,141>, v=<365,201,25>, a=<-25,-13,-2>
p=<-2687,1625,156>, v=<-381,228,24>, a=<26,-19,1>
p=<1187,2782,593>, v=<166,400,84>, a=<-14,-27,-8>
p=<12,-1995,2377>, v=<-2,-282,339>, a=<0,22,-17>
p=<-3012,-360,-1500>, v=<-432,-48,-218>, a=<29,2,19>
p=<-2365,1525,199>, v=<-332,215,31>, a=<24,-17,-1>
p=<-254,1669,2513>, v=<-31,237,359>, a=<4,-16,-23>
p=<-1071,2203,1517>, v=<-154,320,216>, a=<12,-23,-17>
p=<2195,231,1764>, v=<310,33,253>, a=<-22,-1,-19>
p=<-765,-2729,630>, v=<-112,-390,93>, a=<5,24,-8>
p=<2437,-1776,-1403>, v=<349,-251,-197>, a=<-23,18,14>
p=<793,1403,2970>, v=<111,201,419>, a=<-6,-14,-29>
p=<1594,-2749,-1482>, v=<227,-396,-207>, a=<-16,27,11>
p=<1418,1864,1818>, v=<200,265,261>, a=<-16,-19,-17>
p=<-942,-1572,2134>, v=<-137,-226,308>, a=<7,13,-20>
p=<-2352,1032,1986>, v=<-334,151,285>, a=<27,-7,-26>
p=<-2238,-1898,1513>, v=<-319,-271,222>, a=<22,19,-14>
p=<144,-741,2701>, v=<23,-101,385>, a=<3,8,-27>
p=<2485,-1973,846>, v=<350,-277,114>, a=<-21,18,-1>
p=<-103,100,-2421>, v=<-14,12,-349>, a=<1,-5,30>
p=<-51,-2900,-418>, v=<-7,-416,-59>, a=<-4,33,2>
p=<-2342,-1431,-1158>, v=<-332,-199,-162>, a=<25,13,11>
p=<3047,-188,-482>, v=<441,-26,-68>, a=<-31,-3,2>
p=<-302,3019,-1359>, v=<-44,433,-192>, a=<5,-29,18>
p=<-2582,-1307,936>, v=<-366,-182,132>, a=<20,15,-3>
p=<-1140,-2503,-1090>, v=<-164,-357,-154>, a=<11,25,8>
p=<-1908,-1869,1747>, v=<-266,-266,249>, a=<18,18,-19>
p=<-569,183,2831>, v=<-78,30,403>, a=<5,-1,-27>
p=<-1931,-2513,927>, v=<-275,-358,132>, a=<19,23,-12>
p=<-502,2000,2056>, v=<-74,286,294>, a=<5,-20,-18>
p=<-2656,269,1039>, v=<-375,45,146>, a=<27,0,-8>
p=<-1126,1513,-2691>, v=<-159,215,-381>, a=<10,-20,26>
p=<-823,1328,-2091>, v=<-119,189,-296>, a=<8,-16,24>
p=<-2693,-978,580>, v=<-389,-142,84>, a=<23,12,2>
p=<-878,-277,-3355>, v=<-123,-40,-478>, a=<9,2,33>
p=<240,-2544,282>, v=<33,-367,36>, a=<-5,23,-2>
p=<-59,-572,3078>, v=<-5,-78,444>, a=<-1,3,-30>
p=<2532,832,2194>, v=<361,118,312>, a=<-28,-8,-21>
p=<748,2769,-376>, v=<100,390,-56>, a=<-6,-27,3>
p=<1468,175,2378>, v=<209,25,340>, a=<-16,2,-28>
p=<2324,1671,-2021>, v=<336,243,-286>, a=<-23,-17,20>
p=<-2635,-888,-467>, v=<-376,-124,-72>, a=<26,9,4>
p=<-118,2602,-2121>, v=<-15,374,-304>, a=<5,-23,15>
p=<1240,1379,2572>, v=<179,201,362>, a=<-13,-11,-26>
p=<-1191,406,-2299>, v=<-173,58,-333>, a=<11,-11,22>
p=<-2652,1550,299>, v=<-380,221,42>, a=<27,-15,0>
p=<-2310,-2072,226>, v=<-328,-298,30>, a=<24,20,-2>
p=<1112,2562,1028>, v=<156,361,138>, a=<-11,-26,-14>
p=<-1282,205,3040>, v=<-187,35,438>, a=<10,-2,-30>
p=<-2655,-409,816>, v=<-381,-58,116>, a=<29,4,-8>
p=<-595,-2598,562>, v=<-87,-371,76>, a=<2,30,-1>
p=<-1080,-1161,-2609>, v=<-155,-165,-374>, a=<8,14,26>
p=<129,-2416,1481>, v=<23,-342,211>, a=<-1,26,-13>
p=<-1290,531,-1895>, v=<-182,77,-267>, a=<9,-4,18>
p=<542,-3071,-1074>, v=<82,-443,-155>, a=<-6,30,7>
p=<-1564,1953,-842>, v=<-223,280,-125>, a=<12,-14,10>
p=<-2106,2188,-1213>, v=<-299,312,-175>, a=<19,-24,11>
p=<2634,198,708>, v=<374,26,101>, a=<-26,-2,-4>
p=<533,-2693,-1322>, v=<76,-381,-186>, a=<-7,27,10>
p=<-1197,-2782,19>, v=<-171,-397,3>, a=<9,24,0>
p=<3042,1356,22>, v=<435,193,3>, a=<-33,-18,2>
p=<-542,1215,2351>, v=<-79,169,335>, a=<6,-12,-25>
p=<-2630,-699,-1044>, v=<-376,-101,-150>, a=<22,8,8>
p=<-3027,-359,-1400>, v=<-434,-47,-198>, a=<30,9,11>
p=<1135,-753,2936>, v=<161,-107,418>, a=<-18,10,-26>
p=<-42,2063,-1784>, v=<-1,291,-254>, a=<-4,-24,16>
p=<-1999,1276,-2642>, v=<-283,184,-376>, a=<21,-9,25>
p=<120,1838,-2283>, v=<12,259,-326>, a=<-4,-16,22>
p=<-1024,-1742,2584>, v=<-142,-251,369>, a=<10,12,-28>
p=<721,-2855,641>, v=<101,-409,93>, a=<-8,32,-8>
p=<1490,2720,-427>, v=<214,389,-62>, a=<-15,-31,5>
p=<1421,-2724,-181>, v=<204,-389,-28>, a=<-11,27,2>
p=<-2360,582,-1120>, v=<-338,83,-165>, a=<22,-10,13>
p=<269,1999,2898>, v=<38,283,412>, a=<1,-18,-24>
p=<1655,2601,-1260>, v=<235,376,-180>, a=<-19,-25,18>
p=<1942,480,-1689>, v=<277,66,-242>, a=<-17,-3,16>
p=<2661,-338,-795>, v=<379,-48,-117>, a=<-24,0,13>
p=<-2134,1862,151>, v=<-307,261,26>, a=<24,-18,-1>
p=<395,2238,1976>, v=<54,319,279>, a=<-5,-19,-19>
p=<-1141,2540,821>, v=<-162,361,117>, a=<10,-27,-7>
p=<308,1830,2034>, v=<45,268,288>, a=<-6,-14,-22>
p=<1793,-260,2231>, v=<260,-39,320>, a=<-18,1,-21>
p=<1849,-611,-1885>, v=<262,-87,-265>, a=<-17,4,18>
p=<-1380,1752,1205>, v=<-196,253,172>, a=<4,-19,-12>
p=<2708,897,-747>, v=<386,121,-102>, a=<-30,-6,8>
p=<2889,-1381,-891>, v=<411,-191,-129>, a=<-26,12,8>
p=<-324,-1067,-2585>, v=<-45,-150,-371>, a=<11,16,25>
p=<1961,564,2554>, v=<280,79,365>, a=<-20,-2,-28>
p=<698,-2610,-474>, v=<99,-373,-74>, a=<-3,26,4>
p=<-1090,-2386,-377>, v=<-157,-335,-54>, a=<14,23,7>
p=<806,1740,-2303>, v=<116,246,-328>, a=<-6,-17,20>
p=<-505,-2361,-842>, v=<-76,-341,-122>, a=<4,28,7>
p=<2614,-396,-1722>, v=<371,-56,-248>, a=<-26,3,17>
p=<1756,-1364,1108>, v=<250,-192,160>, a=<-13,10,-11>
p=<335,-2431,1555>, v=<48,-346,217>, a=<0,26,-15>
p=<-726,1196,2161>, v=<-100,163,308>, a=<9,-7,-21>
p=<-601,-1618,-2643>, v=<-85,-233,-381>, a=<3,18,26>
p=<-393,2630,547>, v=<-58,375,79>, a=<-1,-24,-2>
p=<-1361,-2031,1574>, v=<-198,-293,224>, a=<13,21,-10>
p=<-2160,1193,-1156>, v=<-308,172,-166>, a=<23,-11,11>
p=<-445,2972,-226>, v=<-65,421,-36>, a=<11,-29,0>
p=<-1198,-46,-2987>, v=<-168,-8,-427>, a=<7,0,29>
p=<-2653,-381,1831>, v=<-376,-57,266>, a=<24,3,-18>
p=<1327,1037,1965>, v=<189,148,285>, a=<-13,-10,-19>
p=<2148,-1555,1233>, v=<306,-222,176>, a=<-19,12,-13>
p=<-1982,-576,2273>, v=<-279,-82,322>, a=<17,6,-22>
p=<2224,-1197,2241>, v=<313,-170,320>, a=<-22,13,-26>
p=<2010,-929,2125>, v=<287,-129,303>, a=<-19,11,-22>
p=<-2360,2080,-414>, v=<-328,299,-56>, a=<30,-19,7>
p=<-595,-1253,2351>, v=<-85,-184,333>, a=<6,11,-16>
p=<-2267,-2244,1322>, v=<-324,-320,187>, a=<20,23,-8>
p=<-2046,1657,1637>, v=<-297,235,235>, a=<20,-8,-14>
p=<-756,-1657,-2373>, v=<-108,-232,-340>, a=<4,15,26>
p=<2756,412,1668>, v=<392,59,234>, a=<-30,-5,-21>
p=<2758,-798,762>, v=<390,-114,110>, a=<-29,8,-11>
p=<-1593,617,2060>, v=<-227,91,293>, a=<13,-7,-22>
p=<491,-2699,835>, v=<71,-386,119>, a=<-5,24,-11>
p=<890,2658,-262>, v=<126,383,-36>, a=<-8,-24,2>
p=<1795,-2852,130>, v=<257,-408,12>, a=<-21,27,6>
p=<-2725,-1481,765>, v=<-391,-208,114>, a=<27,19,-7>
p=<-2723,2258,1012>, v=<-389,322,142>, a=<25,-22,-6>
p=<2522,1827,447>, v=<360,261,58>, a=<-25,-18,-4>
p=<-1683,2548,682>, v=<-240,364,94>, a=<18,-24,-2>
p=<384,569,-3079>, v=<53,84,-439>, a=<0,-3,28>
p=<-1861,1920,1736>, v=<-262,273,248>, a=<15,-22,-17>
p=<-169,-1604,2028>, v=<-27,-224,285>, a=<-2,16,-20>
p=<-662,-2466,-822>, v=<-94,-349,-117>, a=<6,24,2>
p=<1706,-389,-2530>, v=<241,-58,-361>, a=<-14,3,22>
p=<2714,156,1611>, v=<385,30,228>, a=<-27,1,-18>
p=<1490,2184,280>, v=<212,314,45>, a=<-12,-21,-1>
p=<-1244,1802,1193>, v=<-177,259,172>, a=<14,-17,-11>
p=<1919,1888,-1698>, v=<274,273,-242>, a=<-12,-16,18>
p=<241,3194,375>, v=<33,451,52>, a=<-4,-33,-3>
p=<-1884,-964,-2394>, v=<-270,-134,-336>, a=<17,10,22>
p=<2568,-1502,-54>, v=<368,-214,-9>, a=<-28,15,-2>
p=<-886,-718,-2639>, v=<-126,-101,-378>, a=<1,5,22>
p=<-1945,-900,-2633>, v=<-280,-130,-373>, a=<13,9,26>
p=<-239,-556,2764>, v=<-31,-78,396>, a=<-2,-2,-28>
p=<-2138,-218,2748>, v=<-298,-25,392>, a=<23,1,-29>
p=<-1637,-2820,378>, v=<-233,-398,53>, a=<20,33,2>
p=<193,-575,2576>, v=<25,-80,370>, a=<1,8,-26>
p=<605,2629,1304>, v=<89,378,190>, a=<-6,-29,-16>
p=<836,852,2538>, v=<119,117,360>, a=<-8,-9,-22>
p=<-1333,-2240,-1051>, v=<-192,-324,-150>, a=<11,22,10>
p=<18,-2875,-335>, v=<4,-408,-50>, a=<0,33,-1>
p=<-918,-1709,-2115>, v=<-137,-244,-303>, a=<13,12,21>
p=<85,-2882,613>, v=<8,-410,82>, a=<0,27,-10>
p=<-639,-2216,-1903>, v=<-94,-316,-274>, a=<6,25,18>
p=<2782,142,-550>, v=<397,23,-79>, a=<-25,3,5>
p=<1602,1495,-1811>, v=<227,212,-259>, a=<-20,-17,18>
p=<-620,1564,-2076>, v=<-90,223,-297>, a=<11,-17,19>
p=<-2278,-1759,2266>, v=<-325,-253,326>, a=<21,17,-23>
p=<-586,2535,-445>, v=<-82,355,-70>, a=<6,-23,0>
p=<-104,-235,2787>, v=<-15,-35,400>, a=<3,2,-26>
p=<2921,-472,1807>, v=<420,-63,263>, a=<-26,6,-19>
p=<-1991,-813,-2235>, v=<-287,-111,-317>, a=<20,8,22>
p=<1441,2300,19>, v=<203,326,-2>, a=<-20,-17,4>
p=<-1473,1810,-2502>, v=<-210,258,-358>, a=<14,-18,24>
p=<908,-1484,2373>, v=<129,-208,339>, a=<-9,17,-22>
p=<2873,672,-91>, v=<415,101,-9>, a=<-29,-6,0>
p=<1096,-140,-2284>, v=<161,-20,-324>, a=<-15,-6,20>
p=<-2830,528,-828>, v=<-404,78,-120>, a=<32,-5,9>
p=<114,-1499,-1649>, v=<15,-212,-234>, a=<4,14,11>
p=<3081,468,338>, v=<440,66,48>, a=<-31,-3,-1>
p=<-2575,1783,-922>, v=<-366,254,-133>, a=<25,-16,7>
p=<2457,-1530,-1409>, v=<351,-220,-202>, a=<-25,15,19>
p=<930,-955,2829>, v=<131,-142,405>, a=<-6,9,-28>
p=<1024,268,2510>, v=<146,38,357>, a

repository: kindermoumoute/adventofcode

repo_name: kindermoumoute/adventofcode

extension: go


text:
=<-11,3,-25>
p=<-2613,783,-255>, v=<-373,112,-37>, a=<24,-3,3>
p=<2409,579,133>, v=<345,79,24>, a=<-26,-7,-2>
p=<-965,-2692,2075>, v=<-133,-383,293>, a=<9,31,-18>
p=<-3,-2099,2393>, v=<-4,-299,343>, a=<-1,19,-23>
p=<1736,671,2334>, v=<248,95,337>, a=<-24,-4,-28>
p=<1147,-2922,-452>, v=<163,-415,-62>, a=<-6,29,6>
p=<1640,-2525,-622>, v=<242,-361,-88>, a=<-14,23,6>
p=<540,2258,1727>, v=<74,320,251>, a=<-1,-19,-16>
p=<1303,-449,2867>, v=<186,-62,413>, a=<-16,2,-21>
p=<-2721,1071,1253>, v=<-389,149,178>, a=<27,-13,-18>
p=<416,1877,1908>, v=<58,268,278>, a=<-1,-19,-19>
p=<-847,2302,1418>, v=<-120,327,202>, a=<8,-24,-8>
p=<-749,3158,-182>, v=<-104,452,-27>, a=<3,-33,-7>
p=<-833,151,2877>, v=<-113,24,410>, a=<8,-2,-28>
p=<2416,-32,-522>, v=<345,-4,-71>, a=<-26,1,5>
p=<1538,-2361,1077>, v=<221,-336,154>, a=<-14,22,-9>
p=<183,-2061,2457>, v=<23,-294,349>, a=<-1,23,-27>
p=<294,-739,-2874>, v=<44,-109,-411>, a=<-1,10,29>
p=<219,888,-3099>, v=<31,129,-439>, a=<-5,-4,31>
p=<-2714,1712,-703>, v=<-387,241,-98>, a=<23,-14,6>
p=<580,-2685,329>, v=<83,-385,50>, a=<-6,27,-9>
p=<1602,-2225,594>, v=<225,-312,82>, a=<-15,22,-6>
p=<-2216,2293,-6>, v=<-316,325,5>, a=<25,-26,2>
p=<566,-333,-3381>, v=<80,-44,-485>, a=<-14,3,33>
p=<778,2937,764>, v=<113,413,113>, a=<-8,-25,-1>
p=<-1579,2289,684>, v=<-227,330,97>, a=<12,-21,-6>
p=<-311,-1348,2861>, v=<-42,-188,406>, a=<1,11,-24>
p=<1454,2941,792>, v=<206,416,110>, a=<-18,-27,-12>
p=<-3130,484,262>, v=<-447,66,37>, a=<27,-1,-1>
p=<-134,1496,-3097>, v=<-24,216,-442>, a=<3,-15,26>
p=<-2050,-2080,-233>, v=<-291,-294,-33>, a=<22,21,0>
p=<2036,-2084,1404>, v=<294,-295,194>, a=<-22,19,-15>
p=<2424,1709,603>, v=<346,244,88>, a=<-24,-17,-4>
p=<-317,2401,-1590>, v=<-44,341,-226>, a=<7,-22,16>
p=<-1625,2183,-583>, v=<-228,308,-78>, a=<13,-20,4>
p=<-1738,812,2472>, v=<-246,119,353>, a=<17,-13,-24>
p=<-2533,1137,-2055>, v=<-360,166,-293>, a=<26,-6,20>
p=<2673,824,-1584>, v=<383,117,-228>, a=<-28,-9,14>
p=<-1366,-850,-2087>, v=<-193,-117,-301>, a=<10,8,20>
p=<-825,2218,-1454>, v=<-119,318,-202>, a=<3,-22,19>
p=<1155,2901,-761>, v=<162,415,-106>, a=<-11,-28,14>
p=<2150,14,-1951>, v=<307,2,-276>, a=<-23,4,21>
p=<-2778,391,421>, v=<-394,58,57>, a=<27,1,-3>
p=<-1369,1076,-2495>, v=<-192,155,-362>, a=<15,-5,20>
p=<-3039,703,-75>, v=<-439,100,-10>, a=<32,-12,1>
p=<-1660,1972,-1387>, v=<-235,281,-199>, a=<18,-16,11>
p=<-2951,-94,-1146>, v=<-419,-12,-164>, a=<34,-2,8>
p=<1062,176,2808>, v=<151,26,403>, a=<-6,3,-32>
p=<1345,1285,-2594>, v=<190,183,-370>, a=<-10,-10,28>
p=<1831,261,1743>, v=<265,34,253>, a=<-19,0,-16>
p=<2280,1868,-1042>, v=<329,270,-150>, a=<-26,-19,10>
p=<-1024,2588,1616>, v=<-146,372,232>, a=<12,-28,-19>
p=<2381,1809,-161>, v=<342,258,-23>, a=<-19,-24,3>
p=<1334,-2983,743>, v=<184,-426,105>, a=<-18,31,-12>
p=<-396,2571,-747>, v=<-51,368,-106>, a=<2,-26,11>
p=<963,2288,930>, v=<142,325,132>, a=<-9,-29,-8>
p=<-928,-2396,1354>, v=<-135,-341,195>, a=<9,30,-11>
p=<146,796,-2515>, v=<23,111,-361>, a=<4,0,24>
p=<958,630,2955>, v=<144,93,422>, a=<-6,-3,-32>
p=<601,-1734,-2450>, v=<87,-247,-350>, a=<-6,18,25>
p=<2599,-616,1270>, v=<378,-91,185>, a=<-26,6,-9>
p=<199,-2036,-2354>, v=<29,-290,-343>, a=<3,20,23>
p=<247,772,2206>, v=<37,111,315>, a=<-1,-8,-18>
p=<-2228,1569,969>, v=<-322,227,140>, a=<22,-15,-9>
p=<-1749,-939,-1821>, v=<-249,-134,-262>, a=<18,8,18>
p=<-1860,-3024,-265>, v=<-266,-427,-39>, a=<20,28,1>
p=<1522,1810,1745>, v=<216,264,250>, a=<-11,-19,-17>
p=<1842,511,-2521>, v=<262,73,-353>, a=<-23,0,23>
p=<-1619,-2370,-589>, v=<-235,-344,-83>, a=<16,23,6>
p=<-1794,1706,-796>, v=<-258,237,-116>, a=<19,-17,8>
p=<88,22,-2919>, v=<6,5,-416>, a=<0,1,31>
p=<2649,611,1019>, v=<376,88,142>, a=<-22,-4,-11>
p=<1339,-2121,2155>, v=<186,-307,305>, a=<-13,21,-17>
p=<2271,1004,1369>, v=<328,141,197>, a=<-17,-14,-18>
p=<-1214,-1374,2161>, v=<-168,-190,308>, a=<10,12,-22>
p=<3088,337,-1749>, v=<443,45,-252>, a=<-26,-3,19>
p=<45,-1088,2359>, v=<5,-155,335>, a=<2,6,-23>
p=<1236,-967,-2901>, v=<171,-138,-413>, a=<-13,3,31>
p=<-1861,2148,557>, v=<-268,310,79>, a=<18,-20,-2>
p=<2559,1712,1910>, v=<362,245,270>, a=<-27,-16,-12>
p=<360,-2737,-63>, v=<48,-389,-7>, a=<-8,26,5>
p=<-2342,344,-639>, v=<-331,48,-91>, a=<22,-4,6>
p=<-1927,1718,-363>, v=<-280,245,-52>, a=<13,-20,-4>
p=<-709,135,2956>, v=<-102,18,425>, a=<14,-2,-25>
p=<-1172,-247,-2787>, v=<-167,-31,-398>, a=<9,2,28>
p=<-1765,-2164,249>, v=<-249,-304,35>, a=<21,21,-2>
p=<-1650,-274,-2505>, v=<-238,-36,-351>, a=<15,2,19>
p=<-2000,1250,1355>, v=<-287,184,194>, a=<20,-11,-14>
p=<2935,-445,167>, v=<421,-61,20>, a=<-29,4,-1>
p=<1991,-2237,-145>, v=<284,-313,-17>, a=<-19,19,2>
p=<-1051,-2065,1870>, v=<-154,-294,267>, a=<5,17,-15>
p=<-1045,2303,1779>, v=<-146,331,254>, a=<5,-25,-16>
p=<-1391,1424,-2606>, v=<-196,202,-375>, a=<9,-14,26>
p=<-449,-2757,482>, v=<-66,-394,63>, a=<4,25,-8>
p=<0,-1817,-2332>, v=<0,-261,-340>, a=<4,21,26>
p=<1435,599,2138>, v=<206,90,305>, a=<-14,-11,-17>
p=<-333,-2904,512>, v=<-46,-413,69>, a=<3,27,0>
p=<-1300,-2501,974>, v=<-185,-356,141>, a=<15,20,-7>
p=<-1152,1985,-1339>, v=<-167,285,-189>, a=<10,-15,10>
p=<-2231,-1654,-73>, v=<-315,-237,-10>, a=<24,16,4>
p=<1000,1712,2282>, v=<143,249,330>, a=<-15,-17,-22>
p=<-3328,362,-738>, v=<-477,56,-107>, a=<30,-3,7>
p=<2125,1946,1266>, v=<308,281,172>, a=<-18,-22,-10>
p=<584,1286,2843>, v=<81,178,401>, a=<-4,-14,-29>
p=<3430,-271,802>, v=<494,-38,118>, a=<-36,-1,-7>
p=<-2158,-405,2248>, v=<-308,-55,326>, a=<22,4,-22>
p=<-1612,-2558,132>, v=<-228,-365,18>, a=<21,29,0>
p=<-489,2723,-1390>, v=<-64,390,-198>, a=<1,-24,11>
p=<3076,1529,326>, v=<441,216,45>, a=<-24,-17,-1>
p=<1698,1152,2581>, v=<243,167,370>, a=<-20,-9,-25>
p=<-2453,80,-872>, v=<-348,14,-123>, a=<24,2,8>
p=<-2106,-1936,523>, v=<-303,-276,77>, a=<21,17,-5>
p=<-2612,-1675,657>, v=<-373,-244,93>, a=<22,18,-4>
p=<-1482,-1967,-1702>, v=<-207,-283,-245>, a=<14,16,17>
p=<-2518,1724,-814>, v=<-358,248,-115>, a=<24,-14,8>
p=<-2594,1458,-618>, v=<-374,214,-89>, a=<28,-15,7>
p=<-2498,1382,-322>, v=<-355,203,-48>, a=<27,-12,2>
p=<1526,-471,-2412>, v=<219,-70,-343>, a=<-11,4,25>
p=<-818,-1187,-2436>, v=<-111,-169,-348>, a=<10,6,25>
p=<1285,1242,-1814>, v=<179,177,-258>, a=<-12,-15,20>
p=<-2778,-1519,388>, v=<-395,-221,54>, a=<26,15,-4>
p=<-1778,-2274,-445>, v=<-256,-320,-63>, a=<17,18,2>
p=<1465,2951,-1028>, v=<214,421,-146>, a=<-10,-29,12>
p=<-2586,-2176,882>, v=<-367,-310,125>, a=<27,15,-11>
p=<-1800,-2702,-158>, v=<-255,-382,-20>, a=<20,24,1>
p=<-1488,-2830,-496>, v=<-212,-404,-70>, a=<14,27,4>
p=<2028,2471,-471>, v=<291,358,-66>, a=<-15,-21,0>
p=<1151,-79,2727>, v=<164,-8,390>, a=<-11,1,-26>
p=<-2620,-2745,-61>, v=<-373,-394,-8>, a=<31,27,0>
p=<231,-1223,2860>, v=<33,-170,409>, a=<-1,10,-26>
p=<2302,-656,-944>, v=<325,-88,-133>, a=<-21,6,15>
p=<-1157,-1411,2594>, v=<-170,-201,370>, a=<14,15,-31>
p=<-2064,-2094,1251>, v=<-294,-299,178>, a=<20,18,-11>
p=<2100,-2124,-488>, v=<295,-307,-70>, a=<-25,20,1>
p=<-1825,-2378,459>, v=<-263,-339,72>, a=<19,23,-6>
p=<-1205,1830,984>, v=<-173,261,132>, a=<12,-20,-9>
p=<3020,-168,-204>, v=<431,-24,-25>, a=<-32,2,5>
p=<1518,-1957,-2681>, v=<215,-278,-381>, a=<-19,19,27>
p=<-1734,-1066,2148>, v=<-249,-149,306>, a=<20,10,-23>
p=<-153,-2000,1830>, v=<-21,-283,264>, a=<-5,15,-14>
p=<-2504,-1384,1088>, v=<-356,-198,149>, a=<25,11,-14>
p=<1669,881,2447>, v=<236,118,352>, a=<-15,-6,-21>
p=<1535,-853,2618>, v=<221,-121,379>, a=<-17,11,-29>
p=<-2917,54,1511>, v=<-414,6,215>, a=<29,0,-12>
p=<-1106,-180,-2705>, v=<-156,-25,-386>, a=<7,0,21>
p=<-59,336,-2881>, v=<-9,51,-407>, a=<0,-2,29>
p=<-2210,1011,-845>, v=<-322,146,-120>, a=<19,-7,0>
p=<2826,-524,2237>, v=<403,-72,319>, a=<-22,5,-22>
p=<-1208,-2358,645>, v=<-171,-343,89>, a=<5,29,-1>
p=<-2048,2314,800>, v=<-293,334,112>, a=<22,-25,-1>
p=<-2149,5,-1355>, v=<-306,-3,-196>, a=<21,4,18>
p=<1284,662,-2593>, v=<184,94,-374>, a=<-12,-6,32>
p=<-1874,-2537,450>, v=<-267,-361,60>, a=<20,19,-5>
p=<2705,530,-198>, v=<387,75,-20>, a=<-29,2,1>
p=<-2624,-954,-1520>, v=<-377,-134,-220>, a=<23,12,22>
p=<-695,-376,-2690>, v=<-99,-52,-384>, a=<4,3,30>
p=<2412,-1747,-1046>, v=<339,-246,-151>, a=<-21,12,10>
p=<-1279,-2107,-1243>, v=<-180,-304,-177>, a=<12,22,14>
p=<337,-1405,2548>, v=<49,-203,364>, a=<-5,18,-27>
p=<1135,-2203,1556>, v=<161,-315,220>, a=<-14,27,-15>
p=<-754,2322,-1334>, v=<-107,331,-189>, a=<4,-24,11>
p=<-1854,-529,-2664>, v=<-261,-72,-378>, a=<16,8,28>
p=<2070,2256,-1296>, v=<290,326,-182>, a=<-15,-23,11>
p=<-1011,2553,1237>, v=<-149,365,177>, a=<9,-25,-14>
p=<-1374,-2495,412>, v=<-196,-353,61>, a=<12,24,-4>
p=<172,-2059,2245>, v=<24,-295,318>, a=<0,21,-24>
p=<88,1541,-2567>, v=<12,220,-369>, a=<-3,-15,29>
p=<-886,2415,982>, v=<-129,344,142>, a=<9,-29,-12>`


text:
SUMMARY = "The RPI image for SAM"
LICENSE = "MIT"

inherit core-image
include sam-packages.inc

DEPENDS += "bcm2835-bootfiles"

IMAGE_INSTALL += " ${SAM_PACKAGES_DEBUG}"

export IMAGE_BASENAME = "sam-image"

repository: isir/meta-sam

repo_name: isir/meta-sam


text:
@article{Rao2020Patch,
    title        = {Patch attention network with generative adversarial model for semi-supervised binocular disparity prediction},
    author       = {Rao, Zhibo and He, Mingyi and Dai, Yuchao and Shen, Zhelun},
    journal      = {The Visual Computer},
    pages        = {1--17},
    year         = {2020},
    publisher    = {Springer}
}

@inproceedings{Rao2019Sdbf,
    title        = {Sdbf-net: Semantic and disparity bidirectional fusion network for 3d semantic detection on incidental satellite images},
    author       = {Rao, Zhibo and He, Mingyi and Zhu, Zhidong and Dai, Yuchao and He, Renjie},
    booktitle    = {2019 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC)},
    pages        = {438--444},
    year         = {2019},
    organization = {IEEE}
}

@inproceedings{Rao2019Msdc,
    title        = {Msdc-net: Multi-scale dense and contextual networks for stereo matching},
    author       = {Rao, Zhibo and He, Mingyi and Dai, Yuchao and Zhu, Zhidong and Li, Bo and He, Renjie},
    booktitle    = {2019 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC)},
    pages        = {578--583},
    year         = {2019},
    organization = {IEEE}
}

@article{Rao2020BiDirectional,
    title        = {Bidirectional guided attention network for 3-d semantic detection of remote sensing images},
    author       = {Rao, Zhibo and He, Mingyi and Zhu, Zhidong and Dai, Yuchao and He, Renjie},
    journal      = {IEEE Transactions on Geoscience and Remote Sensing},
    year         = {2020},
    pages        = {1--16},
    publisher    = {IEEE}
}

@inproceedings{Rao2020Class,
    title        = {Class Attention Network for Semantic Segmentation of Remote Sensing Images},
    author       = {Rao, Zhibo and He, Mingyi and Dai, Yuchao},
    booktitle    = {2020 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC)},
    pages        = {150--155},
    year         = {2020},
    organization = {IEEE}
}

@article{Rao2020Nlca,
    title        = {Nlca-net: a non-local context attention network for stereo matching},
    author       = {Rao, Zhibo and He, Mingyi and Dai, Yuchao and Zhu, Zhidong and Li, Bo and He, Renjie},
    journal      = {APSIPA Transactions on Signal and Information Processing},
    volume       = {9},
    year         = {2020},
    pages        = {1--13},
    publishe     = {Cambridge University Press}
}


text:
package main

import (
	"context"
	"fmt"
	"io"

	gv "cloud.google.com/go/vision/apiv1"
	"google.golang.org/api/option"
	pb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

const CREDENTIAL_FILE_PATH = "vision-credentials.json"

// Client allow classification
type VisionClient struct {
	engine *gv.ImageAnnotatorClient
	ctx    context.Context
}

func (c *VisionClient) detectSafeSearch(file io.Reader) (*pb.SafeSearchAnnotation, error) {
	image, err := gv.NewImageFromReader(file)
	if err != nil {
		return nil, fmt.Errorf("vision: NewImageFromReader -- %s", err)
	}

	props, err := c.engine.DetectSafeSearch(c.ctx, image, nil)
	if err != nil {
		return nil, fmt.Errorf("vision: DetectSafeSearch -- %s", err)
	}

	return props, nil
}

func (c *VisionClient) Classify(file io.Reader) (map[string]float64, error) {
	response := make(map[string]float64)

	props, err := c.detectSafeSearch(file)
	if err != nil {
		return response, err
	}

	response["Adult"] = float64(props.Adult)
	response["Medical"] = float64(props.Medical)
	response["Racy"] = float64(props.Racy)
	response["Spoof"] = float64(props.Spoof)
	response["Violence"] = float64(props.Violence)

	return response, nil
}

// NewClient start the Google Vision and return the client for classification
func NewVisionClient() (*VisionClient, error) {
	credOption := option.WithCredentialsFile(CREDENTIAL_FILE_PATH)
	ctx := context.Background()

	cli, err := gv.NewImageAnnotatorClient(ctx, credOption)
	if err != nil {
		return nil, fmt.Errorf("vision: NewImageAnnotatorClient -- %s", err)
	}

	return &VisionClient{engine: cli, ctx: ctx}, nil
}

repository: LeandroSNunes/vision-rekognition

repo_name: LeandroSNunes/vision-rekognition


text:
// Code generated by https://github.com/gagliardetto/codebox. DO NOT EDIT.

package main

import (
	"encoding/base32"
	"io"
)

func TaintStepTest_EncodingBase32NewDecoder_B0I0O0(sourceCQL interface{}) interface{} {
	fromReader656 := sourceCQL.(io.Reader)
	intoReader414 := base32.NewDecoder(nil, fromReader656)
	return intoReader414
}

func TaintStepTest_EncodingBase32EncodingDecode_B0I0O0(sourceCQL interface{}) interface{} {
	fromByte518 := sourceCQL.([]byte)
	var intoByte650 []byte
	var mediumObjCQL base32.Encoding
	mediumObjCQL.Decode(intoByte650, fromByte518)
	return intoByte650
}

func TaintStepTest_EncodingBase32EncodingDecodeString_B0I0O0(sourceCQL interface{}) interface{} {
	fromString784 := sourceCQL.(string)
	var mediumObjCQL base32.Encoding
	intoByte957, _ := mediumObjCQL.DecodeString(fromString784)
	return intoByte957
}

func RunAllTaints_EncodingBase32() {
	{
		source := newSource(0)
		out := TaintStepTest_EncodingBase32NewDecoder_B0I0O0(source)
		sink(0, out)
	}
	{
		source := newSource(1)
		out := TaintStepTest_EncodingBase32EncodingDecode_B0I0O0(source)
		sink(1, out)
	}
	{
		source := newSource(2)
		out := TaintStepTest_EncodingBase32EncodingDecodeString_B0I0O0(source)
		sink(2, out)
	}
}

repository: github/codeql

repo_name: github/codeql

gha_language: CodeQL


text:
package app

import (
	"fmt"
	"net/http"

	cortexClient "github.com/grafana/cortex-tools/pkg/client"

	"github.com/odpf/siren/api"
	"github.com/odpf/siren/domain"
	"github.com/odpf/siren/logger"
	"github.com/odpf/siren/metric"
	"github.com/odpf/siren/service"
	"github.com/odpf/siren/store"
	"go.uber.org/zap"
)

// RunServer runs the application server
func RunServer(c *domain.Config) error {
	nr, err := metric.New(&c.NewRelic)
	if err != nil {
		return err
	}

	logger, err := logger.New(&c.Log)
	if err != nil {
		return err
	}

	store, err := store.New(&c.DB)
	if err != nil {
		return err
	}
	cortexConfig := cortexClient.Config{
		Address:         c.Cortex.Address,
		UseLegacyRoutes: false,
	}
	client, err := cortexClient.New(cortexConfig)
	if err != nil {
		return nil
	}
	httpClient := &http.Client{}
	services, err := service.Init(store, c, client, httpClient)
	if err != nil {
		return err
	}
	r := api.New(services, nr, logger)

	logger.Info("starting server", zap.Int("port", c.Port))
	return http.ListenAndServe(fmt.Sprintf(":%d", c.Port), r)
}

func RunMigrations(c *domain.Config) error {
	store, err := store.New(&c.DB)
	if err != nil {
		return err
	}

	cortexConfig := cortexClient.Config{
		Address:         c.Cortex.Address,
		UseLegacyRoutes: false,
	}
	client, err := cortexClient.New(cortexConfig)
	if err != nil {
		return nil
	}
	httpClient := &http.Client{}
	services, err := service.Init(store, c, client, httpClient)
	if err != nil {
		return err
	}

	services.MigrateAll(store)
	return nil
}


text:
// Package feedback_summaries contains auto-generated files. DO NOT MODIFY
package feedback_summaries

import (
	"context"
	"net/http"

	"github.com/RJPearson94/twilio-sdk-go/client"
	"github.com/RJPearson94/twilio-sdk-go/utils"
)

// CreateFeedbackSummaryInput defines input fields for creating a new feedback summary
type CreateFeedbackSummaryInput struct {
	EndDate              string  `validate:"required" form:"EndDate"`
	IncludeSubaccounts   *bool   `form:"IncludeSubaccounts,omitempty"`
	StartDate            string  `validate:"required" form:"StartDate"`
	StatusCallback       *string `form:"StatusCallback,omitempty"`
	StatusCallbackMethod *string `form:"StatusCallbackMethod,omitempty"`
}

// CreateFeedbackSummaryResponse defines the response fields for creating a new feedback summary
type CreateFeedbackSummaryResponse struct {
	AccountSid                    string             `json:"account_sid"`
	CallCount                     int                `json:"call_count"`
	CallFeedbackCount             int                `json:"call_feedback_count"`
	DateCreated                   utils.RFC2822Time  `json:"date_created"`
	DateUpdated                   *utils.RFC2822Time `json:"date_updated,omitempty"`
	EndDate                       string             `json:"end_date"`
	IncludeSubaccounts            bool               `json:"include_subaccounts"`
	Issues                        *[]string          `json:"issues,omitempty"`
	QualityScoreAverage           *float64           `json:"quality_score_average,omitempty"`
	QualityScoreMedian            *float64           `json:"quality_score_median,omitempty"`
	QualityScoreStandardDeviation *float64           `json:"quality_score_standard_deviation,omitempty"`
	Sid                           string             `json:"sid"`
	StartDate                     string             `json:"start_date"`
	Status                        string             `json:"status"`
}

// Create creates a new feedback summary resource
// See https://www.twilio.com/docs/voice/api/feedbacksummary-resource#create-a-callfeedbacksummary-resource for more details
// Context is defaulted to Background. See https://golang.org/pkg/context/#Background for more information
func (c Client) Create(input *CreateFeedbackSummaryInput) (*CreateFeedbackSummaryResponse, error) {
	return c.CreateWithContext(context.Background(), input)
}

// CreateWithContext creates a new feedback summary resource
// See https://www.twilio.com/docs/voice/api/feedbacksummary-resource#create-a-callfeedbacksummary-resource for more details
func (c Client) CreateWithContext(context context.Context, input *CreateFeedbackSummaryInput) (*CreateFeedbackSummaryResponse, error) {
	op := client.Operation{
		Method:      http.MethodPost,
		URI:         "/Accounts/{accountSid}/Calls/FeedbackSummary.json",
		ContentType: client.URLEncoded,
		PathParams: map[string]string{
			"accountSid": c.accountSid,
		},
	}

	if input == nil {
		input = &CreateFeedbackSummaryInput{}
	}

	response := &CreateFeedbackSummaryResponse{}
	if err := c.client.Send(context, op, input, response); err != nil {
		return nil, err
	}
	return response, nil
}


text:
DESCRIPTION = "The modular source code checker: pep8, pyflakes and co"
HOMEPAGE = "https://github.com/dreamhost/cliff"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=75b26781f1adf1aa310bda6098937878"

SRC_URI += " \
    file://drop-pytest-runner-from-setup_requires.patch \
"

SRC_URI[md5sum] = "7e5fe39d578a2c2d0962b61b35b8c3fc"
SRC_URI[sha256sum] = "7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0"

inherit setuptools3 pypi

RDEPENDS_${PN} += "${PYTHON_PN}-prettytable \
            ${PYTHON_PN}-cmd2 \
            ${PYTHON_PN}-pyparsing \
            ${PYTHON_PN}-mccabe \
            ${PYTHON_PN}-pep8 \
            ${PYTHON_PN}-pyflakes"

BBCLASSEXTEND = "native"

repository: jianchangfeng/meta-ros

repo_name: jianchangfeng/meta-ros


text:
// Copyright (c) 2018 The wonderair ecosystem Authors
// Distributed under the MIT software license, see the accompanying
// file COPYING or or or http://www.opensource.org/licenses/mit-license.php

package whisperv6

import (
	"bytes"
	"crypto/ecdsa"
	"fmt"
	mrand "math/rand"
	"net"
	"sync"
	"sync/atomic"
	"testing"
	"time"

	"github.com/wonderair ecosystem/go-wonderair ecosystem/common"
	"github.com/wonderair ecosystem/go-wonderair ecosystem/common/hexutil"
	"github.com/wonderair ecosystem/go-wonderair ecosystem/crypto"
	"github.com/wonderair ecosystem/go-wonderair ecosystem/p2p"
	"github.com/wonderair ecosystem/go-wonderair ecosystem/p2p/discover"
	"github.com/wonderair ecosystem/go-wonderair ecosystem/p2p/nat"
)

var keys = []string{
	"d49dcf37238dc8a7aac57dc61b9fee68f0a97f062968978b9fafa7d1033d03a9",
	"73fd6143c48e80ed3c56ea159fe7494a0b6b393a392227b422f4c3e8f1b54f98",
	"119dd32adb1daa7a4c7bf77f847fb28730785aa92947edf42fdd997b54de40dc",
	"deeda8709dea935bb772248a3144dea449ffcc13e8e5a1fd4ef20ce4e9c87837",
	"5bd208a079633befa349441bdfdc4d85ba9bd56081525008380a63ac38a407cf",
	"1d27fb4912002d58a2a42a50c97edb05c1b3dffc665dbaa42df1fe8d3d95c9b5",
	"15def52800c9d6b8ca6f3066b7767a76afc7b611786c1276165fbc61636afb68",
	"51be6ab4b2dc89f251ff2ace10f3c1cc65d6855f3e083f91f6ff8efdfd28b48c",
	"ef1ef7441bf3c6419b162f05da6037474664f198b58db7315a6f4de52414b4a0",
	"09bdf6985aabc696dc1fbeb5381aebd7a6421727343872eb2fadfc6d82486fd9",
	"15d811bf2e01f99a224cdc91d0cf76cea08e8c67905c16fee9725c9be71185c4",
	"2f83e45cf1baaea779789f755b7da72d8857aeebff19362dd9af31d3c9d14620",
	"73f04e34ac6532b19c2aae8f8e52f38df1ac8f5cd10369f92325b9b0494b0590",
	"1e2e07b69e5025537fb73770f483dc8d64f84ae3403775ef61cd36e3faf162c1",
	"8963d9bbb3911aac6d30388c786756b1c423c4fbbc95d1f96ddbddf39809e43a",
	"0422da85abc48249270b45d8de38a4cc3c02032ede1fcf0864a51092d58a2f1f",
	"8ae5c15b0e8c7cade201fdc149831aa9b11ff626a7ffd27188886cc108ad0fa8",
	"acd8f5a71d4aecfcb9ad00d32aa4bcf2a602939b6a9dd071bab443154184f805",
	"a285a922125a7481600782ad69debfbcdb0316c1e97c267aff29ef50001ec045",
	"28fd4eee78c6cd4bf78f39f8ab30c32c67c24a6223baa40e6f9c9a0e1de7cef5",
	"c5cca0c9e6f043b288c6f1aef448ab59132dab3e453671af5d0752961f013fc7",
	"46df99b051838cb6f8d1b73f232af516886bd8c4d0ee07af9a0a033c391380fd",
	"c6a06a53cbaadbb432884f36155c8f3244e244881b5ee3e92e974cfa166d793f",
	"783b90c75c63dc72e2f8d11b6f1b4de54d63825330ec76ee8db34f06b38ea211",
	"9450038f10ca2c097a8013e5121b36b422b95b04892232f930a29292d9935611",
	"e215e6246ed1cfdcf7310d4d8cdbe370f0d6a8371e4eb1089e2ae05c0e1bc10f",
	"487110939ed9d64ebbc1f300adeab358bc58875faf4ca64990fbd7fe03b78f2b",
	"824a70ea76ac81366da1d4f4ac39de851c8ac49dca456bb3f0a186ceefa269a5",
	"ba8f34fa40945560d1006a328fe70c42e35cc3d1017e72d26864cd0d1b150f15",
	"30a5dfcfd144997f428901ea88a43c8d176b19c79dde54cc58eea001aa3d246c",
	"de59f7183aca39aa245ce66a05245fecfc7e2c75884184b52b27734a4a58efa2",
	"92629e2ff5f0cb4f5f08fffe0f64492024d36f045b901efb271674b801095c5a",
	"7184c1701569e3a4c4d2ddce691edd983b81e42e09196d332e1ae2f1e062cff4",
}

type TestData struct {
	started int64
	counter [NumNodes]int
	mutex   sync.RWMutex
}

type TestNode struct {
	shh     *Whisper
	id      *ecdsa.PrivateKey
	server  *p2p.Server
	filerID string
}

const NumNodes = 8 // must not exceed the number of keys (32)

var result TestData
var nodes [NumNodes]*TestNode
var sharedKey = hexutil.MustDecode("0x03ca634cae0d49acb401d8a4c6b6fe8c55b70d115bf400769cc1400f3258cd31")
var wrongKey = hexutil.MustDecode("0xf91156714d7ec88d3edc1c652c2181dbb3044e8771c683f3b30d33c12b986b11")
var sharedTopic = TopicType{0xF, 0x1, 0x2, 0}
var wrongTopic = TopicType{0, 0, 0, 0}
var expectedMessage = []byte("per aspera ad astra")
var unexpectedMessage = []byte("per rectum ad astra")
var masterBloomFilter []byte
var masterPow = 0.00000001
var round = 1
var debugMode = false
var prevTime time.Time
var cntPrev int

func TestSimulation(t *testing.T) {
	// create a chain of whisper nodes,
	// installs the filters with shared (predefined) parameters
	initialize(t)

	// each node sends one random (not decryptable) message
	for i := 0; i < NumNodes; i++ {
		sendMsg(t, false, i)
	}

	// node #0 sends one expected (decryptable) message
	sendMsg(t, true, 0)

	// check if each node have received and decrypted exactly one message
	checkPropagation(t, true)

	// check if Status message was correctly decoded
	checkBloomFilterExchange(t)
	checkPowExchange(t)

	// send new pow and bloom exchange messages
	resetParams(t)

	// node #1 sends one expected (decryptable) message
	sendMsg(t, true, 1)

	// check if each node (except node #0) have received and decrypted exactly one message
	checkPropagation(t, false)

	// check if corresponding protocol-level messages were correctly decoded
	checkPowExchangeForNodeZero(t)
	checkBloomFilterExchange(t)

	stopServers()
}

func resetParams(t *testing.T) {
	// change pow only for node zero
	masterPow = 7777777.0
	nodes[0].shh.SetMinimumPoW(masterPow)

	// change bloom for all nodes
	masterBloomFilter = TopicToBloom(sharedTopic)
	for i := 0; i < NumNodes; i++ {
		nodes[i].shh.SetBloomFilter(masterBloomFilter)
	}

	round++
}

func initBloom(t *testing.T) {
	masterBloomFilter = make([]byte, BloomFilterSize)
	_, err := mrand.Read(masterBloomFilter)
	if err != nil {
		t.Fatalf("rand failed: %s.", err)
	}

	msgBloom := TopicToBloom(sharedTopic)
	masterBloomFilter = addBloom(masterBloomFilter, msgBloom)
	for i := 0; i < 32; i++ {
		masterBloomFilter[i] = 0xFF
	}

	if !BloomFilterMatch(masterBloomFilter, msgBloom) {
		t.Fatalf("bloom mismatch on initBloom.")
	}
}

func initialize(t *testing.T) {
	initBloom(t)

	var err error
	ip := net.IPv4(127, 0, 0, 1)
	port0 := 10909

	for i := 0; i < NumNodes; i++ {
		var node TestNode
		b := make([]byte, BloomFilterSize)
		copy(b, masterBloomFilter)
		node.shh = New(&DefaultConfig)
		node.shh.SetMinimumPoW(masterPow)
		node.shh.SetBloomFilter(b)
		if !bytes.Equal(node.shh.BloomFilter(), masterBloomFilter) {
			t.Fatalf("bloom mismatch on init.")
		}
		node.shh.Start(nil)
		topics := make([]TopicType, 0)
		topics = append(topics, sharedTopic)
		f := Filter{KeySym: sharedKey}
		f.Topics = [][]byte{topics[0][:]}
		node.filerID, err = node.shh.Subscribe(&f)
		if err != nil {
			t.Fatalf("failed to install the filter: %s.", err)
		}
		node.id, err = crypto.HexToECDSA(keys[i])
		if err != nil {
			t.Fatalf("failed convert the key: %s.", keys[i])
		}
		port := port0 + i
		addr := fmt.Sprintf(":%d", port) // e.g. ":10909"
		name := common.MakeName("whisper-go", "2.0")
		var peers []*discover.Node
		if i > 0 {
			peerNodeID := nodes[i-1].id
			peerPort := uint16(port - 1)
			peerNode := discover.PubkeyID(&peerNodeID.PublicKey)
			peer := discover.NewNode(peerNode, ip, peerPort, peerPort)
			peers = append(peers, peer)
		}

		node.server = &p2p.Server{
			Config: p2p.Config{
				PrivateKey:     node.id,
				MaxPeers:       NumNodes/2 + 1,
				Name:           name,
				Protocols:      node.shh.Protocols(),
				ListenAddr:     addr,
				NAT:            nat.Any(),
				BootstrapNodes: peers,
				StaticNodes:    peers,
				TrustedNodes:   peers,
			},
		}

		nodes[i] = &node
	}

	for i := 0; i < NumNodes; i++ {
		go startServer(t, nodes[i].server)
	}

	waitForServersToStart(t)
}

func startServer(t *testing.T, s *p2p.Server) {
	err := s.Start()
	if err != nil {
		t.Fatalf("failed to start the fisrt server.")
	}

	atomic.AddInt64(&result.started, 1)
}

func stopServers() {
	for i := 0; i < NumNodes; i++ {
		n := nodes[i]
		if n != nil {
			n.shh.Unsubscribe(n.filerID)
			n.shh.Stop()
			n.server.Stop()
		}
	}
}

func checkPropagation(t *testing.T, includingNodeZero bool) {
	if t.Failed() {
		return
	}

	prevTime = time.Now()
	// (cycle * iterations) should not exceed 50 seconds, since TTL=50
	const cycle = 200 // time in milliseconds
	const iterations = 250

	first := 0
	if !includingNodeZero {
		first = 1
	}

	for j := 0; j < iterations; j++ {
		for i := first; i < NumNodes; i++ {
			f := nodes[i].shh.GetFilter(nodes[i].filerID)
			if f == nil {
				t.Fatalf("failed to get filterId %s from node %d, round %d.", nodes[i].filerID, i, round)
			}

			mail := f.Retrieve()
			validateMail(t, i, mail)

			if isTestComplete() {
				checkTestStatus()
				return
			}
		}

		checkTestStatus()
		time.Sleep(cycle * time.Millisecond)
	}

	if !includingNodeZero {
		f := nodes[0].shh.GetFilter(nodes[0].filerID)
		if f != nil {
			t.Fatalf("node zero received a message with low PoW.")
		}
	}

	t.Fatalf("Test was not complete (%d round): timeout %d seconds. nodes=%v", round, iterations*cycle/1000, nodes)
}

func validateMail(t *testing.T, index int, mail []*ReceivedMessage) {
	var cnt int
	for _, m := range mail {
		if bytes.Equal(m.Payload, expectedMessage) {
			cnt++
		}
	}

	if cnt == 0 {
		// no messages received yet: nothing is wrong
		return
	}
	if cnt > 1 {
		t.Fatalf("node %d received %d.", index, cnt)
	}

	if cnt == 1 {
		result.mutex.Lock()
		defer result.mutex.Unlock()
		result.counter[index] += cnt
		if result.counter[index] > 1 {
			t.Fatalf("node %d accumulated %d.", index, result.counter[index])
		}
	}
}

func checkTestStatus() {
	var cnt int
	var arr [NumNodes]int

	for i := 0; i < NumNodes; i++ {
		arr[i] = nodes[i].server.PeerCount()
		envelopes := nodes[i].shh.Envelopes()
		if len(envelopes) >= NumNodes {
			cnt++
		}
	}

	if debugMode {
		if cntPrev != cnt {
			fmt.Printf(" %v \t number of nodes that have received all msgs: %d, number of peers per node: %v \n",
				time.Since(prevTime), cnt, arr)
			prevTime = time.Now()
			cntPrev = cnt
		}
	}
}

func isTestComplete() bool {
	result.mutex.RLock()
	defer result.mutex.RUnlock()

	for i := 0; i < NumNodes; i++ {
		if result.counter[i] < 1 {
			return false
		}
	}

	for i := 0; i < NumNodes; i++ {
		envelopes := nodes[i].shh.Envelopes()
		if len(envelopes) < NumNodes+1 {
			return false
		}
	}

	return true
}

func sendMsg(t *testing.T, expected bool, id int) {
	if t.Failed() {
		return
	}

	opt := MessageParams{KeySym: sharedKey, Topic: sharedTopic, Payload: expectedMessage, PoW: 0.00000001, WorkTime: 1}
	if !expected {
		opt.KeySym = wrongKey
		opt.Topic = wrongTopic
		opt.Payload = unexpectedMessage
		opt.Payload[0] = byte(id)
	}

	msg, err := NewSentMessage(&opt)
	if err != nil {
		t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
	}
	envelope, err := msg.Wrap(&opt)
	if err != nil {
		t.Fatalf("failed to seal message: %s", err)
	}

	err = nodes[id].shh.Send(envelope)
	if err != nil {
		t.Fatalf("failed to send message: %s", err)
	}
}

func TestPeerBasic(t *testing.T) {
	InitSingleTest()

	params, err := generateMessageParams()
	if err != nil {
		t.Fatalf("failed generateMessageParams with seed %d.", seed)
	}

	params.PoW = 0.001
	msg, err := NewSentMessage(params)
	if err != nil {
		t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
	}
	env, err := msg.Wrap(params)
	if err != nil {
		t.Fatalf("failed Wrap with seed %d.", seed)
	}

	p := newPeer(nil, nil, nil)
	p.mark(env)
	if !p.marked(env) {
		t.Fatalf("failed mark with seed %d.", seed)
	}
}

func checkPowExchangeForNodeZero(t *testing.T) {
	const iterations = 200
	for j := 0; j < iterations; j++ {
		lastCycle := (j == iterations-1)
		ok := checkPowExchangeForNodeZeroOnce(t, lastCycle)
		if ok {
			break
		}
		time.Sleep(50 * time.Millisecond)
	}
}

func checkPowExchangeForNodeZeroOnce(t *testing.T, mustPass bool) bool {
	cnt := 0
	for i, node := range nodes {
		for peer := range node.shh.peers {
			if peer.peer.ID() == discover.PubkeyID(&nodes[0].id.PublicKey) {
				cnt++
				if peer.powRequirement != masterPow {
					if mustPass {
						t.Fatalf("node %d: failed to set the new pow requirement for node zero.", i)
					} else {
						return false
					}
				}
			}
		}
	}
	if cnt == 0 {
		t.Fatalf("looking for node zero: no matching peers found.")
	}
	return true
}

func checkPowExchange(t *testing.T) {
	for i, node := range nodes {
		for peer := range node.shh.peers {
			if peer.peer.ID() != discover.PubkeyID(&nodes[0].id.PublicKey) {
				if peer.powRequirement != masterPow {
					t.Fatalf("node %d: failed to exchange pow requirement in round %d; expected %f, got %f",
						i, round, masterPow, peer.powRequirement)
				}
			}
		}
	}
}

func checkBloomFilterExchangeOnce(t *testing.T, mustPass bool) bool {
	for i, node := range nodes {
		for peer := range node.shh.peers {
			peer.bloomMu.Lock()
			equals := bytes.Equal(peer.bloomFilter, masterBloomFilter)
			peer.bloomMu.Unlock()
			if !equals {
				if mustPass {
					t.Fatalf("node %d: failed to exchange bloom filter requirement in round %d. \n%x expected \n%x got",
						i, round, masterBloomFilter, peer.bloomFilter)
				} else {
					return false
				}
			}
		}
	}

	return true
}

func checkBloomFilterExchange(t *testing.T) {
	const iterations = 200
	for j := 0; j < iterations; j++ {
		lastCycle := (j == iterations-1)
		ok := checkBloomFilterExchangeOnce(t, lastCycle)
		if ok {
			break
		}
		time.Sleep(50 * time.Millisecond)
	}
}

func waitForServersToStart(t *testing.T) {
	const iterations = 200
	var started int64
	for j := 0; j < iterations; j++ {
		time.Sleep(50 * time.Millisecond)
		started = atomic.LoadInt64(&result.started)
		if started == NumNodes {
			return
		}
	}
	t.Fatalf("Failed to start all the servers, running: %d", started)
}

path: /WonderAir whisperv6/peer_test.go


text:
#
#   Copyright (C) 2015 Pelagicore AB
#
#   SPDX-License-Identifier: MIT
#
DESCRIPTION = "PEAK CAN Bus Driver"
HOMEPAGE = "http://www.peak-system.com/fileadmin/media/linux/index.htm"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://Documentation/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
PR = "r0"
SRC_URI = "http://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-${PV}.tar.gz"
SRC_URI[md5sum] = "a3e9e355c7055d5a07ce5d3ebca99132"
SRC_URI[sha256sum] = "dfe57d390918eaf949c7116d0639537e1f08704d8cb4ef55f63f8e8131e7c2f0"

inherit module

EXTRA_OEMAKE = "NET=NETDEV_SUPPORT KERNEL_LOCATION=${STAGING_KERNEL_DIR}"

do_install() {
  oe_runmake install DESTDIR=${D}
}

PACKAGES = "\
    ${PN}       \
    ${PN}-tools \
"

FILES_${PN} += "\
    ${libdir}            \
    ${libdir}/*${SOLIBS} \
"

FILES_${PN}-tools += "\
    ${bindir}/pcan_make_devices \
"

repository: SKumarDas/meta-bistro

repo_name: SKumarDas/meta-bistro