This library provides a DataMapper
class that allows easy interoperability
between your application's domain classes and their persisted form in Amazon
DynamoDB. Powered by the @block65/dynamodb-data-marshaller
and
@block65/dynamodb-expressions
packages, using DataMapper
lets you define each
object's persisted representation once and then load, save, scan, and query your
tables using the vocabulary of your application domain rather than its
representation in DynamoDB.
To use the DataMapper
with a given JavaScript class, you will need to add a
couple properties to the prototype of the class you would like to map to a
DynamoDB table. Specifically, you will need to provide a schema and the name of
the table:
import {DynamoDbSchema, DynamoDbTable} from '@block65/dynamodb-data-mapper';
class MyDomainModel {
// declare methods and properties as normal
}
Object.defineProperties(MyDomainModel.prototype, {
[DynamoDbTable]: {
value: 'MyTable'
},
[DynamoDbSchema]: {
value: {
id: {
type: 'String',
keyType: 'HASH'
},
foo: {type: 'String'},
bar: {
type: 'Set',
memberType: 'String',
},
baz: {
type: 'Tuple',
members: [
{type: 'Boolean'},
{type: 'String'},
],
},
},
},
});
The schema and table name may be declared as property accessors directly on the class if the value should be determined dynamically:
import {DynamoDbTable} from '@block65/dynamodb-data-mapper';
class MyOtherDomainClass {
id: number;
get [DynamoDbTable]() {
return this.id % 2 === 0 ? 'evens' : 'odds';
}
}
Next, create an instance of DataMapper
and use the MyDomainClass
constructor
defined above to save and load objects from DynamoDB:
import {
DataMapper,
DynamoDbSchema,
DynamoDbTable,
} from '@block65/dynamodb-data-mapper';
import DynamoDB = require('aws-sdk/clients/dynamodb');
const client = new DynamoDB({region: 'us-west-2'});
const mapper = new DataMapper({client});
class MyDomainModel {
id: string;
foo?: string;
bar?: Set<string>;
baz?: [boolean, string];
}
Object.defineProperties(MyDomainModel.prototype, {
[DynamoDbTable]: {
value: 'MyTable'
},
[DynamoDbSchema]: {
value: {
id: {
type: 'String',
keyType: 'HASH'
},
foo: {type: 'String'},
bar: {
type: 'Set',
memberType: 'String',
},
baz: {
type: 'Tuple',
members: [
{type: 'Boolean'},
{type: 'String'},
],
},
},
},
});
// delete an object
const toDelete = new MyDomainModel();
toDelete.id = 'DELETE_ME';
mapper.delete(toDelete);
// if that's too verbose, you can write the above as a single expression with
// Object.assign:
mapper.delete(Object.assign(new MyDomainModel(), {id: 'DELETE_ME'}));
// fetch an object
const toGet = new MyDomainModel();
toGet.id = 'ID_TO_FETCH';
const fetched = await mapper.get(toGet);
// this should return a rejected promise, as it's fetching an object that does
// not exist
mapper.get(toDelete)
.catch(err => console.log('I expected this to happen'));
// put something new into the database
const toPut = new MyDomainModel();
toPut.id = 'NEW_RECORD';
toPut.foo = 'bar';
toPut.bar = new Set<string>(['fizz', 'buzz', 'pop']);
toPut.baz = [true, 'quux'];
mapper.put(toPut).then((persisted: MyDomainModel) => {
// now change the record a bit
const toUpdate = new MyDomainModel();
toUpdate.id = persisted.id;
toUpdate.baz = [false, 'beep'];
return mapper.update(toUpdate, {onMissing: 'skip'});
});
batchDelete
Deletes any number of items from one or more tables in batches of 25 or fewer items. Unprocessed deletes are retried following an exponentially increasing backoff delay that is applied on a per-table basis.
Returns an async iterable of items that have been deleted (deleted items are
yielded when the delete has been accepted by DynamoDB). The results can be
consumed with a for-await-of
loop. If you are using TypeScript, you will need
to include esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes one parameter:
DynamoDbTable
symbol and a schema accessible via a
property identified with the DynamoDbSchema
symbol.batchGet
Fetches any number of items from one or more tables in batches of 100 or fewer items. Unprocessed reads are retried following an exponentially increasing backoff delay that is applied on a per-table basis.
Takes two parameters:
An iterable (synchronous or asynchronous) of items to fetch. Each item must be
an instance of a class with a table name accessible via a property
identified with the DynamoDbTable
symbol and a schema accessible via a
property identified with the DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
readConsistency
- Specify 'strong'
to perform a strongly consistent
read. Specify 'eventual'
(the default) to perform an eventually
consistent read.
perTableOptions
- An object whose keys are table names and whose values
are objects specifying any of the following options:
readConsistency
- Specify 'strong'
to perform a strongly
consistent read. Specify 'eventual'
(the default) to perform an
eventually consistent read.
projection
- A projection expression directing DynamoDB to return a
subset of the fetched item's attributes. Please refer to the
documentation for the @block65/dynamodb-expressions
package for
guidance on creating projection expression objects.
projectionSchema
- The schema to use when mapping the supplied
projection
option to the attribute names used in DynamoDB.
This parameter is only necessary if a batch contains items from multiple classes that map to the same table using different property names to represent the same DynamoDB attributes.
If not supplied, the schema associated with the first item associated with a given table will be used in its place.
batchPut
Puts any number of items to one or more tables in batches of 25 or fewer items. Unprocessed puts are retried following an exponentially increasing backoff delay that is applied on a per-table basis.
Returns an async iterable of items that have been put (put items are yielded
when the put has been accepted by DynamoDB). The results can be consumed with a
for-await-of
loop. If you are using TypeScript, you will need to include
esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes one parameter:
DynamoDbTable
symbol and a schema accessible via a
property identified with the DynamoDbSchema
symbol.batchWrite
Puts or deletes any number of items to one or more tables in batches of 25 or fewer items. Unprocessed writes are retried following an exponentially increasing backoff delay that is applied on a per-table basis.
Returns an async iterable of tuples of the string 'put'|'delete' and the item on
which the specified write action was performed. The results can be consumed with
a for-await-of
loop. If you are using TypeScript, you will need to include
esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes one parameter:
DynamoDbTable
symbol and a schema accessible
via a property identified with the DynamoDbSchema
symbol.delete
Removes an item from a DynamoDB table. Takes two parameters:
The item to be deleted. Must be an instance of a class with a table name
accessible via a property identified with the DynamoDbTable
symbol and a
schema accessible via a property identified with the DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
condition
- A condition expression whose assertion must be satisfied in
order for the delete operation to be executed. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating condition expression objects.
returnValues
- Specify 'ALL_OLD'
to have the deleted item returned to
you when the delete operation completes.
skipVersionCheck
- Whether to forgo creating a condition expression
based on a defined versionAttribute
in the schema.
get
Fetches an item from a DynamoDB table. If no item with the specified key was found, the returned promise will be rejected with an error. Takes two parameters:
The item to be fetched. Must be an instance of a class with a table name
accessible via a property identified with the DynamoDbTable
symbol and a
schema accessible via a property identified with the DynamoDbSchema
symbol.
The supplied item will NOT be updated in place. Rather, a new item of the same class with data from the DynamoDB table will be returned.
(Optional) An object specifying any of the following options:
readConsistency
- Specify 'strong'
to perform a strongly consistent
read. Specify 'eventual'
(the default) to perform an eventually
consistent read.
projection
- A projection expression directing DynamoDB to return a
subset of the fetched item's attributes. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating projection expression objects.
put
Inserts an item into a DynamoDB table. Takes two parameters:
The item to be inserted. Must be an instance of a class with a table name
accessible via a property identified with the DynamoDbTable
symbol and a
schema accessible via a property identified with the DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
condition
- A condition expression whose assertion must be satisfied in
order for the put operation to be executed. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating condition expression objects.
returnValues
- Specify 'ALL_OLD'
to have the overwritten item (if one
existed) returned to you when the put operation completes.
skipVersionCheck
- Whether to forgo creating a condition expression
based on a defined versionAttribute
in the schema.
query
Retrieves multiple values from a table or index based on the primary key attributes. Queries must target a single partition key value but may read multiple items with different range keys.
This method is implemented as an async iterator and the results can be consumed
with a for-await-of
loop. If you are using TypeScript, you will need to
include esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes three parameters:
The constructor function to use for any results returned by this operation.
Must have a prototype with a table name accessible via a property identified
with the DynamoDbTable
symbol and a schema accessible via a property
identified with the DynamoDbSchema
symbol.
The condition that specifies the key value(s) for items to be retrieved by the
query operation. You may provide a hash matching key properties to the
values they must equal, a hash matching keys to
ConditionExpressionPredicate
s, or a fully composed ConditionExpression
.
If a hash is provided, it may contain a mixture of condition expression
predicates and exact value matches:
import {between} from '@block65/dynamodb-expressions';
const keyCondition = {
partitionKey: 'foo',
rangeKey: between(10, 99),
};
The key condition must target a single value for the partition key.
Please refer to the documentation for the @block65/dynamodb-expressions
package for guidance on creating condition expression objects.
(Optional) An object specifying any of the following options:
filter
- A condition expression that DynamoDB applies after the Query
operation, but before the data is returned to you. Items that do not
satisfy the filter
criteria are not returned.
You cannot define a filter expression based on a partition key or a sort key.
Please refer to the documentation for the @block65/dynamodb-expressions
package for guidance on creating condition expression objects.
indexName
- The name of the index against which to execute this query.
If not specified, the query will be executed against the base table.
limit
- The maximum number of items to return.
pageSize
- The maximum number of items to return per page of results.
projection
- A projection expression directing DynamoDB to return a
subset of any fetched item's attributes. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating projection expression objects.
readConsistency
- Specify 'strong'
to perform a strongly consistent
read. Specify 'eventual'
(the default) to perform an eventually
consistent read.
scanIndexForward
- Specifies the order for index traversal: If true, the
traversal is performed in ascending order; if false, the traversal is
performed in descending order.
startKey
- The primary key of the first item that this operation will
evaluate.
The iterator returned by query
will keep track of the number of items yielded
and the number of items scanned via its count
and scannedCount
properties:
const iterator = mapper.query(
MyClass,
{partitionKey: 'foo', rangeKey: between(0, 10)}
);
for await (const record of iterator) {
console.log(record, iterator.count, iterator.scannedCount);
}
If you wish to perform a resumable query, you can use the .pages()
method of
the iterator returned by query
to access the underlying paginator. The
paginator differs from the iterator in that it yields arrays of unmarshalled
records and has a lastEvaluatedKey
property that may be provided to a new
call to mapper.query
to resume the query later or in a separate process:
const paginator = mapper.query(
MyClass,
{partitionKey: 'foo', rangeKey: between(0, 10)},
{
// automatically stop after 25 items or the entire result set has been
// fetched, whichever is smaller
limit: 25
}
).pages();
for await (const page of paginator) {
console.log(
paginator.count,
paginator.scannedCount,
paginator.lastEvaluatedKey
);
}
const newPaginator = mapper.query(
MyClass,
{partitionKey: 'foo', rangeKey: between(0, 10)},
{
// start this new paginator where the previous one stopped
startKey: paginator.lastEvaluatedKey
}
).pages();
scan
Retrieves all values in a table or index.
This method is implemented as an async iterator and the results can be consumed
with a for-await-of
loop. If you are using TypeScript, you will need to
include esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes two parameters:
The constructor function to use for any results returned by this operation.
Must have a prototype with a table name accessible via a property identified
with the DynamoDbTable
symbol and a schema accessible via a property
identified with the DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
filter
- A condition expression that DynamoDB applies after the scan
operation, but before the data is returned to you. Items that do not
satisfy the filter
criteria are not returned.
You cannot define a filter expression based on a partition key or a sort key.
Please refer to the documentation for the @block65/dynamodb-expressions
package for guidance on creating condition expression objects.
indexName
- The name of the index against which to execute this query.
If not specified, the query will be executed against the base table.
limit
- The maximum number of items to return.
pageSize
- The maximum number of items to return per page of results.
projection
- A projection expression directing DynamoDB to return a
subset of any fetched item's attributes. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating projection expression objects.
readConsistency
- Specify 'strong'
to perform a strongly consistent
read. Specify 'eventual'
(the default) to perform an eventually
consistent read.
segment
- The identifier for this segment (if this scan is being
performed as part of a parallel scan operation).
startKey
- The primary key of the first item that this operation will
evaluate.
totalSegments
- The number of segments into which this scan has been
divided (if this scan is being performed as part of a parallel scan
operation).
The iterator returned by scan
will keep track of the number of items yielded
and the number of items scanned via its count
and scannedCount
properties:
const iterator = mapper.scan(MyClass);
for await (const record of iterator) {
console.log(record, iterator.count, iterator.scannedCount);
}
If you wish to perform a resumable scan, you can use the .pages()
method of
the iterator returned by scan
to access the underlying paginator. The
paginator differs from the iterator in that it yields arrays of unmarshalled
records and has a lastEvaluatedKey
property that may be provided to a new
call to mapper.scan
to resume the scan later or in a separate process:
const paginator = mapper.scan(
MyClass,
{
// automatically stop after 25 items or the entire result set has been
// fetched, whichever is smaller
limit: 25
}
).pages();
for await (const page of paginator) {
console.log(
paginator.count,
paginator.scannedCount,
paginator.lastEvaluatedKey
);
}
const newPaginator = mapper.scan(
MyClass,
{
// start this new paginator where the previous one stopped
startKey: paginator.lastEvaluatedKey
}
).pages();
parallelScan
Retrieves all values in a table by dividing the table into segments, all of which are scanned in parallel.
This method is implemented as an async iterator and the results can be consumed
with a for-await-of
loop. If you are using TypeScript, you will need to
include esnext.asynciterable
in your lib
declaration (as well as enabling
downlevelIteration
if targeting ES5 or lower). Please refer to the TypeScript
release notes
for more information.
Takes three parameters:
The constructor to use for any results returned by this operation. Must have a
prototype with a table name accessible via a property identified with the
DynamoDbTable
symbol and a schema accessible via a property identified
with the DynamoDbSchema
symbol.
The total number of parallel workers to use to scan the table.
(Optional) An object specifying any of the following options:
filter
- A condition expression that DynamoDB applies after the scan
operation, but before the data is returned to you. Items that do not
satisfy the filter
criteria are not returned.
You cannot define a filter expression based on a partition key or a sort key.
Please refer to the documentation for the @block65/dynamodb-expressions
package for guidance on creating condition expression objects.
indexName
- The name of the index against which to execute this query.
If not specified, the query will be executed against the base table.
pageSize
- The maximum number of items to return per page of results.
projection
- A projection expression directing DynamoDB to return a
subset of any fetched item's attributes. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating projection expression objects.
readConsistency
- Specify 'strong'
to perform a strongly consistent
read. Specify 'eventual'
(the default) to perform an eventually
consistent read.
startKey
- The primary key of the first item that this operation will
evaluate.
The iterator returned by parallelScan
will keep track of the number of items
yielded and the number of items scanned via its count
and scannedCount
properties:
const iterator = mapper.parallelScan(MyClass, 4);
for await (const record of iterator) {
console.log(record, iterator.count, iterator.scannedCount);
}
If you wish to perform a resumable parallel scan, you can use the .pages()
method of the iterator returned by parallelScan
to access the underlying
paginator. The paginator differs from the iterator in that it yields arrays of
unmarshalled records and has a scanState
property that may be provided
to a new call to mapper.parallelScan
to resume the scan later or in a separate
process:
const paginator = mapper.parallelScan(
MyClass,
4
).pages();
for await (const page of paginator) {
console.log(
paginator.count,
paginator.scannedCount,
paginator.lastEvaluatedKey
);
break;
}
const newPaginator = mapper.parallelScan(
MyClass,
4,
{
// start this new paginator where the previous one stopped
scanState: paginator.scanState
}
).pages();
update
Updates an item in a DynamoDB table. Will leave attributes not defined in the schema in place.
Takes two parameters:
The item with its desired property state. Must be an instance of a class with
a table name accessible via a property identified with the DynamoDbTable
symbol and a schema accessible via a property identified with the
DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
condition
- A condition expression whose assertion must be satisfied in
order for the update operation to be executed. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating condition expression objects.
onMissing
- Specify 'remove'
(the default) to treat the absence of a
value in the supplied item
as a directive to remove the property from
the record in DynamoDB. Specify 'skip'
to only update the properties
that are defined in the supplied item
.
skipVersionCheck
- Whether to forgo creating a condition expression
based on a defined versionAttribute
in the schema.
executeUpdateExpression
Executes a custom update expression. This method will not automatically apply a version check, as the current state of the object being updated is not known.
Takes four parameters:
The expression to execute. Please refer to the documentation for the
@block65/dynamodb-expressions
package for guidance on creating update
expression objects.
The key of the item being updated.
The constructor for the class mapped to the table against which the expression
should be run. Must have a prototype with a table name accessible via a
property identified with the DynamoDbTable
symbol and a schema accessible
via a property identified with the DynamoDbSchema
symbol.
(Optional) An object specifying any of the following options:
condition
- A condition expression whose assertion must be satisfied in
order for the update operation to be executed. Please refer to the
documentation for the @block65/dynamodb-expressions
package for guidance
on creating condition expression objects.


Flareplots take specially formatted JSON files as input and produce interactive circular plots:
{ "edges":[ {"name1":"ARG135", "name2":"ASP134", "frames":[0,1,2, 4,5,6,7]}, {"name1":"ASP134", "name2":"TRP161", "frames":[ 2,3,4,5 ]}, {"name1":"TYR223", "name2":"ARG135", "frames":[ 2,3,4, 7]}, {"name1":"TYR223", "name2":"TYR306", "frames":[0,1, 3,4,5,6 ]}, {"name1":"TYR306", "name2":"VAL54", "frames":[ 1,2,3,4,5,6 ]} ] } |
Here ARG135 and ASP134 interact at times 0–2 and 4–7, and so on. It is also possible to introduce custom grouping of nodes (called trees), annotate nodes with colors (called tracks), and configure interactive controllers (time-slider or comparison tool). For details on how to generate your own flareplot see Flareplot input documentation.


Bamberg
2020-10-13
WARNING: < 5 °C
Temperatures drop as low as 0.3°C
between 01:00 and 3:00
Bamberg
2020-10-13
- 2020-10-14
DANGER: < 0 °C
Temperatures drop as low as -1.2°C
between 20:00 and 7:00
Bamberg
2020-10-14
- 2020-10-15
WARNING: < 5 °C
Temperatures drop as low as 1.1°C
between 23:00 and 1:00


Officials say at least 15 killed in attack in Thailand's restive south
BANGKOK: Suspected separatist insurgents stormed a security checkpoint in Thailand's Muslim-majority south and killed at least 15 people, including a police officer and many village defence volunteers, security officials said on Wednesday (Nov 6).

The attackers, in the province of Yala, also used explosives and scattered nails on roads to delay pursuers late on Tuesday night.
"This is likely the work of the insurgents," Colonel Pramote Prom-in, a regional security spokesman, told Reuters.
"This is one of the biggest attack in recent times."
There was no immediate claim of responsibility, however, as is common with such attacks.
A decade-old separatist insurgency in predominantly Buddhist Thailand's largely ethnic Malay-Muslim provinces of Yala, Pattani, and Narathiwat has killed nearly 7,000 people since 2004, says Deep South Watch, a group that monitors the violence.
The population of the provinces, which belonged to an independent Malay Muslim sultanate before Thailand annexed them in 1909, is 80 percent Muslim, while the rest of the country is overwhelmingly Buddhist.
Some rebel groups in the south have said they are fighting to establish an independent state.
Authorities arrested several suspects from the region in August over a series of small bombs detonated in Bangkok, the capital, although they have not directly blamed any insurgent group.
The main insurgency group, the Barisan Revolusi Nasional (BRN), denied responsibility for the Bangkok bombings, which wounded four people.
In August, the group told Reuters it had held a secret preliminary meeting with the government, but any step towards a peace process appeared to wither after the deputy prime minister rejected a key demand for the release of prisoners.


Welcome to Slick Nick's Bowling Arcade!
ROLL
NEXT FRAME?
ROLL
1
OF 2 READY
NEXT FRAME READY
PINS STANDING:
TOTAL POINTS THIS FRAME:
0
HITS:
0
CURRENT FRAME:
1
OF 10
ROLL COUNT:
0
GRAND TOTAL:
0


Symbol
Amount
Sell
Select your symbol.
Stocks


{% load static %}
So it's easy to find, the primary command is python main.py [opposing team code]
If your are the Cops, then you have to find the robbers before they rob the banks. If you are the Robbers, then you are responsible for for robbing the banks without getting caught.
Step 1. - Sign up your team below.
Step 2. - Find your team type and download the respective code from the links above.
Step 3. - Unzip the files. Open controller.py and change the TEAM_CODE to your team code. controller.py is the only file that you will have to edit.
Step 4. - Run the program against somebody else's code. To do this, find another team that has a different role than you (COPS vs. ROBBERS). Note their team code, as you will be playing against each other. Use the list below to help.
Step 5. - Each team should run the following command: python main.py [other team's code]
Step 6. - A browser tab should open with your game in view. Now you're playing cops and robbers!
| Team Name | Cops/Robbers | Team Code | Members |
|---|---|---|---|
| {{ team.name }} | {{ team.team_type }} | {{ team.code }} | {% for member in team.member_set.all %}{{member.name}}, {% endfor %} |


These CSS cubic-bezier timing functions are variables that can be used with CSS3 animations and transitions. The provided timing functions are the same as the jQuery UI demo: easing functions.
{% highlight scss %} @include transition(all, 5s, $ease-in-circ); {% endhighlight %}Many of the timing functions below may look the same in this demo, but in complex animations, they are intricately different.
$ease-in-quad
$ease-out-quad
$ease-in-out-quad
$ease-in-cubic
$ease-out-cubic
$ease-in-out-cubic
$ease-in-quart
$ease-out-quart
$ease-in-out-quart
$ease-in-quint
$ease-out-quint
$ease-in-out-quint
$ease-in-sine
$ease-out-sine
$ease-in-out-sine
$ease-in-expo
$ease-out-expo
$ease-in-out-expo
$ease-in-circ
$ease-out-circ
$ease-in-out-circ
$ease-in-back
$ease-out-back
$ease-in-out-back


Crimnal Records
Logout
|
About us
|
Back
Crimnal id
First name
Last name
Father's name
Address
Nature of crime
Date of birth
dd/mm/yy
Sex
Male
Female
Complextion
very fair
dark
fair
Height
cms
Weight
kgs
Identification mark
Privious crime record
District
Hyderabad
East Godawadi
West Godawadi
Krishna
Vijaywada
Vizaq
Guntur
Shrikakulam
Neloor
Chitoor
F.I.R. No.
Area of opration
Upload image


16 February 2013 - The United Kingdom (UK) has informed WHO of another confirmed case of infection with the novel coronavirus (NCoV). This is the third case confirmed in the country this month and is in the same family cluster as the two recently confirmed cases.
The latest confirmed case does not have recent travel history outside the UK. The case is recovering from mild respiratory illness and is currently well.
The confirmation with NCoV in this case with no recent travel history indicates that infection was acquired in the UK. Although this new case offers further indications of person-to-person transmission, no sustained person-to-person transmission has been identified.
The Health Protection Agency (HPA) is following up on all close contacts who may have been exposed to the recently confirmed cases.
As of 16 February 2013, WHO has been informed of a total of 12 confirmed cases of human infection with NCoV, including five deaths.
Based on the current situation and available information, WHO encourages all Member States to continue their surveillance for severe acute respiratory infections (SARI) and to carefully review any unusual patterns. Testing for the new coronavirus should be considered in patients with unexplained pneumonias, or in patients with unexplained severe, progressive or complicated respiratory illness not responding to treatment.
Any clusters of SARI or SARI in healthcare workers should be thoroughly investigated, regardless of where in the world they occur.
New cases and clusters of the NCoV should be reported promptly both to national health authorities and to WHO.
WHO does not advise special screening at points of entry with regard to this event nor does it recommend that any travel or trade restrictions be applied.
WHO continues to closely monitor the situation.


| Name | Type | Description |
|---|---|---|
userName |
string |
The username for the user. |
name.givenName |
string |
The first name of the user. |
name.lastName |
string |
The last name of the user. |
emails |
array |
List of user emails. |
externalId |
string |
This identifier is generated by the SAML provider, and is used as a
unique ID by the SAML provider to match against a GitHub user. You can
find the externalID for a user either at the SAML provider,
or using the
List SCIM provisioned identities
endpoint and filtering on other known attributes, such as a user's
GitHub username or email address.
|
id |
string |
Identifier generated by the GitHub SCIM endpoint. |
active |
boolean |
Used to indicate whether the identity is active (true) or should be deprovisioned (false). |
Note: Endpoint URLs for the SCIM API are case sensitive. For example, the
first letter in the Users
endpoint must be capitalized:
GET /scim/v2/organizations/:org/Users/:scim_user_id


CGA Student Projects
Sample
Contact
About
Home
Instructor Login
Upload Project
Preference
Class
Class 1
Class 2
Class 3
Preference
Student
Neil
Andrew
Simo
Lindsay
Jake
Mason
Private Project
Featured Project
Project Title
Project Description
Project Cover Image
Project Files
Submit


Jamie Lynn Spears will make a return to Nickelodeon and reunite with Zoey 101 cast
by Ciara WalshJamie Lynn Spears is returning to Nickelodeon.
Before you think a Zoey 101 reunion is in the works, it's not like that. However, her former co-stars will be involved.
As well as the beloved Zoey, Jamie also used to play the character of Thelma Stump on the original All That. The bacon-loving bodyguard is coming back for a sketch in the revival of the show where she will be joined by her Pacific Coast Academy gang.
It's not uncommon for the Zoey 101 cast to have reunions, and over the years we've seen many on social media - Jamie Lynn has always been missing, though.
Recently, Spears linked up with Paul Butcher, Sean Flynn, Kristin Herrera, Chris Massey, Erin Sanders and Matthew Underwood, and it gave us total nostalgia.
The creator of Zoey 101, Dan Schneider, gave us goosebumps when he shared a picture of them all back together again.
He wrote: "Some Zoey 101 buzz got me talking with my good friend Sean Flynn (Chase) and within about 72 hours, this happened! I'm not sure how I feel about my new glasses, but that was one of the most fun nights ever. A wonderful cast of kids then, and even better all grown up! Much love/respect for all of you! Jamie Lynn is busy shooting her new show in Atlanta. We missed you, congrats.
According to Entertainment Weekly, the sketch will be airing in early 2020 and we can't wait to see the gang all back together again.


| fixDependence {mgcv} | R Documentation |
Identifies columns of a matrix X2
which are linearly
dependent on columns of a matrix X1
. Primarily of use in setting up
identifiability constraints for nested GAMs.
fixDependence(X1,X2,tol=.Machine$double.eps^.5,rank.def=0,strict=FALSE)
X1 |
A matrix. |
X2 |
A matrix, the columns of which may be partially linearly
dependent on the columns of |
tol |
The tolerance to use when assessing linear dependence. |
rank.def |
If the degree of rank deficiency in |
strict |
if |
The algorithm uses a simple approach based on QR decomposition: see Wood (2017, section 5.6.3) for details.
A vector of the columns of X2
which are linearly dependent on
columns of X1
(or which need to be deleted to acheive independence and full rank
if strict==FALSE
). NULL
if the two matrices are independent.
Simon N. Wood<EMAIL_ADDRESS>Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press.
library(mgcv) n<-20;c1<-4;c2<-7 X1<-matrix(runif(n*c1),n,c1) X2<-matrix(runif(n*c2),n,c2) X2[,3]<-X1[,2]+X2[,4]*.1 X2[,5]<-X1[,1]*.2+X1[,2]*.04 fixDependence(X1,X2) fixDependence(X1,X2,strict=TRUE)


TObjectTagEvent = procedure(Sender: TObject; Panel: ThvPanel;
const Attributes, Params: TStringList; var WantPanel: boolean) of Object;
The TObjectTagEvent type is the type for the OnObjectTag event. This event occurs when an <object> tag is encountered at document load time.
Senderthe THtmlViewer displaying the ThvPanel.
Panelthe ThvPanel (similar to TPanel) created for the display. Its Name property has been assigned to the NAME attribute value and its Height and Width properties have been assigned the values of the HEIGHT and WIDTH attributes.
Attributesa TStringList containing all the attributes found in the <object> tag. Individual attributes may be accessed using TStringList's Values property, as:
ClassId := Attributes.Values['classid'];
Paramsa TStringList containing the Name and Value attributes of all the <param> tags that immediately follow the <object> tag.
WantPanela boolean which should be set by the user. Setting WantPanel True indicates the ThvPanel is to be used. If, for some reason, the program can't make use of the ThvPanel, this parameter should be set to False and the panel will be free'd.
Usage Notes:
The two TStringLists are free'd by THtmlViewer immediately on return from the event. Any data needed after the event should be saved in the event handler.
If WantPanel is returned True, then HTML between the <object> and </object> tags is ignored. If WantPanel is False, then HTML following the <object> and <param> tags is displayed and acted on. It is possible to have a second <object> tag here providing a second choice for display.
The OnPanelPrint and OnPanelDestroy events will also be initiated by the ThvPanel created for the <object> tag.
See also:


Don't Expect A Fully Autonomous Mercedes Anytime Soon
The German automaker has learned that self driving cars are hard.
by Ian WrightWe've talked before about how start-ups needing investment have been massively overestimating how quickly self-driving cars will become a mass-market reality. Add to that an overenthusiastic media, and you now have a general public that thinks their cars will be driving them to work early next decade. The major automakers haven't been immune to this as they will have to be in the game one day, but Mercedes' parent company, Daimler, has just realized it's going to be later rather than sooner. The company is also questioning the reality of a business model based around "robotaxis."
Mercedes
"There has been a reality check setting in here," Daimler AG Chief Executive Ola Kaellenius told journalists in a report from Reuters.
The idea of fleets of autonomous taxis ferrying people around cities is starting to become the tech industry's equivalent of turning lead into gold. The race started with Google back in 2012, but the vehicles will need to operate flawlessly day in and day out, all year, every year. Guiding cars around limited environments has become possible in public settings, and is relatively safe now. Still, autonomous vehicles need to be able to account for everything from the weather to random pedestrians, joggers, and cyclists. However, we've already seen accidents, including a self-driving Uber prototype kill a pedestrian in Arizona.
You Might Also Like
Kaellenius spoke about how Daimler's engineering team has found it more challenging than expected to develop self-driving cars. That will boil down to the last ten percent of development and software and hardware being able to anticipate the movement of anything that moves around the cars, no matter how random.
There's also the business model of autonomous taxis to consider. "The full-scale deployment would tie up a lot of capital with some uncertainties around the earnings potential," Kaellenius said. "At this juncture, we said to be the first one, does not make sense."
Considering the amount of money Daimler has already sunk into its autonomous projects, that's quite a blow. Executives will just have to wait longer before firing their S-Class chauffeur.


LaplASCIIan is a small utility that converts Animated Gifs into Animated SVGs.
URL: - Text Coarseness: - Framerate: - Fill Factor:The source code to LaplASCIIan is available under the MIT License at Github.
LaplASCIIan is based on OpenCV, PIL, ImageIO, and Skeleton.css.


Should I add a ‘success’ class to an input element or some other part of my form? How to show an error indicator during live validation? How to manage a few different ways of validation?
Lazy Load is a great idea, so it’s overused frequently. Do you remember that situation when you scrolled down quickly to get to the middle part and the picture wasn’t there yet?
I enjoy looking at craftsmen at work. You can learn from it by seeing the process, tricks of the trade, work on details that most people won’t even notice. It doesn’t matter that it’s not my field. It’s about that detail-oriented thinking.
Video made by Wranglerstar.
Here are few famous quotes related to creative work, by Max Planck:
A new scientific truth does not triumph by convincing its opponents and making them see the light, but rather because its opponents eventually die, and a new generation grows up that is familiar with it.
Contrast is an essential concept when it comes to UI usability. It solves more problems than you think.
Lets take coins as an example. When it comes to look: at first glance you see differences in size, color (types of metals) and visual patterns. Feel in hand is also important. Some seem heavier than others. You can detect size by touch too. Each of these features is useful in some situation.
A page with a final “buy” button or a credit card data form is a huge friction trigger. It’s the moment when you, as a buyer, think again about spendings and transaction safety. The fact that you’re about to say bye to some of your money triggers that.
My Jekyll site was way too slow recently. It took around 1 minute per regeneration and much more for starting a server.
I made some improvement by excluding a few files from the conversion.


Emergency services rescue woman stuck in mud under bridge
She was taken to hospital
by Jamie HawkinsEmergency services rescued a woman after she became stuck in mud under a bridge in Barnstaple.
Police, fire crews and paramedics were all called to Barnstaple Long Bridge at 7.15pm on Monday following reports that a person was stuck in the mud.
On arrival, the woman in her 50s was quickly located and then assisted from the mud by two firefighters wearing dry suits, to the safety of a waiting ambulance.
She was taken to hospital after the rescue.
A police spokesperson said: "Police were called at around 7.10pm yesterday (Monday November 18) with a report that a woman had become stuck in mud under a bridge near the Seven Brethren Industrial Estate in Barnstaple.
"Officers attended the scene along with ambulance and fire services. The woman, aged in her 50s, was helped from the mud by firefighters. She was taken to hospital as a precaution."


Get started with AngularJS projects using Foundation 6, Sass, and a gulp build system. This boilerplate puts a twist on Josh David Miller's ngbp.
Like any good boilerplate you should be able to get started building apps quickly.
Automate and enhance your workflow with gulp. With just a few short commands you'll be up and running.
Like ngbp that inspired this boilerplate ngSassFoundation supports separation of concerns.
AngularJS is what HTML would have been, had it been designed for building web-apps. Learn More.
CSS with superpowers. Sass is the most mature, stable, and powerful professional grade CSS extension language in the world. Learn More.
Foundation. The most advanced responsive front-end framework in the world. Learn More.
Uses Angular Foundation 6 from pinecone. A port of the AngularUI team's excellent angular-bootstrap project for use in the Foundation framework. Learn More.
Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the power of CSS. Learn More.


match¶
Note
Only applies to the @nplot
command.
Specifies how to match compound stimuli in the stimulus-response history to the @nplot
input.
If the simulation does not contain any compound stimuli, this parameter has no effect.
Syntax¶
match = exact
match = subset
Default¶
subset
Description¶
match = subset
will make @nplot
count compound stimuli in the stimulus-response history that are supersets of the
@nplot
input.
match = exact
will make @nplot
count only compound stimuli in the stimulus-response history that exactly matches the
@nplot
input.
Example¶
If the history is
e1 -> b1 -> e1,e2 -> b2 -> e1,e2,e3 -> b3
and
match = subset
then
@nplot e1
will count both e1, (e1,e2), and (e1,e2,e3) in the plot, and
@nplot e1,e2
will count both (e1,e2) and (e1,e2,e3).
Example¶
If the history is
e1 -> b1 -> e1,e2 -> b2 -> e1,e2,e3 -> b3
and
match = exact
then
@nplot e1
will count only e1, and
@nplot e1,e2
will count only (e1, e2).


We invited you to celebrate our Happy birthday
A birthday is the most special day in one’s life. Enjoy it to the fullest.
The sun is shining more brightly today as a way to wish you happy birthday.
I wish you an outstanding and fabulous birthday
Let this day be full of joy and celebration
I hope that today is the beginning of another wonderful year for you.
Happy birthday to the most wonderful person on earth!
Another year has passed. May you all your wishes and dreams come true. Have a happy birthday!
Best wishes for a joyous day filled with love and laughter. Happy birthday.
Don’t look for a heaven in the sky. Make your own heaven right here.
Birthday!! Hope your day is filled with lots of love and laughter! May all your birthday wishes come true.
Happiness is not a reward; it is your gift. Happy birthday.


public class Dolphin
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
(package private) double |
accelerationY
accelerationY - double vertical acceleration of the dolphin
|
(package private) double |
angle
angle - double angle of the dolphin
|
(package private) double |
deltaT
deltaT - double change in time between each frame
|
(package private) double |
distanceX
distanceX - double distance the dolphin has travelled horizontally
|
(package private) double |
hitBoxAngleOffset
hitBoxAngleOffset - double offset from the dolphin's angle to the hitbox's angle
|
(package private) double |
hitBoxDistanceCenter
hitBoxDistanceCenter - double distance from the dolphin's point of rotation to the hitbox
|
(package private) double |
hitBoxRadius
hitBoxRadius - double radius of the hitbox
|
(package private) double |
hitBoxX
hitBoxX - double x position of the hitbox
|
(package private) double |
hitBoxY
hitBoxY - double y position of the hitbox
|
(package private) java.awt.image.BufferedImage |
image
image - BufferedImage to draw the dolphin picture
|
(package private) Net |
net
net - Net that the dolphin is holding to catch garbage
|
(package private) double |
offsetX
offsetX - double offset from the origin of where to draw the dolphin horizontally
|
(package private) double |
offsetY
offsetY - double offset from the origin of where to draw the dolphin vertically
|
(package private) java.awt.geom.AffineTransform |
rotationTransformation
rotationTransformation - AffineTransform to rotate the image
|
(package private) double |
velocityX
velocityX - double velocity of the dolphin horizontally
|
(package private) double |
velocityY
velocityY - double velocity of the dolphin vertically
|
(package private) double |
x
x - double x position
|
(package private) double |
y
y - double y position
|
| Constructor and Description |
|---|
Dolphin(double x,
double y)
Dolphin constructor creates a Dolphin object and initializes global variables.
|
| Modifier and Type | Method and Description |
|---|---|
void |
move()
Moves the dolphin using physics.
|
double x
double y
double angle
double velocityX
double velocityY
double accelerationY
double distanceX
double deltaT
double offsetX
double offsetY
java.awt.image.BufferedImage image
java.awt.geom.AffineTransform rotationTransformation
double hitBoxX
double hitBoxY
double hitBoxRadius
double hitBoxDistanceCenter
double hitBoxAngleOffset
Net net
public Dolphin(double x, double y)
Local variables:
e IOException caught for reading images from files
Try Catch blocks:
1st Try Catch used to catch if the image isn't found so the program does not crash.
x
- double x position of the dolphiny
- double y position of the dolphinpublic void move()
Local variables:
fractionWayDown double fraction representation of how far below the soft floor the dolphin is.
Conditional Statements:
1st conditional statement used to alter the acceleration to increase so it jumps quicker than it dives.
2nd conditional statement used to alter the acceleration to increase when the user clicks the space bar (manual dive).
3rd conditional statement used to rotate the dolphin when it is near the bottom so it does not hit
1st conditional statement in 3rd conditional statement used to reset the dolphin to the bottom if it is one pixel past so it resets to the value of the bottom


Sample content
This is a sample customized content using Pure.css in a dockerized Nginx version.
v.1
This is a sample customized content using Pure.css in a dockerized Nginx version.
v.1
Now the project is ready for Jenkins pipeline
v.2.1


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Makes 12 mini tartlets
These tiny tarts are a doddle to make. They are best eaten fresh from the oven.
For this recipe you will need a mini muffin tin.
Preheat the oven to 200C/180C Fan/Gas 6.
For the pastry, use a pizza cutter to cut the pastry into 24 x 5cm/2in squares. Brush one side of all the squares lightly with melted butter. Place one square on top of another at an angle, buttered-side-up, to make a star shape, then push into a hole of a mini muffin tray buttered-side down. Repeat until all the squares are used up.
Bake for 6–8 minutes, or until golden-brown and crisp. Remove from tin and leave to cool on a wire rack.
Meanwhile, for the prawn filling, heat the sesame oil in a large frying pan or wok. Add the garlic, spring onions and ginger, and mix. Add the carrot and stir-fry for 2 minutes. Add the prawns and stir-fry until they turn pink. Stir in the Chinese five-spice.
Add the mangetout, pak choi and beansprouts and stir-fry for 2–3 minutes, or until all the vegetables are just tender. Stir in the soy sauce, then remove from the heat.
To assemble the tarts, place the tartlets on the serving board and spoon the prawn filling into the pastry cases. Garnish with fresh coriander.


HotNewHipHop tweeted out a link to Cannon’s diss record along with the tweet “Nick Cannon isn’t playing around with Eminem.”  His lawyers didn’t want that one out! They already on my line 😂.” Take a look above.
Original 12/09/2019 1:11pm:
Suge Knight hopped on Nick Cannon's official Eminem diss track, "The Invitation," which he dropped today (December 9). The Hitmaka-produced track also features Hitman Holla, Charlie Clips and Prince Eazy.
Suge Knight starts out the track in a phone call to Nick that was recorded from jail, where he states, "You know I don't do no talking, but Nick is family," adding "Eminem's a b*tch!"


{% extends "drawquest/dqbase.html" %} {% block viewport_meta %} {% endblock %} {% block extra_css %} {% endblock %} {% block body %}
We've e-mailed you your username and instructions for resetting your password to the e-mail address you submitted. You should be receiving it shortly.


- save(ConnectedApp) - Method in class edu.cnm.deepdive.timemanager.service.ConnectedAppRepository
-
saves connected apps
- save(Notification) - Method in class edu.cnm.deepdive.timemanager.service.NotificationRepository
-
saves an edited or new notification
- save(Timeframe) - Method in class edu.cnm.deepdive.timemanager.service.TimeframeRepository
-
this saves a new or edited timeframe.
- selectAll() - Method in interface edu.cnm.deepdive.timemanager.model.dao.ConnectedAppDao
-
this Query returns all apps and sorts them by name
- selectAll() - Method in interface edu.cnm.deepdive.timemanager.model.dao.NotificationDao
-
this Query gathers and returns all notifications.
- selectAll() - Method in interface edu.cnm.deepdive.timemanager.model.dao.TimeframeDao
-
this Query gathers all timeframes and orders the ny their ids.
- selectById(long) - Method in interface edu.cnm.deepdive.timemanager.model.dao.ConnectedAppDao
-
this Query returns all apps and sorts them by id.
- selectById(long) - Method in interface edu.cnm.deepdive.timemanager.model.dao.NotificationDao
-
this Query gathers and returns notifications by their id.
- selectById(long) - Method in interface edu.cnm.deepdive.timemanager.model.dao.TimeframeDao
-
this Query selets all timiframes and returns them by their id.
- selectByTimeframe(long) - Method in interface edu.cnm.deepdive.timemanager.model.dao.NotificationDao
-
this Query gathers and returns notifications that were blocked during specific timeframes.
- setAppName(String) - Method in class edu.cnm.deepdive.timemanager.model.entity.ConnectedApp
-
- setConnectedAppId(long) - Method in class edu.cnm.deepdive.timemanager.model.entity.Timeframe
-
- setContext(Application) - Static method in class edu.cnm.deepdive.timemanager.service.GoogleSignInService
-
- setContext(Application) - Static method in class edu.cnm.deepdive.timemanager.service.TimeManagerDatabase
-
- setEnd(LocalTime) - Method in class edu.cnm.deepdive.timemanager.model.entity.Timeframe
-
- setId(Long) - Method in class edu.cnm.deepdive.timemanager.model.entity.ConnectedApp
-
- setId(long) - Method in class edu.cnm.deepdive.timemanager.model.entity.Notification
-
- setId(Long) - Method in class edu.cnm.deepdive.timemanager.model.entity.Timeframe
-
- setPermissionsChecked(boolean) - Method in class edu.cnm.deepdive.timemanager.viewModel.MainViewModel
-
- setStart(LocalTime) - Method in class edu.cnm.deepdive.timemanager.model.entity.Timeframe
-
- setSummary(String) - Method in class edu.cnm.deepdive.timemanager.model.entity.Notification
-
- setTimeframeId(long) - Method in class edu.cnm.deepdive.timemanager.model.entity.Notification
-
- signOut() - Method in class edu.cnm.deepdive.timemanager.service.GoogleSignInService
-
signs the user out.
- startSignIn(Activity, int) - Method in class edu.cnm.deepdive.timemanager.service.GoogleSignInService
-
starts the sign in process.


Check your entries to make sure they are correct and that you have filled in everything you need. This submission will be graded and you will not be able to make any corrections, updates or resubmission.  Click the second button to submit your karyotype


Eddy is an instant communication application where you can exchange audio, text and video messages. ... On Eddy, you can create and participate in servers, which bring together people with a common subject. These servers can have up to 250 users, and an administrator.
This text is styled with some of the text formatting properties. The heading uses the text-align, text-transform, and color properties. The paragraph is indented, aligned, and the space between characters is specified. The underline is removed from this colored "Try it Yourself" link.


Genesis 27:6
And Rebekah spake unto Jacob her son, saying, Behold, I heard thy father speak unto Esau thy brother, saying,


|
You are in: Home > Technology
> Digital
Video > WMV-9 Video Encoding
|
WMV-9 Video Encoding
WMV-9 video coding is Microsoft's offering,
capable of efficient coding of HD
video |
WMV-9 (Windows Media Video - 9 or VC-9) is a new video
codec developed by Microsoft and incorporates the VC-9 codec.
WMV-9 is claimed to ensure unmatched video quality at any bit rate
and a WMV-9 video file is typically only half the size of an MPEG-4
file of comparable quality.
Windows Media Video 9 Professional (WMV-9 Pro) uses profiles at
higher bit rates and resolutions, enabling storage and delivery of
HD video at 720p resolution (1280 x 720 pixels per frame), with 5.1
digital discrete channel surround-sound, on a single standard
DVD.
WMV-9 can use variable bit rate encoding for optimal quality at a
lower average file size. WMV-9 also supports a peak-constrained VBR
mode, enabling the user to specify the maximum bit rate allowed, and
is therefore suitable for low-bit-rate connections and devices such
as DVD players.
WMV HD
WMV HD brings a whole new level of entertainment to high
definition capable Windows XP-based PCs. With support for 720p and
1080p video WMV HD is capable of producing 6 times the quality of
today's standard definition DVDs. But the bit rate needed is two to
three times lower than MPEG-2 for equivalent quality.
If the decision to include WMV HD as one of the mandatory video
codecs for HD
DVD is confirmed, then it will allow a high quality full length
movie in 1080 line HD video to be stored on a single layer HD DVD
and leave room for extras. Bit rates are likely to be less
than 10 Mb/s and possibly only 8 Mb/s but still offer high quality,
equivalent to MPEG-2 at 20 to 25 Mb/s.
WMV HD requires a lot of processing power to encode and
decode. A software decoder needs a Windows PC with a 2.4 GHz
processor for 720p video and a 3 GHz processor for 1080p with 5.1
channel surround sound.
For more information on WMV-9 and WMV HD see Microsoft, where sample WMV HD
clips can be downloaded. |


Sign in now to meet and chat with people around you!
Sign in with
facebook


--- layout: page title: About header-img: "img/about-bg.png" ---
Born and raised is beautiful Seattle, WA but currently living the California life in sunny (and blazing hot) Sacramento, CA! With 10 years of working in the fitness industry, software engineering is certainly a new experience, but one I am all too excited to go on!


M-T-A
Oooppppsss!!!
The page you are looking for was not found.
Click here to go back home.
Error message - <%= error.message %>


typealias ResString = String
This type is used for accessing resources with CommonJS require function.
e.g. require("./img/picture.png")


jarsigner(1) jarsigner(1) Name jarsigner - JAR Signing and Verification Tool Generates signatures for Java ARchive (JAR) files, and verifies the sig‐ natures of signed JAR files. SYNOPSIS jarsigner [ options ] jar-file alias jarsigner -verify [ options ] jar-file [alias...] The jarsigner -verify command can take zero or more keystore alias names after the jar filename. When specified, jarsigner will check that the certificate used to verify each signed entry in the jar file matches one of the keystore aliases. The aliases are defined in the keystore speci‐ fied by -keystore, or the default keystore. DESCRIPTION The jarsigner tool is used for two purposes: 1. to sign Java ARchive (JAR) files, and 2. to verify the signatures and integrity of signed JAR files. The JAR feature enables the packaging of class files, images, sounds, and other digital data in a single file for faster and easier distribution. A tool named jar(1) enables developers to produce JAR files. (Technically, any zip file can also be considered a JAR file, although when created by jar or processed by jarsigner, JAR files also contain a META-INF/MANI‐ FEST.MF file.) A digital signature is a string of bits that is computed from some data (the data being "signed") and the private key of an entity (a person, company, etc.). Like a handwritten signature, a digital signature has many useful characteristics: o Its authenticity can be verified, via a computation that uses the public key corresponding to the private key used to generate the signature. o It cannot be forged, assuming the private key is kept secret. o It is a function of the data signed and thus can't be claimed to be the signature for other data as well. o The signed data cannot be changed; if it is, the signature will no longer verify as being authentic. In order for an entity's signature to be generated for a file, the entity must first have a public/private key pair associated with it, and also one or more certificates authenticating its public key. A certificate is a digitally signed statement from one entity, saying that the public key of some other entity has a particular value. jarsigner uses key and certificate information from a keystore to gener‐ ate digital signatures for JAR files. A keystore is a database of private keys and their associated X.509 certificate chains authenticating the corresponding public keys. The keytool(1) utility is used to create and administer keystores. jarsigner uses an entity's private key to generate a signature. The signed JAR file contains, among other things, a copy of the certificate from the keystore for the public key corresponding to the private key used to sign the file. jarsigner can verify the digital signature of the signed JAR file using the certificate inside it (in its signature block file). jarsigner can generate signatures that include a timestamp, thus enabling systems/deployer (including Java Plug-in) to check whether the JAR file was signed while the signing certificate was still valid. In addition, APIs will allow applications to obtain the timestamp information. At this time, jarsigner can only sign JAR files created by the SDK jar(1) tool or zip files. (JAR files are the same as zip files, except they also have a META-INF/MANIFEST.MF file. Such a file will automatically be cre‐ ated when jarsigner signs a zip file.) The default jarsigner behavior is to sign a JAR (or zip) file. Use the -verify option to instead have it verify a signed JAR file. Keystore Aliases All keystore entities are accessed via unique aliases. When using jarsigner to sign a JAR file, you must specify the alias for the keystore entry containing the private key needed to generate the sig‐ nature. For example, the following will sign the JAR file named "MyJARFile.jar", using the private key associated with the alias "duke" in the keystore named "mystore" in the "working" directory. Since no out‐ put file is specified, it overwrites MyJARFile.jar with the signed JAR file. jarsigner -keystore /working/mystore -storepass <keystore password> -keypass <private key password> MyJARFile.jar duke Keystores are protected with a password, so the store password must be specified. You will be prompted for it if you don't specify it on the command line. Similarly, private keys are protected in a keystore with a password, so the private key's password must be specified, and you will be prompted for it if you don't specify it on the command line and it isn't the same as the store password. Keystore Location jarsigner has a -keystore option for specifying the URL of the keystore to be used. The keystore is by default stored in a file named .keystore in the user's home directory, as determined by the user.home system prop‐ erty. On Solaris systems user.home defaults to the user's home directory. Note that the input stream from the -keystore option is passed to the KeyStore.load method. If NONE is specified as the URL, then a null stream is passed to the KeyStore.load method. NONE should be specified if the KeyStore is not file-based, for example, if it resides on a hardware token device. Keystore Implementation The KeyStore class provided in the java.security package supplies well-defined interfaces to access and modify the information in a key‐ store. It is possible for there to be multiple different concrete imple‐ mentations, where each implementation is that for a particular type of keystore. Currently, there are two command-line tools that make use of keystore implementations (keytool and jarsigner), and also a GUI-based tool named Policy Tool. Since KeyStore is publicly available, Java 2 SDK users can write additional security applications that use it. There is a built-in default implementation, provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format) named "JKS". It protects each private key with its individ‐ ual password, and also protects the integrity of the entire keystore with a (possibly different) password. Keystore implementations are provider-based. More specifically, the application interfaces supplied by KeyStore are implemented in terms of a "Service Provider Interface" (SPI). That is, there is a corresponding abstract KeystoreSpi class, also in the java.security package, which defines the Service Provider Interface methods that "providers" must implement. (The term "provider" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.) Thus, to provide a keystore implemen‐ tation, clients must implement a provider and supply a KeystoreSpi sub‐ class implementation, as described in How to Implement a Provider for the Java Cryptography Architecture @ http://docs.oracle.com/javase/7/docs/technotes/guides/secu‐ rity/crypto/HowToImplAProvider.html. Applications can choose different types of keystore implementations from different providers, using the "getInstance" factory method supplied in the KeyStore class. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private keys in the keystore and the integrity of the keystore itself. Keystore implementations of different types are not compatible. keytool works on any file-based keystore implementation. (It treats the keystore location that is passed to it at the command line as a filename and converts it to a FileInputStream, from which it loads the keystore information.) The jarsigner and policytool tools, on the other hand, can read a keystore from any location that can be specified using a URL. For jarsigner and keytool, you can specify a keystore type at the command line, via the -storetype option. For Policy Tool, you can specify a key‐ store type via the "Change Keystore" command in the Edit menu. If you don't explicitly specify a keystore type, the tools choose a key‐ store implementation based simply on the value of the keystore.type prop‐ erty specified in the security properties file. The security properties file is called java.security, and it resides in the SDK security proper‐ ties directory, java.home/lib/security, where java.home is the runtime environment's directory (the jre directory in the SDK or the top-level directory of the Java 2 Runtime Environment). Each tool gets the keystore.type value and then examines all the cur‐ rently-installed providers until it finds one that implements keystores of that type. It then uses the keystore implementation from that provider. The KeyStore class defines a static method named getDefaultType that lets applications and applets retrieve the value of the keystore.type prop‐ erty. The following line of code creates an instance of the default key‐ store type (as specified in the keystore.type property): KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); The default keystore type is "jks" (the proprietary type of the keystore implementation provided by Sun). This is specified by the following line in the security properties file: keystore.type=jks Note: Case doesn't matter in keystore type designations. For example, "JKS" would be considered the same as "jks". To have the tools utilize a keystore implementation other than the default, change that line to specify a different keystore type. For exam‐ ple, if you have a provider package that supplies a keystore implementa‐ tion for a keystore type called "pkcs12", change the line to keystore.type=pkcs12 Note that if you us the PKCS#11 provider package, you should refer to the KeyTool and JarSigner @ http://docs.oracle.com/javase/7/docs/technotes/guides/secu‐ rity/p11guide.html#KeyToolJarSigner section of the Java PKCS#11 Reference Guide for details. Supported Algorithms By default, jarsigner signs a JAR file using one of the following: o DSA (Digital Signature Algorithm) with the SHA1 digest algorithm o RSA algorithm with the SHA256 digest algorithm. o EC (Elliptic Curve) cryptography algorithm with the SHA256 with ECDSA (Elliptic Curve Digital Signature Algorithm). That is, if the signer's public and private keys are DSA keys, jarsigner will sign the JAR file using the "SHA1withDSA" algorithm. If the signer's keys are RSA keys, jarsigner will attempt to sign the JAR file using the "SHA256withRSA" algorithm. If the signer's keys are EC keys, jarsigner will sign the JAR file using the "SHA256withECDSA" algorithm. These default signature algorithms can be overridden using the -sigalg option. The Signed JAR File When jarsigner is used to sign a JAR file, the output signed JAR file is exactly the same as the input JAR file, except that it has two additional files placed in the META-INF directory: o a signature file, with a .SF extension, and o a signature block file, with a .DSA, .RSA, or .EC extension. The base file names for these two files come from the value of the -sig‐ File option. For example, if the option appears as -sigFile MKSIGN The files are named "MKSIGN.SF" and "MKSIGN.DSA". If no -sigfile option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not allowed in a signature file name, each such character is converted to an underscore ("_") char‐ acter in forming the file name. Legal characters include letters, digits, underscores, and hyphens. The Signature (.SF) File A signature file (the .SF file) looks similar to the manifest file that is always included in a JAR file when jarsigner is used to sign the file. That is, for each source file included in the JAR file, the .SF file has three lines, just as in the manifest file, listing the following: o the file name, o the name of the digest algorithm used (SHA), and o a SHA digest value. In the manifest file, the SHA digest value for each source file is the digest (hash) of the binary data in the source file. In the .SF file, on the other hand, the digest value for a given source file is the hash of the three lines in the manifest file for the source file. The signature file also, by default, includes a header containing a hash of the whole manifest file. The presence of the header enables verifica‐ tion optimization, as described in JAR File Verification. The Signature Block File The .SF file is signed and the signature is placed in the signature block file. This file also contains, encoded inside it, the certificate or cer‐ tificate chain from the keystore which authenticates the public key cor‐ responding to the private key used for signing. The file has the exten‐ sion .DSA, .RSA, or .EC depending on the digest algorithm used. Signature Timestamp jarsigner tool can generate and store a signature timestamp when signing a JAR file. In addition, jarsigner supports alternative signing mecha‐ nisms. This behavior is optional and is controlled by the user at the time of signing through these options: o -tsa url o -tsacert alias o -altsigner class o -altsignerpath classpathlist Each of these options is detailed in the Options section below. JAR File Verification A successful JAR file verification occurs if the signature(s) are valid, and none of the files that were in the JAR file when the signatures were generated have been changed since then. JAR file verification involves the following steps: 1. Verify the signature of the .SF file itself. That is, the verification ensures that the signature stored in each signature block (.DSA) file was in fact generated using the private key corresponding to the public key whose certificate (or certifi‐ cate chain) also appears in the .DSA file. It also ensures that the signature is a valid signature of the corresponding signature (.SF) file, and thus the .SF file has not been tampered with. 2. Verify the digest listed in each entry in the .SF file with each corresponding section in the manifest. The .SF file by default includes a header containing a hash of the entire manifest file. When the header is present, then the verifi‐ cation can check to see whether or not the hash in the header indeed matches the hash of the manifest file. If that is the case, verification proceeds to the next step. If that is not the case, a less optimized verification is required to ensure that the hash in each source file information section in the .SF file equals the hash of its corresponding section in the manifest file (see The Signature (.SF) File). One reason the hash of the manifest file that is stored in the .SF file header may not equal the hash of the current manifest file would be because one or more files were added to the JAR file (using the jar tool) after the signature (and thus the .SF file) was generated. When the jar tool is used to add files, the manifest file is changed (sections are added to it for the new files), but the .SF file is not. A verification is still considered successful if none of the files that were in the JAR file when the signature was generated have been changed since then, which is the case if the hashes in the non-header sections of the .SF file equal the hashes of the corresponding sections in the manifest file. 3. Read each file in the JAR file that has an entry in the .SF file. While reading, compute the file's digest, and then compare the result with the digest for this file in the manifest section. The digests should be the same, or verification fails. If any serious verification failures occur during the verification process, the process is stopped and a security exception is thrown. It is caught and displayed by jarsigner. Multiple Signatures for a JAR File A JAR file can be signed by multiple people simply by running the jar‐ signer tool on the file multiple times, specifying the alias for a dif‐ ferent person each time, as in: jarsigner myBundle.jar susan jarsigner myBundle.jar kevin When a JAR file is signed multiple times, there are multiple .SF and .DSA files in the resulting JAR file, one pair for each signature. Thus, in the example above, the output JAR file includes files with the following names: SUSAN.SF SUSAN.DSA KEVIN.SF KEVIN.DSA Note: It is also possible for a JAR file to have mixed signatures, some generated by the JDK 1.1 javakey tool and others by jarsigner. That is, jarsigner can be used to sign JAR files already previously signed using javakey. OPTIONS The various jarsigner options are listed and described below. Note: o All option names are preceded by a minus sign (-). o The options may be provided in any order. o Items in italics (option values) represent the actual values that must be supplied. o The -keystore, -storepass, -keypass, -sigfile, -sigalg, -digestalg, and -signedjar options are only relevant when signing a JAR file, not when verifying a signed JAR file. Similarly, an alias is only specified on the command line when signing a JAR file. -keystore url Specifies the URL that tells the keystore location. This defaults to the file .keystore in the user's home directory, as determined by the "user.home" system property. A keystore is required when signing, so you must explicitly specify one if the default keystore does not exist (or you want to use one other than the default). A keystore is not required when verifying, but if one is specified, or the default exists, and the -verbose option was also specified, additional information is output regarding whether or not any of the certificates used to verify the JAR file are contained in that keystore. Note: the -keystore argument can actually be a file name (and path) specification rather than a URL, in which case it will be treated the same as a "file:" URL. That is, -keystore filePathAndName is treated as equivalent to -keystore file:filePathAndName If the Sun PKCS#11 provider has been configured in the java.secu‐ rity security properties file (located in the JRE's $JAVA_HOME/lib/security directory), then keytool and jarsigner can operate on the PKCS#11 token by specifying these options: o -keystore NONE o -storetype PKCS11 For example, this command lists the contents of the configured PKCS#11 token: jarsigner -keystore NONE -storetype PKCS11 -list -storetype storetype Specifies the type of keystore to be instantiated. The default key‐ store type is the one that is specified as the value of the "key‐ store.type" property in the security properties file, which is returned by the static getDefaultType method in java.security.Key‐ Store. The PIN for a PCKS#11 token can also be specified using the -storepass option. If none has been specified, keytool and jar‐ signer will prompt for the token PIN. If the token has a protected authentication path (such as a dedicated PIN-pad or a biometric reader), then the -protected option must be specified and no pass‐ word options can be specified. -storepass[:env | :file] argument Specifies the password which is required to access the keystore. This is only needed when signing (not verifying) a JAR file. In that case, if a -storepass option is not provided at the command line, the user is prompted for the password. If the modifier env or file is not specified, then the password has the value argument. Otherwise, the password is retrieved as fol‐ lows: o env: Retrieve the password from the environment variable named argument o file: Retrieve the password from the file named argument Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure sys‐ tem. -keypass[:env | :file] argument Specifies the password used to protect the private key of the key‐ store entry addressed by the alias specified on the command line. The password is required when using jarsigner to sign a JAR file. If no password is provided on the command line, and the required password is different from the store password, the user is prompted for it. If the modifier env or file is not specified, then the password has the value argument. Otherwise, the password is retrieved as fol‐ lows: o env: Retrieve the password from the environment variable named argument o file: Retrieve the password from the file named argument Note: The password shouldn't be specified on the command line or in a script unless it is for testing purposes, or you are on a secure sys‐ tem. -sigfile file Specifies the base file name to be used for the generated .SF and .DSA files. For example, if file is "DUKESIGN", the generated .SF and .DSA files will be named "DUKESIGN.SF" and "DUKESIGN.DSA", and will be placed in the "META-INF" directory of the signed JAR file. The characters in file must come from the set "a-zA-Z0-9_-". That is, only letters, numbers, underscore, and hyphen characters are allowed. Note: All lowercase characters will be converted to upper‐ case for the .SF and .DSA file names. If no -sigfile option appears on the command line, the base file name for the .SF and .DSA files will be the first 8 characters of the alias name specified on the command line, all converted to upper case. If the alias name has fewer than 8 characters, the full alias name is used. If the alias name contains any characters that are not legal in a signature file name, each such character is con‐ verted to an underscore ("_") character in forming the file name. -sigalg algorithm Specifies the name of the signature algorithm to use to sign the JAR file. See Appendix A @ http://docs.oracle.com/javase/7/docs/technotes/guides/secu‐ rity/crypto/CryptoSpec.html#AppA of the Java Cryptography Architec‐ ture for a list of standard signature algorithm names. This algo‐ rithm must be compatible with the private key used to sign the JAR file. If this option is not specified, SHA1withDSA, SHA256withRSA, or SHA256withECDSA will be used depending on the type of private key. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must spec‐ ify one with the -providerClass option, otherwise the command will not succeed. -digestalg algorithm Specifies the name of the message digest algorithm to use when digesting the entries of a jar file. See Appendix A @ http://docs.oracle.com/javase/7/docs/technotes/guides/secu‐ rity/crypto/CryptoSpec.html#AppA of the Java Cryptography Architec‐ ture for a list of standard message digest algorithm names. If this option is not specified, SHA256 will be used. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the -providerClass option, otherwise the command will not succeed. -signedjar file Specifies the name to be used for the signed JAR file. If no name is specified on the command line, the name used is the same as the input JAR file name (the name of the JAR file to be signed); in other words, that file is overwritten with the signed JAR file. -verify If this appears on the command line, the specified JAR file will be verified, not signed. If the verification is successful, "jar veri‐ fied" will be displayed. If you try to verify an unsigned JAR file, or a JAR file signed with an unsupported algorithm (e.g., RSA when you don't have an RSA provider installed), the following is dis‐ played: "jar is unsigned. (signatures missing or not parsable)" It is possible to verify JAR files signed using either jarsigner or the JDK 1.1 javakey tool, or both. For further information on verification, see JAR File Verification. -certs If this appears on the command line, along with the -verify and -verbose options, the output includes certificate information for each signer of the JAR file. This information includes o the name of the type of certificate (stored in the .DSA file) that certifies the signer's public key o if the certificate is an X.509 certificate (more specifically, an instance of java.security.cert.X509Certificate): the distin‐ guished name of the signer The keystore is also examined. If no keystore value is specified on the command line, the default keystore file (if any) will be checked. If the public key certificate for a signer matches an entry in the keystore, then the following information will also be displayed: o in parentheses, the alias name for the keystore entry for that signer. If the signer actually comes from a JDK 1.1 identity database instead of from a keystore, the alias name will appear in brackets instead of parentheses. -certchain file Specifies the certificate chain to be used, if the certificate chain associated with the private key of the keystore entry, addressed by the alias specified on the command line, is not com‐ plete. This may happen if the keystore is located on a hardware token where there is not enough capacity to hold a complete cer‐ tificate chain. The file can be a sequence of X.509 certificates concatenated together, or a single PKCS#7 formatted data block, either in binary encoding format or in printable encoding format (also known as BASE64 encoding) as defined by the Internet RFC 1421 standard. -verbose If this appears on the command line, it indicates "verbose" mode, which causes jarsigner to output extra information as to the progress of the JAR signing or verification. -internalsf In the past, the .DSA (signature block) file generated when a JAR file was signed used to include a complete encoded copy of the .SF file (signature file) also generated. This behavior has been changed. To reduce the overall size of the output JAR file, the .DSA file by default doesn't contain a copy of the .SF file any‐ more. But if -internalsf appears on the command line, the old behavior is utilized. This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization. -sectionsonly If this appears on the command line, the .SF file (signature file) generated when a JAR file is signed does not include a header con‐ taining a hash of the whole manifest file. It just contains infor‐ mation and hashes related to each individual source file included in the JAR file, as described in The Signature (.SF) File . By default, this header is added, as an optimization. When the header is present, then whenever the JAR file is verified, the ver‐ ification can first check to see whether or not the hash in the header indeed matches the hash of the whole manifest file. If so, verification proceeds to the next step. If not, it is necessary to do a less optimized verification that the hash in each source file information section in the .SF file equals the hash of its corre‐ sponding section in the manifest file. For further information, see JAR File Verification. This option is mainly useful for testing; in practice, it should not be used, since doing so eliminates a useful optimization. -protected Either true or false. This value should be specified as true if a password must be given via a protected authentication path such as a dedicated PIN reader. -providerClass provider-class-name Used to specify the name of cryptographic service provider's master class file when the service provider is not listed in the security properties file, java.security. Used in conjunction with the -providerArg ConfigFilePath option, keytool and jarsigner will install the provider dynamically (where ConfigFilePath is the path to the token configuration file). Here's an example of a command to list a PKCS#11 keystore when the Sun PKCS#11 provider has not been configured in the security properties file. jarsigner -keystore NONE -storetype PKCS11 \ -providerClass sun.security.pkcs11.SunPKCS11 \ -providerArg /foo/bar/token.config \ -list -providerName providerName If more than one provider has been configured in the java.security security properties file, you can use the -providerName option to target a specific provider instance. The argument to this option is the name of the provider. For the Sun PKCS#11 provider, providerName is of the form SunPKCS11-TokenName, where TokenName is the name suffix that the provider instance has been configured with, as detailed in the con‐ figuration attributes table @ http://docs.oracle.com/javase/7/docs/technotes/guides/secu‐ rity/p11guide.html#ATTRS. For example, the following command lists the contents of the PKCS#11 keystore provider instance with name suffix SmartCard: jarsigner -keystore NONE -storetype PKCS11 \ -providerName SunPKCS11-SmartCard \ -list -Jjavaoption Passes through the specified javaoption string directly to the Java interpreter. (jarsigner is actually a "wrapper" around the inter‐ preter.) This option should not contain any spaces. It is useful for adjusting the execution environment or memory usage. For a list of possible interpreter options, type java -h or java -X at the command line. -tsa url If "-tsa http://example.tsa.url" appears on the command line when signing a JAR file then a timestamp is generated for the signature. The URL, http://example.tsa.url, identifies the location of the Time Stamping Authority (TSA). It overrides any URL found via the -tsacert option. The -tsa option does not require the TSA's public key certificate to be present in the keystore. To generate the timestamp, jarsigner communicates with the TSA using the Time-Stamp Protocol (TSP) defined in RFC 3161 @ http://www.ietf.org/rfc/rfc3161.txt. If successful, the timestamp token returned by the TSA is stored along with the signature in the signature block file. -tsacert alias If "-tsacert alias" appears on the command line when signing a JAR file then a timestamp is generated for the signature. The alias identifies the TSA's public key certificate in the keystore that is currently in effect. The entry's certificate is examined for a Sub‐ ject Information Access extension that contains a URL identifying the location of the TSA. The TSA's public key certificate must be present in the keystore when using -tsacert. -altsigner class Specifies that an alternative signing mechanism be used. The fully-qualified class name identifies a class file that extends the com.sun.jarsigner.ContentSigner abstract class. The path to this class file is defined by the -altsignerpath option. If the -alt‐ signer option is used, jarsigner uses the signing mechanism pro‐ vided by the specified class. Otherwise, jarsigner uses its default signing mechanism. For example, to use the signing mechanism provided by a class named com.sun.sun.jarsigner.AuthSigner, use the jarsigner option "-alt‐ signer com.sun.jarsigner.AuthSigner" -altsignerpath classpathlist Specifies the path to the class file (the class file name is speci‐ fied with the -altsigner option described above) and any JAR files it depends on. If the class file is in a JAR file, then this speci‐ fies the path to that JAR file, as shown in the example below. An absolute path or a path relative to the current directory may be specified. If classpathlist contains multiple paths or JAR files, they should be separated with a colon (:) on Solaris and a semi-colon (;) on Windows. This option is not necessary if the class is already in the search path. Example of specifying the path to a jar file that contains the class file: -altsignerpath /home/user/lib/authsigner.jar Note that the JAR file name is included. Example of specifying the path to the jar file that contains the class file: -altsignerpath /home/user/classes/com/sun/tools/jarsigner/ Note that the JAR file name is omitted. -strict During the signing or verifying process, some warning messages may be shown. If this option appears on the command line, the exit code of the tool will reflect the warning messages that are found. Read the "WARNINGS" section for details. -verbose:sub-options For the verifying process, the -verbose option takes sub-options to determine how much information will be shown. If -certs is also specified, the default mode (or sub-option all) displays each entry as it is being processed and following that, the certificate infor‐ mation for each signer of the JAR file. If -certs and the -ver‐ bose:grouped sub-option are specified, entries with the same signer info are grouped and displayed together along with their certifi‐ cate information. If -certs and the -verbose:summary sub-option are specified, then entries with the same signer info are grouped and displayed together along with their certificate information but details about each entry are summarized and displayed as "one entry (and more)". See the examples section for more information. EXAMPLES Signing a JAR File Suppose you have a JAR file named "bundle.jar" and you'd like to sign it using the private key of the user whose keystore alias is "jane" in the keystore named "mystore" in the "working" directory. You can use the fol‐ lowing to sign the JAR file and name the signed JAR file "sbundle.jar": jarsigner -keystore /working/mystore -storepass <keystore password> -keypass <private key password> -signedjar sbundle.jar bundle.jar jane Note that there is no -sigfile specified in the command above, so the generated .SF and .DSA files to be placed in the signed JAR file will have default names based on the alias name. That is, they will be named JANE.SF and JANE.DSA. If you want to be prompted for the store password and the private key password, you could shorten the above command to jarsigner -keystore /working/mystore -signedjar sbundle.jar bundle.jar jane If the keystore to be used is the default keystore (the one named ".key‐ store" in your home directory), you don't need to specify a keystore, as in: jarsigner -signedjar sbundle.jar bundle.jar jane Finally, if you want the signed JAR file to simply overwrite the input JAR file (bundle.jar), you don't need to specify a -signedjar option: jarsigner bundle.jar jane Verifying a Signed JAR File To verify a signed JAR file, that is, to verify that the signature is valid and the JAR file has not been tampered with, use a command such as the following: jarsigner -verify sbundle.jar If the verification is successful, jar verified. is displayed. Otherwise, an error message appears. You can get more information if you use the -verbose option. A sample use of jarsigner with the -verbose option is shown below, along with sample output: jarsigner -verify -verbose sbundle.jar 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx.class smk 849 Fri Sep 26 16:12:46 PDT 1997 test.class s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore jar verified. Verification with Certificate Information If you specify the -certs option when verifying, along with the -verify and -verbose options, the output includes certificate information for each signer of the JAR file, including the certificate type, the signer distinguished name information (if and only if it's an X.509 certifi‐ cate), and, in parentheses, the keystore alias for the signer if the pub‐ lic key certificate in the JAR file matches that in a keystore entry. For example, jarsigner -keystore /working/mystore -verify -verbose -certs myTest.jar 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA 208 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.SF 1087 Fri Sep 26 16:23:30 PDT 1997 META-INF/JAVATEST.DSA smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst.class X.509, CN=Test Group, OU=Java Software, O=Sun Microsystems, L=CUP, S=CA, C=US (javatest) X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane) s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore jar verified. If the certificate for a signer is not an X.509 certificate, there is no distinguished name information. In that case, just the certificate type and the alias are shown. For example, if the certificate is a PGP cer‐ tificate, and the alias is "bob", you'd get PGP, (bob) Verification of a JAR File that Includes Identity Database Signers If a JAR file has been signed using the JDK 1.1 javakey tool, and thus the signer is an alias in an identity database, the verification output includes an "i" symbol. If the JAR file has been signed by both an alias in an identity database and an alias in a keystore, both "k" and "i" appear. When the -certs option is used, any identity database aliases are shown in square brackets rather than the parentheses used for keystore aliases. For example: jarsigner -keystore /working/mystore -verify -verbose -certs writeFile.jar 198 Fri Sep 26 16:14:06 PDT 1997 META-INF/MANIFEST.MF 199 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.SF 1013 Fri Sep 26 16:22:10 PDT 1997 META-INF/JANE.DSA 199 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.SF 1013 Fri Sep 27 12:22:30 PDT 1997 META-INF/DUKE.DSA smki 2752 Fri Sep 26 16:12:30 PDT 1997 writeFile.html X.509, CN=Jane Smith, OU=Java Software, O=Sun, L=cup, S=ca, C=us (jane) X.509, CN=Duke, OU=Java Software, O=Sun, L=cup, S=ca, C=us [duke] s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore i = at least one certificate was found in identity scope jar verified. Note that the alias "duke" is in brackets to denote that it is an iden‐ tity database alias, not a keystore alias. WARNINGS During the signing/verifying process, jarsigner may display various warn‐ ings. These warning codes are defined as follows: hasExpiringCert 2 This jar contains entries whose signer certificate will expire within six months hasExpiredCert 4 This jar contains entries whose signer certificate has expired. notYetValidCert 4 This jar contains entries whose signer certificate is not yet valid. chainNotValidated 4 This jar contains entries whose certificate chain cannot be correctly validated. badKeyUsage 8 This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing. badExtendedKeyUsage 8 This jar contains entries whose signer certificate's ExtendedKeyUsage extension doesn't allow code signing. badNetscapeCertType 8 This jar contains entries whose signer certificate's NetscapeCertType extension doesn't allow code signing. hasUnsignedEntry 16 This jar contains unsigned entries which have not been integrity-checked. notSignedByAlias 32 This jar contains signed entries which are not signed by the specified alias(es) aliasNotInStore 32 This jar contains signed entries that are not signed by alias in this keystore When the -strict option is provided, an OR-value of warnings detected will be returned as the exit code of the tool. For example, if a certifi‐ cate used to sign an entry is expired and has a keyUsage extension that does not allow it to sign a file, an exit code 12 (=4+8) will be returned. Note: Exit codes are reused because only 0-255 is legal for Unix. In any case, if the signing/verifying process fails, the following exit code will be returned: failure 1 Compatibility with JDK 1.1 The keytool and jarsigner tools completely replace the javakey tool pro‐ vided in JDK 1.1. These new tools provide more features than javakey, including the ability to protect the keystore and private keys with pass‐ words, and the ability to verify signatures in addition to generating them. The new keystore architecture replaces the identity database that javakey created and managed. There is no backwards compatibility between the key‐ store format and the database format used by javakey in 1.1. However, o It is possible to import the information from an identity database into a keystore, via the keytool -identitydb command. o jarsigner can sign JAR files also previously signed using javakey. o jarsigner can verify JAR files signed using javakey. Thus, it recog‐ nizes and can work with signer aliases that are from a JDK 1.1 iden‐ tity database rather than a Java 2 SDK keystore. The following table explains how JAR files that were signed in JDK 1.1.x are treated in the Java 2 platform. JAR File Type Identity in 1.1 database Trusted Iden‐ Policy File Privileges Granted tity imported grants privi‐ into Java 2 leges to Platform key‐ Iden‐ store from tity/Alias 1.1 database (4) Signed JAR NO NO NO Default privileges granted to all code. Unsigned JAR NO NO NO Default privileges granted to all code. Signed JAR NO YES NO Default privileges granted to all code. Signed JAR YES/Untrusted NO NO Default privileges granted to all code. (3) Signed JAR YES/Untrusted NO YES Default privileges granted to all code. (1,3) Signed JAR NO YES YES Default privileges granted to all code plus privi‐ leges granted in policy file. Signed JAR YES/Trusted YES YES Default privileges granted to all code plus privi‐ leges granted in policy file. (2) Signed JAR YES/Trusted NO NO All privileges Signed JAR YES/Trusted YES NO All privileges (1) Signed JAR YES/Trusted NO YES All privileges (1) Notes: 1. If an identity/alias is mentioned in the policy file, it must be imported into the keystore for the policy file to have any effect on privileges granted. 2. The policy file/keystore combination has precedence over a trusted identity in the identity database. 3. Untrusted identities are ignored in the Java 2 platform. 4. Only trusted identities can be imported into Java 2 SDK keystores. SEE ALSO o jar(1) tool documentation o keytool(1) tool documentation o the Security @ http://docs.oracle.com/javase/tutorial/security/index.html trail of the Java Tutorial @ http://docs.oracle.com/javase/tutorial/index.html for examples of the use of the jarsigner tool 16 Mar 2012 jarsigner(1)


{% extends "registration/base.html" %} {% load socialaccount %} {% block script %} {% providers_media_js %} {% endblock %} {% block title %}Sign in{% endblock %} {% block header %}
What is hot issue this week? Hot issues, hot people and analysis for a
facebook group.
Sign up now, you can use funny functions.
Enter your username and password to sign in:
{% if form.errors %}Your username and password didn't match. Please try again.
{% endif %} {% if next %} {% if user.is_authenticated %}Your account doesn't have access to this page. To proceed, please login with an account that has access.
{% else %}Please login to see this page.
{% endif %} {% endif %} {% endblock %} {% block content-head-right %} {% endblock %} {% block content %} {% endblock %} {% block content-related %}If you don't have an account, you can sign up for one.


Description: InteGREAT is a central learning portal that
allows teachers to integrate web services for the classroom.
It also allows teachers to seamlessly contact parents, track
students’ attendance, and share course material with students
as well as with other teachers. Another feature of the app is
that once the app is open on every student's device, the teacher
has the ability to
switch the entire class from one tool to another.
Rationale:
- Teachers can easily incorporate multiple tools in remote learning
- Increases organization among both teachers and students
- Provides a centralized platform
Issue Targeted: Difficulties managing various learning softwares &
teacher-parent communication issues


Introduction
Hydraulic cone crusher is Kefid engaged in grinding industry program design, production, sales,service and other experience on the basis of the combination of modern industrial technology development,widely absorbed the United States, Germany and other advanced technology research and development ofefficient crusher. Can be widely used in metal and non-metallic mineral in the broken, crushing and ultra-finecrushing operations, Kefid is the mining machinery industry to replace the spring cone crusher a newgeneration of products.


Hey {{user}},
Welcome to FansUnite! Feel free to reply to this email with any questions or anyway that we can help you have an awesome experience. I read and reply to every message. Is there anything in particular I can help you with?
Best,
Darius
CEO & Co-Founder
darius@fansunite.com